Replication

沒有仲裁器的MongoDB副本集節點故障

  • March 6, 2019

我很困惑,官方文件中沒有解決這個問題(或者我無法追踪它)。從3.4 文件

僅在具有偶數個投票成員的集合中添加仲裁器。如果您將仲裁器添加到具有奇數個投票成員的集合中,則該集合可能會出現平局選舉。

所以我們有兩種可能的情況:

  1. 具有奇數個數據節點的副本集,不需要仲裁器(事實上,添加仲裁器可能是有害的)
  2. 具有偶數個數據節點的副本集和一個仲裁器

只要事情順利進行,這很好。但是,如果數據節點在每種情況下都出現故障怎麼辦?

  1. 我們現在有偶數個沒有仲裁器的節點。據我了解,這意味著您無法成功選舉。
  2. 我們現在有奇數個節點,外加一個仲裁器。上面的文件指出,這可能會導致平局選舉

這非常明顯,為什麼我找不到任何關於它的討論或文件?但我真正想知道的是,我該如何正確處理這些場景?

您缺少的上下文是副本成員的故障不會影響副本集具有的已配置成員的數量(或維護主節點所需的投票多數)。容錯或副本集選舉要求的任何更改都將涉及副本集的重新配置(例如,添加/刪除成員或更改投票成員),而不是副本集成員狀態更改(例如,DOWN、RECOVERING、..) .

具有一個向下成員的三節點副本集仍然具有三個成員(嚴格多數為兩個)。如果您將其視為類似於 RAID 配置,則一個成員關閉的三節點副本集以降級模式執行,並且不能容忍任何其他投票成員的故障。這允許持續可用性,但您將希望恢復或替換不可用的成員以將副本集返回到健康狀態。

您可以使用 來檢查目前的副本集配置rs.conf()和成員的目前狀態rs.status()

引用自:https://dba.stackexchange.com/questions/165070