簡體   English   中英

MongoDB Oplog差異

[英]MongoDB Oplog Difference

從大小為 5 的 MongoDB 副本集開始,節點 A 到 E。A 是活動的主節點,並以多數寫入保證接收來自客戶端的寫入。 假設 A 收到 1、2、3、4。根據我目前的知識,對於副本集的 oplog,這是一個有效的 state,因為寫入至少已應用於大多數:

A 1 2 3 4
B 1 4
C 1 2
D 2 3
E 3 4

現在,A迷路了。

其余節點如何處理 oplogs 的差異,或者有什么東西阻止了這種情況?

當保證多數寫入時,這是否也意味着大多數節點已經趕上了主節點的 oplog,例如非保證寫入可以延遲到保證寫入處理完之后? 換句話說,oplog 的順序是否可以稍有不同,這對選舉有何影響?

非主節點尾隨主節點的 oplog。 這意味着每個非主節點都按照它們應用於主節點的順序處理寫入。 因此,這些是不可能的:

B 1 4
D 2 3
E 3 4

寫入不會根據它們的寫入問題單獨從主節點傳輸到非主節點。

寫入關注 W > 1 意味着,在主節點在本地提交寫入后,它等待 W-1 個其他節點通過將其 oplog position 傳達給主節點並讓 position 移過正在等待的寫入來確認寫入。 如果所需數量的節點尚未在配置的超時(如果有)中確認寫入,則會收到寫入關注超時錯誤。

為了讓任何節點確認 4,它們必須先前已處理寫入 1 到 3。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM