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 |