一般情况下,因主节点故障或过载导致只读节点复制异常时,通过代理访问的整个集群将不可读不可写,但集群内的只读节点依然可提供读服务。您可以在数据库代理中设置最小保留实例数,在主节点故障或过载时保留指定数量的只读节点处理读请求,提高实例在异常情况下的可用性。
上线时间
2024年11月26日
功能简介
通过设置最小保留实例数,集群在异常情况下(如主节点异常宕机或只读节点复制中断)可保留指定数量的只读节点处理读请求。用户设置最小保留实例数后,数据库代理内至少会有min{最小保留实例数,正常运行且权重非0的只读节点个数}
个只读节点提供服务。
只读节点正常运行指节点的运行状态为运行中,对其复制状态无要求。
使用场景
最小保留实例数主要用于以下两种场景:
主节点异常宕机导致只读节点复制中断。
可设置通过最小保留实例数,使代理地址依然能提供读能力。
主节点写入量大,导致只读节点的复制延迟超过最大延迟阈值,从而影响负载均衡。
当主节点写入量大导致只读节点的复制延迟超过最大延迟阈值时,所有读流量将被转发至主节点,可能使其过载甚至挂起。若设置最小保留实例数,保留的只读节点将分担读流量,防止主节点因CPU负载过高而挂起。
节点保留策略
当可被路由的只读节点数量低于预设的最小保留实例数时,系统将按以下策略保留只读节点:
当前已被路由的只读节点依然保留,额外优先保留复制延迟高于最大延迟阈值(未复制中断)的节点,若此类节点不足,再保留复制中断的节点,直到达到最小保留实例数。
在满足上述优先级的情况下,若节点复制状态相同,则按节点读权重排序,优先保留读权重高的节点。
设置最小保留实例数后,复制延迟超过最大延迟阈值的节点也可被路由,但读权重为0的节点不可被路由。
您可以通过下表中的示例场景更直观地理解节点保留策略:
复制状态不同时的节点保留示例
场景
最小保留实例数
最大延迟阈值
RO1(复制延迟)
RO2(复制延迟)
RO3(复制延迟)
代理是否可读
可读节点
场景
最小保留实例数
最大延迟阈值
RO1(复制延迟)
RO2(复制延迟)
RO3(复制延迟)
代理是否可读
可读节点
1
1
-1
-1
-1
-1
是
RO1
2
-1
50
60
是
RO2
3
1
30
0
40
40
是
RO1
4
40
50
60
是
RO1
5
-1
-1
-1
是
RO1
6
-1
50
60
是
RO2
7
2
30
20
60
40
是
RO1,RO2
8
20
-1
60
是
RO1,RO3
9
20
-1
-1
是
RO1,RO2
复制延迟为
-1
时表示节点复制中断,0
表示无复制延迟,大于0表示有复制延迟但未复制中断,RO
表示只读节点。复制状态相同(读权重不同)时的节点保留示例
场景
最小保留实例数
RO1(节点权重)
RO2(节点权重)
RO3(节点权重)
是否可读
可读节点
场景
最小保留实例数
RO1(节点权重)
RO2(节点权重)
RO3(节点权重)
是否可读
可读节点
10
2
0
20
0
是
RO2
11
0
0
0
否
无
12
0
20
20
是
RO2,RO3
读权重为
0
时表示节点不参与路由,大于0表示节点正常参与路由。
如何使用
开通数据库代理,设置数据库代理配置,填写最小保留实例数。详情请参见设置最小保留实例数。
相关文档
- 本页导读 (1)
- 上线时间
- 功能简介
- 使用场景
- 节点保留策略
- 如何使用
- 相关文档