Linux

MariaDB 如何處理多主集群中的 2/3 節點故障。

  • January 22, 2021

我執行 3 節點多主 MariaDB galera 集群。它基本上對我有用。當一個節點發生故障時,另外兩個節點工作,這很好。

但我想知道有沒有辦法讓它繼續在一個節點上工作?(這真的不太可能,但我只是想知道)我知道當沒有法定人數來防止腦裂時,集群會失敗。我也知道只有一個節點左集群會關閉。這意味著到 db 的所有連接/查詢都將失去。

我想知道是否有辦法將剩下的主節點切換到單節點模式,讓它工作,然後當發現故障時(停止連接到數據庫的應用程序),帶回其他集群節點並讓它們複製數據(這樣就不會失去任何東西)

我知道有一種叫做虛擬仲裁的東西,但是在 3 個主節點的情況下這是一個不錯的選擇嗎?

是的你可以。當有一個節點時,它進入只讀狀態以防止腦裂。您可以通過禁用裂腦保護 ( ) 來防止這種情況pc.ignore_sb;但這樣做意味著,如果您有兩個節點的網路故障,您就有可能在兩台不同的伺服器上出現裂腦。

就個人而言,我永遠不會那樣做……這太瘋狂了。如果您不想要一個完整堆棧的 galera 伺服器,但想降低失去仲裁的風險,只需使用garbd.

對此的簡單解決方案是“3 規則”。如果你想要數據中心的可用性,你必須擁有三個具有相同數量節點的數據中心;如果一個數據中心出現故障,您仍然可以維持仲裁,這意味著集群保持線上。另一種思考方式是,如果中斷可能導致超過 50% 的節點失去仲裁,那麼您的集群就會關閉。

引用自:https://serverfault.com/questions/581941