如何定义没有标记集的写入首选项?

时间:2014-11-21 08:50:09

标签: mongodb mongodb-query

考虑由5个成员组成的副本集:

  • R1,R2,R3,R4是复制品
  • A1是仲裁者

我想确保我的应用程序在复制期间处理写入首选项。 例如,使用writeConcern w:2我希望复制/写入发生在R1(当然是主要)和R3(辅助)上,但如果R3发生故障,复制过程可以使用任何其他辅助。

使用标记集来处理这种情况并不令人满意,如果R3发生故障,写入将失败。

我可以使用mongodb中有任何写入首选项吗?

注意:(R1,R2)在一个数据中心,(R3,R4)在另一个数据中心,A1在第三个数据中心。

感谢。 BR。

1 个答案:

答案 0 :(得分:0)

你可以做的是使用一种叫做“复制链”的东西。它基本上是这样的:

  1. 使用chaining allowed
  2. 创建(或重新配置)副本集
  3. 您使用replSetSyncFrom告诉R2和R4从R3复制。
  4. 完成!
  5. 执行这些步骤后,同步应如下所示:

    R1
     └── R3
          ├── R2
          └── R4 
    

    好处:如果R3失败,R2和R4将恢复为从R1同步。

    坏处:当R3再次启动时,你必须告诉R2和R4再次从R3同步。

    丑陋:当您重新启动R2或R4时,您必须告诉实例再次从R3同步。

    但是,此设置基本上可以为您提供所需的功能,而不会产生单点故障。