Mongo复制选举,'成员数量' vs'投票成员'

时间:2014-04-30 18:02:26

标签: mongodb replication database-replication

要在复制选举中选出主要成员,大多数成员都需要可用。这是否意味着总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也支持读取操作会很好,但并非绝对必要。

1 个答案:

答案 0 :(得分:1)

多数标准是副本集中可用的投票数,而不是成员数。无投票权的成员不包括在计算中:

  

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

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

所以是的,你应该可以做到这一点,虽然mongodb建议反对它:

  

重要   不要改变投票数来控制哪些成员将成为主要成员。而是,修改优先级选项。只在特殊情况下改变投票数。例如,允许超过七名成员。

在图D中,E和F可以是仍然拥有完整数据集的非投票成员,可以查询以进行查询操作。

只要小学A,仲裁员和奴隶C是唯一的投票成员,你就应该没事。