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 |