PolarDB PostgreSQL轻量版支持集群高可用与跨机房的容灾能力,保障系统持续运行和数据安全,提升业务可靠性和应对突发情况的能力。
ClusterManager
作为数据库集群的高可用组件,在主节点出现宕机或故障时,能够即时选择可用只读节点进行切换,也支持手动切换。ClusterManager
组件使用三节点形态部署,利用Raft协议保障自身的高可用。
自动切换(Failover)
正常情况下,高可用组件ClusterManager
将对数据库进行每3秒一次的探活操作,针对主节点进行可写探活,针对只读节点进行只读探活。一旦探活出现异常,在探活超时的情况下,将结合Monitor Agent
采集的数据,判断探活异常原因。
当确认是由于CPU资源占满所导致,则不会优先尝试切换。
当主节点进程发生崩溃的情况(例如误关闭),将优先在主节点尝试重启实例以进行恢复。
对于主节点宕机、断电、网络异常等场景导致的故障,
ClusterManager
会选择其中一个处于同步状态的只读节点提升为主节点。切换后会尝试将原主节点以只读节点角色加回集群。当只读节点故障时,
ClusterManager
会尝试重启只读节点数据库进程,长时间异常时会自动对备库进行重建。
手动切换(Switchover)
支持使用pdbcli
进行主备节点手动切换。详细步骤如下:
查看所有可切换的只读节点。
pdbcli failover --list
返回结果如下:
Cluster Status: { "phase": "RunningPhase", "master": { "endpoint": "10.X.X.1:1521", "phase": "RUNNING", "start_at": "2020-09-24 23:32:07", "sync_status": "SYNC" }, "standby": [ { "endpoint": "10.X.X.2:1521", "phase": "RUNNING", "start_at": "2020-09-24 23:32:10", "sync_status": "SYNC" }, { "endpoint": "10.X.X.3:1521", "phase": "RUNNING", "start_at": "2020-09-24 23:32:10", "sync_status": "SYNC" } ] }
使用目标Standby节点的
endpoint
进行手动切换。pdbcli failover --target <endpoint>
完成主备节点切换后可执行pdbcli status
验证,如每个节点的phase
均为RUNNING,则表明手动切换成功。
该文章对您有帮助吗?