共计 1365 个字符,预计需要花费 4 分钟才能阅读完成。
每日一句
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)数。指定较高的值可使成员更有资格成为次要成员,更低的值可使成员更不符合条件。
默认状况下,优先级的值是 1
myrs:SECONDARY> rs.conf()
{
"_id" : "myrs",
"version" : 221242,
"term" : 4,
"members" : [
{
"_id" : 0,
"host" : "192.168.20.131:27017",
"priority" : 1,
},
{
"_id" : 1,
"host" : "localhost.localdomain:27018",
"priority" : 1,
},
{
"_id" : 2,
"host" : "192.168.20.131:27019",
"priority" : 1,
},
{
"_id" : 3,
"host" : "192.168.20.131:27020",
"priority" : 1,
},
{
"_id" : 4,
"host" : "192.168.20.131:27030",
"priority" : 0,
}
],
...
}
myrs:SECONDARY>
能够看出,主节点和正本节点的优先级各为 1,即,默认能够认为都曾经有了一票。但选举节点,优先级是 0,(要留神是,官网说了,选举节点的优先级必须是 0,不能是别的值。即不具备选举权,但具备投票权)
批改优先级
通过上面的步骤能够晋升从节点的优先级:
# 先将配置导入 cfg 变量
myrs:SECONDARY> cfg=rs.conf()
# 而后批改值(ID 号默认从 0 开始):myrs:SECONDARY> cfg.members[1].priority=2
# 从新加载配置
myrs:SECONDARY> rs.reconfig(cfg)
美文佳句
一杯清水能滋润一寸土地,一缕阳光能驱散一丝暗影。勿以善小而不为,在日常生活中,有时候做一件坏事,仅仅是举手之劳。要是每个人都能像雷锋那样,把做好事当成一种盲目的口头,把关怀别人作为一种任务和责任,聚沙成塔,千里之行; 始于足下,咱们的生存肯定会更加美妙,咱们的社会肯定会更加谐和。
你好,我是 yltrcc,日常分享技术点滴,欢送关注我的公众号:ylcoder
正文完