MySQL 群組複製以 Paxos 分散式演算法的實作為基礎,以提供伺服器之間的分散式協調。因此,它需要多數伺服器處於活動狀態才能達到仲裁,進而做出決策。這會直接影響系統在不損害自身及其整體功能的情況下,可以容忍的失敗次數。容忍 f
次失敗所需的伺服器數量 (n) 為 n = 2 x f + 1
。
實際上,這表示若要容忍一次失敗,群組中必須有三部伺服器。因此,如果一部伺服器失敗,仍然有兩部伺服器可以構成多數(三部中的兩部),並允許系統繼續自動做出決策並進展。然而,如果第二部伺服器非自願失敗,則群組(只剩一部伺服器)會遭到封鎖,因為沒有多數可以達成決策。
以下是說明上述公式的小型表格。
群組大小 |
多數 |
可容忍的即時故障次數 |
---|---|---|
1 |
1 |
0 |
2 |
2 |
0 |
3 |
2 |
1 |
4 |
3 |
1 |
5 |
3 |
2 |
6 |
4 |
2 |
7 |
4 |
3 |