故障和重大变化处理过程
注:在集群中,如果发生主备切换,HAS会选择最健康的节点作为新的主库,最健康节点判断的条件是”如果设置synchronous_mode为true,最健康的节点为集群内原同步备库”,集群中没有开启同步模式(synchronous_mode=false)的情况下,最健康的节点为集群内已写入wal位置最大的节点,如果多个节点写入的wal位置同时为最大wal位置,则优先抢占leader key的节点为最健康的节点,为了便于异常情况处理流程描述,以下列举场景假设同步备库优先抢到leader key。
以下为一主两备部署场景的故障处理,其中包括主库、同步备库和异步备库,每个数据库节点中运行DCS服务和HAS服务进行集群管理。根据故障对象种类分为主节点、同步备库、异步备库和DCS。
序号 | 主节点 | 同步备 | 异步备 | DCS |
---|---|---|---|---|
1 | 故障 | 正常 | 正常 | 正常 |
2 | 正常 | 故障 | 正常 | 正常 |
3 | 正常 | 正常 | 故障 | 正常 |
4 | 正常 | 正常 | 正常 | 故障 |
5 | 故障 | 故障 | 正常 | 正常 |
6 | 正常 | 故障 | 故障 | 正常 |
7 | 正常 | 正常 | 故障 | 故障 |
8 | 正常 | 故障 | 正常 | 故障 |
9 | 故障 | 正常 | 故障 | 正常 |
10 | 故障 | 正常 | 正常 | 故障 |
11 | 正常 | 故障 | 故障 | 故障 |
12 | 故障 | 正常 | 故障 | 故障 |
13 | 故障 | 故障 | 正常 | 故障 |
14 | 故障 | 故障 | 故障 | 正常 |
15 | 故障 | 故障 | 故障 | 故障 |