《MongoDB 副本集的組成》要點(diǎn):
本文介紹了MongoDB 副本集的組成,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:非關(guān)系型數(shù)據(jù)庫
《MongoDB 副本集的組成》是否對(duì)您有啟發(fā),歡迎查看更多與《MongoDB 副本集的組成》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
同步
MongoDB的復(fù)制功能是使用操作日志oplog實(shí)現(xiàn)的,操作日志包含了主節(jié)點(diǎn)的每一次寫操作.
這樣,每個(gè)成員都可以作為同步源供給其他成員使用
備份節(jié)點(diǎn)從當(dāng)前使用的同步源中獲取需要執(zhí)行的操作,然后在自己的數(shù)據(jù)集上執(zhí)行這些操作,最后再將這些操作寫入自己的oplog
初始化同步
副本集中的成員啟動(dòng)之后,就會(huì)堅(jiān)持自身狀態(tài),確定是否可以從某個(gè)成員哪里進(jìn)行同步
如果不行的話,它會(huì)嘗試從副本的另一個(gè)成員那里進(jìn)行完整的數(shù)據(jù)復(fù)制.這個(gè)過程就是初始化同步(initial syncing)
處理陳舊數(shù)據(jù)
如果備份節(jié)點(diǎn)遠(yuǎn)遠(yuǎn)落后于同步源當(dāng)前的操作,那么這個(gè)備份節(jié)點(diǎn)就是陳舊的(sale).
當(dāng)一個(gè)備份節(jié)點(diǎn)陳舊之后,它會(huì)查看副本集中的其他成員,如果某個(gè)成員的oplog足夠詳盡,可以用于處理那些落下的操作,就從這個(gè)成員處進(jìn)行同步
如果任何一個(gè)成員的oplog都沒有參考價(jià)值,那么這個(gè)成員的復(fù)制操作就會(huì)中止,這個(gè)成員需要重新進(jìn)行完全同步(或者從最近的備份中恢復(fù))
為了避免陳舊備份節(jié)點(diǎn)的出現(xiàn),讓主節(jié)點(diǎn)使用比較大的oplog保存足夠多的操作日志是很重要的
心跳
每個(gè)成員每隔兩秒鐘就會(huì)向其他成員發(fā)送一個(gè)心跳請(qǐng)求(heartbeat request)
心跳請(qǐng)求的信息量非常小,用于檢查每個(gè)成員的狀態(tài)
STARTUP
成員剛啟動(dòng)時(shí)處于這個(gè)狀態(tài).在這個(gè)狀態(tài)下,MongoDB會(huì)嘗試加載成員的副本集配置.配置加載成功之后,就會(huì)進(jìn)入STARTUP2狀態(tài)
STARTUP2
這個(gè)初始化同步過程都處于這個(gè)狀態(tài),但是如果是在普通成員上,這個(gè)狀態(tài)只會(huì)持續(xù)幾秒鐘.在這個(gè)狀態(tài)下,MongoDB會(huì)創(chuàng)建幾個(gè)線程,
用于處理復(fù)制和選舉,然后就會(huì)切換到RECOVERING狀態(tài)
RECOVERING
這個(gè)狀態(tài)表明成員運(yùn)作正常,但是暫時(shí)還不能處理讀取請(qǐng)求.如果有成員處于這個(gè)狀態(tài),可能會(huì)造成輕微的系統(tǒng)過載,以后可能會(huì)經(jīng)常見到
啟動(dòng)時(shí),成員需要做一些檢查以確保自己處于有效狀態(tài),之后才可以處理讀取請(qǐng)求.
ARBITER
在正常的操作中,仲裁者應(yīng)該始終處于ARBITER狀態(tài)
系統(tǒng)出現(xiàn)問題時(shí)會(huì)處于下面這些狀態(tài)
DOWN
如果一個(gè)正常運(yùn)行的成員變得不可達(dá),它就處于DOWN狀態(tài),如果網(wǎng)絡(luò)有問題,狀態(tài)可能是DOWN狀態(tài)
UNKNOWN
如果一個(gè)成員無法到達(dá)其他任何成員,其他成員就無法知道它處于什么狀態(tài),會(huì)將其報(bào)告為UNKNOWN狀態(tài)
通常,這表明這個(gè)未知狀態(tài)的成員掛掉了,或者是兩個(gè)成員之間存在網(wǎng)絡(luò)訪問問題
REMOVED
當(dāng)成員被移出副本集時(shí),它就處于這個(gè)狀態(tài).
如果被移出的成員又被重新添加到副本集中,它就會(huì)回到“正常”狀態(tài)
ROLLBACK
如果成員正在進(jìn)行數(shù)據(jù)回滾,它就處于ROLLBACK狀態(tài)
回滾過程結(jié)束時(shí),服務(wù)器會(huì)轉(zhuǎn)換為RECOVERING狀態(tài),然后成為備份節(jié)點(diǎn)
FATAL
如果一個(gè)成員發(fā)生了不可挽回的錯(cuò)誤,也不再嘗試恢復(fù)正常的話,它就處于FATAL狀態(tài)
使用"replSet FATAL"關(guān)鍵詞在日志上執(zhí)行g(shù)rep
選舉
回滾
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10242.html