每日一句
Life is like a shower. One wrong turn and you're in hot water.
生活就像淋浴,方向轉(zhuǎn)錯(cuò),水深火熱。
概述
MongoDB在副本集中,會(huì)自動(dòng)進(jìn)行主節(jié)點(diǎn)的選舉,主節(jié)點(diǎn)選舉的觸發(fā)條件:
- 主節(jié)點(diǎn)故障
- 主節(jié)點(diǎn)網(wǎng)絡(luò)不可達(dá)(默認(rèn)心跳信息為10秒)
- 人工干預(yù)(
rs.stepDown(600))
選舉規(guī)則
一旦觸發(fā)選舉,就要根據(jù)一定規(guī)則來(lái)選主節(jié)點(diǎn)。
選舉規(guī)則是根據(jù)票數(shù)來(lái)決定:
- 票數(shù)最高,且獲得了“大多數(shù)”成員的投票支持的節(jié)點(diǎn)獲勝?!按蠖鄶?shù)”:假設(shè)復(fù)制集內(nèi)投票成員數(shù)量為N,則大多數(shù)為 N/2 + 1。例如:3個(gè)投票成員,則大多數(shù)的值是2。當(dāng)復(fù)制集內(nèi)存活成員數(shù)量不足大多數(shù)時(shí),整個(gè)復(fù)制集將無(wú)法選舉出Primary,復(fù)制集將無(wú)法提供寫(xiě)服務(wù),處于只讀狀態(tài)。
- 若 票數(shù)相同,且都獲得了“大多數(shù)”成員的投票支持的,數(shù)據(jù)新的節(jié)點(diǎn)獲勝。數(shù)據(jù)的新舊是通過(guò)操作日志
oplog來(lái)對(duì)比的。
優(yōu)先級(jí)
在獲得票數(shù)的時(shí)候,優(yōu)先級(jí)(priority)參數(shù)影響重大。
可以通過(guò)設(shè)置優(yōu)先級(jí)(priority)來(lái)設(shè)置額外票數(shù)。優(yōu)先級(jí)即權(quán)重,取值為0-1000,相當(dāng)于可額外增加0-1000的票數(shù),優(yōu)先級(jí)的值越大,就越可能獲得多數(shù)成員的投票(votes)數(shù)。指定較高的值可使成員更有資格成為主要成員,更低的值可使成員更不符合條件。
默認(rèn)情況下,優(yōu)先級(jí)的值是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>
可以看出,主節(jié)點(diǎn)和副本節(jié)點(diǎn)的優(yōu)先級(jí)各為1,即,默認(rèn)可以認(rèn)為都已經(jīng)有了一票。但選舉節(jié)點(diǎn),優(yōu)先級(jí)是0,(要注意是,官方說(shuō)了,選舉節(jié)點(diǎn)的優(yōu)先級(jí)必須是0,不能是別的值。即不具備選舉權(quán),但具有投票權(quán))
修改優(yōu)先級(jí)
通過(guò)下面的步驟可以提升從節(jié)點(diǎn)的優(yōu)先級(jí):
# 先將配置導(dǎo)入cfg變量
myrs:SECONDARY> cfg=rs.conf()
# 然后修改值(ID號(hào)默認(rèn)從0開(kāi)始):
myrs:SECONDARY> cfg.members[1].priority=2
# 重新加載配置
myrs:SECONDARY> rs.reconfig(cfg)
美文佳句
一杯清水能滋潤(rùn)一寸土地,一縷陽(yáng)光能驅(qū)散一絲陰影。勿以善小而不為,在日常生活中,有時(shí)候做一件好事,僅僅是舉手之勞。要是每個(gè)人都能像雷鋒那樣,把做好事當(dāng)成一種自覺(jué)的行動(dòng),把關(guān)心他人作為一種義務(wù)和責(zé)任,聚沙成塔,積少成多,我們的生活一定會(huì)更加美好,我們的社會(huì)一定會(huì)更加和諧。
你好,我是yltrcc,日常分享技術(shù)點(diǎn)滴,歡迎關(guān)注我