亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MongoDB副本集問題

MongoDB副本集問題

慕斯709654 2018-08-20 11:26:21
假設有這樣一個場景,有一個MongoDB的副本集,由于故障導致只剩下兩個節點可用,而這兩個節點目前都是slave節點。其他的故障節點也無法再重新啟動,即無法重新加入到副本集中。Q:這種情況下是否因為這個副本集就無法使用了?
查看完整描述

2 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

這取決于你的副本集總的節點個數,副本集中可以相互聯系的節點數大于總節點數一半時,可以有新的primary節點被選取出來,副本集可以正常工作,如果可以相互聯系的節點小于等于總結點一半,所有節點都會變為secondary節點,此時副本集變為只讀狀態,所有寫操作失敗.

有這個現象的原因是mongodb的副本集不允許出現多個primary節點,在可以聯系的節點數小于等于總節點數一半時,若依然能夠選出primary,便有可能出現多個primary節點,導致整個副本集數據混亂,所有節點變為secondary,在故障節點恢復時副本集還可以正常運行.

如果遇到正常節點不足以選出primary,可以通過幾種途徑解決.

1) 若其他節點因數據損壞不能啟動,像你說的依然有兩個節點存活,可以停止一個節點,將硬盤數據導出至掛掉的節點,啟動即可.
2) 若其他節點因不可恢復原因導致不能啟動,你可以去掉replset選項將此節點作為單機服務啟動,若要恢復為副本集模式,
可以試一下將一個正常節點的local相關的數據文件刪除,重新以replset啟動,初始化自身之后使用rs.add()添加新節點,
線上沒有遇到過這種情況,如果實在沒辦法,你可以試一下.


查看完整回答
反對 回復 2018-08-26
  • 2 回答
  • 0 關注
  • 990 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號