Replication
mongodb:客戶可以建議重新選舉副本集嗎?
Mongodb 副本集提供自動故障轉移。如果主節點出現故障(即主節點和任何輔助節點之間存在網路問題),則會發生重新選舉。
但是,請考慮以下情況:
所有伺服器都已啟動,主伺服器和輔助伺服器之間的網路很好,因此副本集也很開心。但是,由於另一個網路問題(副本集未知),客戶端無法訪問主節點。因此 HA 失去。
在這種情況下,客戶端是否可以 ping 輔助伺服器並通知輔助伺服器無法訪問主伺服器,並且應該執行新的選舉。這可能嗎?
您可以在災難恢復情況下執行此操作,此時啟動數據庫很重要,並且您不介意回滾。
就像是:
cfg = rs.conf() cfg.members[0].priority = 2 rs.reconfig(cfg, { force: true })
凡會員
$$ 0 $$是一個已知的“好”伺服器。 一種更安全的方法可能是在每個 mongo 節點上安裝一個小型管理服務,您可以通過 rest api 訪問該服務。如果可能的話,應該將管理命令中繼到主節點。
使這類事情自動化將非常困難,因為您的應用程序和伺服器可能沒有簡單的方法來就哪些伺服器“好”和哪些伺服器不好達成一致。
mongo 集群的一種常見模型是在多個位置執行節點,其中一些可能具有不太可靠的路由。在這些情況下,我建議修改您的節點優先級。如果您有您永遠不希望作為主伺服器的伺服器,請將它們的優先級設置為 0,並將您首選位置的節點設置為優先級 2(或更高)。
有關強制重新配置的更多資訊,請閱讀: https ://docs.mongodb.com/v3.2/tutorial/reconfigure-replica-set-with-unavailable-members/
編輯:我想我很想和 mongo 仲裁者一起玩。通過在您執行客戶端的位置執行 mongo 仲裁器,他們將能夠在選舉過程中投票。大多數投票伺服器看不到的伺服器不能是主伺服器。