本文主要是介绍MongoDB主节点的选举原则,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
MongoDB在副本集中,会自动进行主节点的选举,主节点选举的触发条件:
- 主节点故障。
- 主节点网络不可达(默认心态信息为10秒)。
- 人工干预(rs.stepDown(600))。
一旦触发选举,就要根据一定规则来选择主节点。
选举规则是根据票数来决定谁获胜:
- 票数最高,且获得了“大多数”成员的投票支持的节点获胜。
“大多数”的定义为:假设复制集内投票成员时N,则大多数为N/2+1。例如:3个投票成员,则大多数的值是2。当复制集内存活成员数量不足大多数时,整个复制集将无法选举primary,复制集将无法提供写服务,处于只读状态。 - 若票数相同,且都获得了“大多数”成员的投票支持的,数据新的节点获胜。
数据的新旧是通过操作日志oplog来对比的。
在获得票数的时候,优先级(priority)参数影响重大。
可以通过设置优先级(priority)来设置额外票数。优先级即权重,取值为0-1000,相当于而我增加0-1000的票数,优先级的值越大,就越可能获得多数成员的投票(votes)数。指定较高的值可使成员更有资格成员主要成员,更低的值可使成员更不符合条件。
默认情况下,优先级的值是1
这篇关于MongoDB主节点的选举原则的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!