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 |