每日一句
Life is like a shower. One wrong turn and you're in hot water. 生活就像淋浴,方向转错,水深火热。
概述
MongoDB在副本集中,会自动进行主节点的选举,主节点选举的触发条件:
- 主节点故障
- 主节点网络不可达(默认心跳信息为10秒)
- 人工干预(
rs.stepDown(600)
)
选举规则
一旦触发选举,就要根据一定规则来选主节点。
选举规则是根据票数来决定:
- 票数最高,且获得了“大多数”成员的投票支持的节点获胜。“大多数”:假设复制集内投票成员数量为N,则大多数为 N/2 + 1。例如:3个投票成员,则大多数的值是2。当复制集内存活成员数量不足大多数时,整个复制集将无法选举出Primary,复制集将无法提供写服务,处于只读状态。
- 若 票数相同,且都获得了“大多数”成员的投票支持的,数据新的节点获胜。数据的新旧是通过操作日志
oplog
来对比的。
优先级
在获得票数的时候,优先级(priority)参数影响重大。
可以通过设置优先级(priority)来设置额外票数。优先级即权重,取值为0-1000,相当于可额外增加0-1000的票数,优先级的值越大,就越可能获得多数成员的投票(votes)数。指定较高的值可使成员更有资格成为主要成员&