mongodb故障切换机制是怎样的?
-
当配置MongoDB副本集为一主节点两从节点时,当主库机器出现故障,其中一台从库机器会自动切换为主库,
但是,当我配置MongoDB副本集为一主节点一从节点时,当主库机器出现故障,从库机器不会自动切换为主库,
这是为什么?请问mongodb故障切换机制是怎么样的?
-
最小的副本集也應該具備一個primary節點和兩個secondary節點。兩個節點的副本集不具備真正的故障轉移能力。
-
mongodb的切換規則是當主節點死亡的時候,多數還活著的節點會投票選出新的主節點
如果節點數是偶數,當中間網路斷掉剛好將節點切成一半、或死亡一半節點,會造成沒有任何一方是擁有大多數節點的,會無法選出新的主節點
使用奇數節點可以避免網路斷掉後,不會剛好一半一半,因此還是有大多數節點的一邊
但是如果奇數節點死掉大多數節點(包含主),那剩下的節點一樣無法選出新的主節點
樓主的狀況是偶數節點,當主節點死掉,剩下的那個節點並不是大多數節點,因此不會成為主節點
-
樓上解釋的很詳細了。
還有一種用法仲裁者( arbiter)
副本集要求參與投票(vote)的節點數為奇數,當實際環境中因為機器等原因限制只有兩個(或偶數)的節點,這時為了實現 Automatic Failover 而引入另一類節點:仲裁者( arbiter),仲裁者只參與投票不擁有實際的數據,並且不提供任何服務,因此它對資源要求不嚴格。
-
非常感谢你们的详细解答,现在让我对mongodb故障切换机制已经有了比较清楚的理解:
如果要实现mongodb故障切换机制,一定要保证节点数的个数是奇数,
或者当节点数为偶数时,出现故障,可以引入一个仲裁节点,用于投票产生新的主节点。
-