我目前有一个mongo复制集,由1个主服务器和2个从服务器组成,由只读应用程序使用。我添加了需要访问相同数据的第二个只读应用程序。我/我正在考虑为这两个应用程序使用相同的RS,但是想知道是否有一种方法可以使用Mongo创建特定类型的配置,其工作原理如下:
1 x primary,用于处理所有写入,但不会被应用程序视为replicaset的一部分,然后是2组从primary复制的只读辅助副本。每组辅助重复从主服务器写入。从概念上讲,类似于:
/----> RS1: |Secondary1|Secondary2|..|SecondaryN| <--- App1
PRIMARY|=>
\----> RS2: |Secondary1|Secondary2|..|SecondaryN| <--- App2
这种配置是否可行?对于这个用例,我可以考虑哪些类似的架构?
提前致谢。
布雷特
答案 0 :(得分:0)
我遇到了一种使用mongo工具实现此目的的方法:
from
并使用host
的每个RS查看the manual 可以在#2的RS中设置身份验证,只允许应用程序对数据进行读取访问。
我还没有对此进行测试,但据我所知,这种方法应该适用于我的目标 - 这种方法中有什么我忽略的吗?
修改强>
在尝试使用此方法时,我在尝试使用mongooplog并在目标上进行身份验证时遇到了问题。除此之外,mongooplog不能满足源/ --from
rs的身份验证,因此我编写了一个工具来满足这一需求:
https://github.com/brettcave/mongo-oplogreplay
它支持源和目标以及replicaset目标的身份验证。