为什么MongoDB文档建议/坚持特定的副本集优先级配置

时间:2013-11-18 23:16:10

标签: mongodb database-replication

http://docs.mongodb.org/manual/tutorial/deploy-geographically-distributed-replica-set/

我特别好奇为什么他们一般希望非主要数据中心的副本成为选举的优先级0?如果一个数据中心出现故障,我希望能够故障转移到另一个数据中心的副本(其中一个)。该文档似乎坚持认为,与主服务器不同的数据中心中的辅助副本应优先级为0,因此在“主”数据中心发生故障时不符合主要状态。这是我可以忽视我的需求吗?

1 个答案:

答案 0 :(得分:1)

我认为你在这里忽略了这一点。如果您在主数据中心保留大多数标准配置,即使您将优先级设置为1,如果此数据中心已关闭,您将无法选择新的主数据。

让我们假设你有这样的配置:

  • 位置A:优先级为1的2名成员,仲裁者
  • 位置B:优先级为0的1名成员
  • 位置C:优先级为0的1个成员

场景:

  1. 位置A向下。
    • 即使您为数据中心B和C中的成员设置优先级为1,您也不会有多数人选择新的主要
  2. 位置B或C已关闭
    • rs按预期工作
  3. {A}和{B,C}之间的网络分区
    • rs按预期工作
  4. 数据中心A中的非仲裁者已关闭
      只要我们可以与B或C 通信,
    • rs就能正常工作
  5. Arbiter和数据中心的其他服务器已关闭
      只要我们能够与B和C沟通,
    • rs就能按预期工作
  6. 数据中心的两个非仲裁成员关闭,仲裁器启动,我们可以与B和C通信
    • 这是唯一有问题的案例。我们有三个投票成员,但没有一个成为主要成员
  7. 您检查它是否适用于较大的群集。