mongodb故障切换机制是怎样的?


  • 註冊用戶

    当配置MongoDB副本集为一主节点两从节点时,当主库机器出现故障,其中一台从库机器会自动切换为主库,

    但是,当我配置MongoDB副本集为一主节点一从节点时,当主库机器出现故障,从库机器不会自动切换为主库,

    这是为什么?请问mongodb故障切换机制是怎么样的?


  • 註冊用戶

    最小的副本集也應該具備一個primary節點和兩個secondary節點。兩個節點的副本集不具備真正的故障轉移能力。


  • Lv 1

    mongodb的切換規則是當主節點死亡的時候,多數還活著的節點會投票選出新的主節點

    如果節點數是偶數,當中間網路斷掉剛好將節點切成一半、或死亡一半節點,會造成沒有任何一方是擁有大多數節點的,會無法選出新的主節點

    使用奇數節點可以避免網路斷掉後,不會剛好一半一半,因此還是有大多數節點的一邊

    但是如果奇數節點死掉大多數節點(包含主),那剩下的節點一樣無法選出新的主節點

    樓主的狀況是偶數節點,當主節點死掉,剩下的那個節點並不是大多數節點,因此不會成為主節點


  • 註冊用戶

    樓上解釋的很詳細了。

    還有一種用法仲裁者( arbiter)

    副本集要求參與投票(vote)的節點數為奇數,當實際環境中因為機器等原因限制只有兩個(或偶數)的節點,這時為了實現 Automatic Failover 而引入另一類節點:仲裁者( arbiter),仲裁者只參與投票不擁有實際的數據,並且不提供任何服務,因此它對資源要求不嚴格。


  • 註冊用戶

    @kevinl @Amber 

    非常感谢你们的详细解答,现在让我对mongodb故障切换机制已经有了比较清楚的理解:

    如果要实现mongodb故障切换机制,一定要保证节点数的个数是奇数,

    或者当节点数为偶数时,出现故障,可以引入一个仲裁节点,用于投票产生新的主节点。


  • Lv 1

    @Jerry 

    其實也不一定要基數的節點,應該說可參與投票的必須是基數(前提是每個票數都為1)

    ex.有四個節點,其中一個設置vote:0,也是可以四個結點並存在副本集中


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待