簡體   English   中英

MongoDb復制和故障轉移

[英]MongoDb Replication and failover

我們有兩個服務器用於要復制和故障轉移的MongoDB數據庫。

情況1:

為了進行復制,我們將Server1設置為主服務器,將server2設置為輔助服務器...一切正常。

期望:當server1發生故障時,從屬服務器2不會自動成為主服務器。 因此,server2是否有可能自動成為主要服務器。

情況2:我需要3台強制性的服務器來進行MongoDB復制,以便當server1發生故障時,server2將自動成為主服務器,而server3將保持輔助服務器。 (這很好)

因此,如果我們只有2台服務器,對此有何建議?

當server1發生故障時,作為輔助服務器的server2不會自動成為主要服務器。 因此,server2是否有可能自動成為主要服務器。

在2節點副本集中,否。

我需要3台強制性的服務器來進行MongoDB復制,以便當server1發生故障時,server2將自動成為主服務器,而server3將保持輔助服務器。

是。

MongoDB副本集旨在提供高可用性和冗余。 為此,副本集將具有一個主節點(寫入將轉到該節點)和一個輔助節點(在主節點發生故障時可以接管)。

為此,MongoDB使用投票機制,並且節點必須獲得多數投票才能成為主節點。 脫機節點將不投票。

因此,在具有3個節點的副本集中,您可以使一個節點脫機,並且仍然具有主節點。 在5節點設置中,您可以有2個脫機節點,依此類推。

進行此設計是為了防止由於網絡分區(所謂的“裂腦”)而造成的情況,在該情況下,您有兩個Primary,並且兩個應用程序同時寫入了兩個Primary。 清除分區后,就無法確定哪個主數據庫包含正確的數據。 為了防止這種情況,MongoDB將不允許寫入,而是為了保護數據的一致性。

可以使用一個仲裁者的節點,如果你只有2承載數據的節點。 但是,請記住,使用仲裁器有一些注意事項,例如使用w:majority進行寫操作(這在本次討論中是多余的,但是請隨時提出一個新的問題)。

通過2台服務器,您還可以通過設置來鍛煉解決方案

中學的優先級為0

https://docs.mongodb.com/manual/core/replica-set-priority-0-member/#replica-set-secondary-only-members 在這種情況下,如果主服務器停機,您將沒有可用性。 因為我認為您不希望可用性,因為您不希望中學課程成為主要課程。 我的解決方案應該為您服務。

暫無
暫無

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

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