【问题标题】:Mongo replication elections, number of 'members' vs 'voting members'Mongo 复制选举,“成员”与“投票成员”的数量
【发布时间】:2014-04-30 18:02:25
【问题描述】:

要在复制选举中选举主节点,需要大多数成员可用。这是否意味着大多数 members(包括投票=0、隐藏、延迟等)或大多数 voting members

我需要的是这样的系统

                     possible 
                 netw. partition
 _______    _______    |    _______    _______     _______    _______         
|   A   |  |       |   |   |   C   |  |   D   |   |   E   |  |   F   |   
|Primary|  |Arbitr.|   |   |Slave  |  |Backup |   |Backup |  |Backup |    
|_______|  |_______|   |   |_______|  |_______|   |_______|  |_______|

即使在 A+Arbit 之间可能存在网络分区的情况下,我也希望 A 成为主控。和其余的集合。这可以实现吗?喜欢将 D、E、F 设置为 votes=0 或将它们设置为 hidden 等?

如果 D、E 和 F 也支持读取操作会很好,但不是绝对必要的。

【问题讨论】:

  • 一件事,你还需要在分区的一侧占多数
  • 本质上我需要大多数人只在左边(A+Arb),从不在右边(CDEF)......
  • 我相信投票号码的数量会保持不变,我必须测试因为我总是忘记(这不是一件容易记住的事情)但你实际上可以有一个两个成员设置一个成员下来并且另一个主要条件是您已使一个成员无法投票

标签: mongodb replication database-replication


【解决方案1】:

多数标准是针对副本集中可用的投票数量,而不是成员数量。非投票成员不计入计算:

一个副本集成员不能成为主要成员,除非它可以连接到副本集中的大多数成员。就选举而言,多数是指总票数,而不是成员总数。

来自http://docs.mongodb.org/manual/core/replica-set-elections/

所以是的,尽管 mongodb 确实建议不要这样做,但你应该能够做到这一点:

重要 不要更改投票数来控制哪些成员将成为主要成员。相反,修改优先级选项。仅在特殊情况下更改票数。例如,允许超过 7 个成员。

在您的图表 D、E 和 F 中,可以是仍然拥有完整数据集的无投票权成员,并且可以针对查询操作进行查询。

只要 Primary A、Arbiter 和 Slave C 是唯一的投票成员,你应该没问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    相关资源
    最近更新 更多