Replication
在 MongoDB Replication 中自動客戶端故障轉移期間讀/寫操作會發生什麼
我們已經為MongoDB設置了一個 3 節點複製集配置。我想知道在主切換期間讀/寫操作會發生什麼。更明確地說,客戶端向主節點發出的讀/寫操作很少。還啟動了主要的切換。
- 這些讀/寫操作會發生什麼?
- MongoDB 是否確保在 Primary 退出和啟動選舉過程之前處理這些請求?
- 在選舉過程中,來自客戶端的新讀/寫請求會發生什麼?
- MongoDB 的本機 nodejs 驅動程序是否負責自動客戶端故障轉移?而且,它在切換過程中如何處理新的讀/寫請求?
a) 他們會明確地失敗。處理它是你的責任。如果異常/錯誤表明操作因通信故障而失敗,我傾向於在短暫的寬限期後重試操作。
b) 隱含的。發出降級命令後,有 10 秒的寬限期,在此期間不接受任何寫操作。在那段時間裡,主要的主要等待次要趕上(無論是否必要)。對於讀取操作:如果它們在寬限期內完成,一切都很好。否則,連接將被伺服器關閉,導致在空閒客戶端引發錯誤。
c) 驅動程序知道他們連接到一個副本集。如果主要步驟下降,司機會注意到。沒有主要 = 沒有寫操作。在沒有主節點時發出的任何寫操作都會失敗並顯示相應的消息。根據閱讀,這取決於您的閱讀偏好。
primary
在沒有主節點的情況下,優先級為 的讀取顯然會失敗,所有其他讀取優先級都會成功。我通常使用預設的讀取首選項發出我的請求,primary
當它由於缺少主而下降時,我重新發出具有讀取首選項的查詢secondaryPreferred
(在極少數情況下,主出現並且第一個輔助在處理原始時失敗錯誤)。d) 我不是節點專家,但節點驅動程序由 Inc 維護,因此可以安全地假設它可以辨識副本集並遵守上述標準。