要在复制选举中选出主要成员,大多数成员都需要可用。这是否意味着总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也支持读取操作会很好,但并非绝对必要。
答案 0 :(得分:1)
多数标准是副本集中可用的投票数,而不是成员数。无投票权的成员不包括在计算中:
副本集成员不能成为主副本,除非它可以连接到副本集中的大多数成员。就选举而言,多数是指总票数,而不是成员总数。
来自http://docs.mongodb.org/manual/core/replica-set-elections/
所以是的,你应该可以做到这一点,虽然mongodb建议反对它:
重要 不要改变投票数来控制哪些成员将成为主要成员。而是,修改优先级选项。只在特殊情况下改变投票数。例如,允许超过七名成员。
在图D中,E和F可以是仍然拥有完整数据集的非投票成员,可以查询以进行查询操作。
只要小学A,仲裁员和奴隶C是唯一的投票成员,你就应该没事。