副本集要點

wongchaofan發表於2024-07-07

oplog 中的每個操作都是冪等的。也就是說,無論對目標資料集應用一次還是多次,oplog 操作都會產生相同的結果。

當您第一次啟動副本整合員時,如果您未指定 oplog 大小,MongoDB 將建立預設大小的 oplog。

預設 oplog 大小取決於儲存引擎:

儲存引擎
預設 Oplog 大小
WiredTiger 儲存引擎
5% 的可用磁碟空間
記憶體儲存引擎
5% 的實體記憶體

oplog要點

oplog大小

oplog保留期限

oplog時間戳:主副斷開,時間戳內可繼續同步

副本集資料同步

MongoDB 使用兩種形式的資料同步:初始同步,用完整資料集填充新成員;複製,將正在進行的更改應用於整個資料集。

您可以使用引數指定首選的初始同步源 initialSyncSourceReadPreference。此引數只能在啟動時指定mongod

初始同步完成時,成員將從 過渡 STARTUP2SECONDARY

如果執行初始同步的輔助伺服器在同步過程中遇到非瞬態 (即永續性)網路錯誤,則輔助伺服器將從頭重新啟動初始同步過程。

如果由於瞬態(即臨時)網路錯誤、集合丟失或集合重新命名而中斷,則執行初始同步的輔助伺服器可以嘗試恢復同步過程。

副本集高可用性

副本集使用選舉來支援 高可用性

副本集選舉
當主節點不可用時就會發生選舉,並且副本整合員會自主選擇新的主節點。
副本集故障轉移期間的回滾
當成員在故障轉移後重新加入複製副本集時,回滾將恢復對以前主成員的寫入操作。
當成員在故障轉移後重新加入其副本集時,回滾會還原前主節點上的寫入操作。僅當主節點接受了在主節點關閉之前輔助節點成功複製的寫入操作時,才需要回滾 。當主節點作為輔助節點重新加入副本集時,它會還原或“回滾”其寫入操作以保持與其他成員的資料庫一致性。
成員選舉

當副本集擁有穩定的主節點後,選舉演算法將“盡最大努力”讓具有最高 priority可用優先順序的輔助節點發起選舉。成員優先順序會影響選舉的時間和結果;具有較高優先順序的輔助節點比具有較低優先順序的輔助節點相對較早地發起選舉,並且獲勝的可能性也更大。但是,即使有更高優先順序的輔助節點可用,較低優先順序的例項也可能會在短時間內被選為主節點。副本整合員將繼續發起選舉,直到可用的最高優先順序成員成為主節點。

優先順序為 的成員0無法成為主成員,也不會參與選舉。

寫入副本集關注

副本集的寫入關注度描述了在操作成功返回之前必須確認寫入操作的資料承載成員(即主節點和次節點,但不是仲裁節點)的數量。成員只有在成功接收並應用寫入後才能確認寫入操作。

對於副本集:

  • 寫入關注w: "majority"需要確認寫入操作已持久提交給 計算得出的大多數資料承載投票成員。對於大多數副本集配置,w: "majority"預設的寫入關注

  • 寫入關注w: 1只需要主副本整合員的確認,然後返回寫入關注確認。

  • 數值大於的寫入關注1需要主節點和儘可能多的輔助節點確認才能達到指定值。輔助節點無需是投票成員即可達到寫入關注閾值。指定的寫入關注值不能大於副本集中承載資料的成員總數。

以下操作包括writeConcern方法選項insertOne()。操作指定:-"majority"寫入關注,以及 - 5 秒超時。

寫入wtimeout關注引數確保操作不會無限期阻塞。

db.products.insertOne(
   { item: "envelopes", qty : 100, type: "Clasp" },
   { writeConcern: { w: "majority" , wtimeout: 5000 } }
)

相關文章