在2个Mongo副本集之间复制数据

时间:2014-04-17 13:14:10

标签: mongodb

我目前有一个mongo复制集,由1个主服务器和2个从服务器组成,由只读应用程序使用。我添加了需要访问相同数据的第二个只读应用程序。我/我正在考虑为这两个应用程序使用相同的RS,但是想知道是否有一种方法可以使用Mongo创建特定类型的配置,其工作原理如下:

1 x primary,用于处理所有写入,但不会被应用程序视为replicaset的一部分,然后是2组从primary复制的只读辅助副本。每组辅助重复从主服务器写入。从概念上讲,类似于:

          /----> RS1: |Secondary1|Secondary2|..|SecondaryN|   <--- App1
PRIMARY|=> 
          \----> RS2: |Secondary1|Secondary2|..|SecondaryN|   <--- App2

这种配置是否可行?对于这个用例,我可以考虑哪些类似的架构?

提前致谢。

布雷特

1 个答案:

答案 0 :(得分:0)

我遇到了一种使用mongo工具实现此目的的方法:

  1. 创建副本集以用作主副本。数据更新被写入此RS(由图中的&#34; PRIMARY&#34;表示)。不要在此主机上启用身份验证
  2. 使用相同的数据创建2个副本集(完全相互独立)
  3. 安排常规&#34; mongooplog&#34;使用#1作为from并使用host的每个RS查看the manual
  4. 可以在#2的RS中设置身份验证,只允许应用程序对数据进行读取访问。

    我还没有对此进行测试,但据我所知,这种方法应该适用于我的目标 - 这种方法中有什么我忽略的吗?

    修改

    在尝试使用此方法时,我在尝试使用mongooplog并在目标上进行身份验证时遇到了问题。除此之外,mongooplog不能满足源/ --from rs的身份验证,因此我编写了一个工具来满足这一需求:

    https://github.com/brettcave/mongo-oplogreplay

    它支持源和目标以及replicaset目标的身份验证。