MySQL Group Replication 建立在 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个 |