当系统发生故障时,PolarDB集群会自动进行主备切换。您也可以手动进行主备切换,指定一个只读节点为新的主节点。
注意事项
不论是自动切换还是手动切换,当只读节点未开启热备时,主备切换过程中可能会出现20~30秒左右的闪断,因此切换前请务必确保应用具备重连机制;当只读节点开启了热备功能时,主备切换将在5~10秒内完成。关于如何开启只读节点的热备功能,请参见设置热备节点。
自动主备切换
PolarDB集群版采用双活(Active-Active)的高可用集群架构。当系统发生故障时,可读写的主节点和只读节点之间会自动进行故障切换(Failover),系统自动选举新的主节点。
集群中每个节点都有一个故障切换(Failover)优先级,该优先级决定了故障切换时每个节点被选举为主节点的概率高低。当多个节点的优先级相同时,则有相同的概率被选举为主节点。
自动选举主节点按以下步骤进行:
- 系统找出当前可以被选举的所有只读节点。
- 选择优先级最高的一个或多个只读节点。
- 如果切换第一个节点失败(例如,网络原因、复制状态异常等),则会尝试切换下一个,直至成功。
您可在集群基本信息页面的数据库节点区域,查看并设置集群中每个节点的Failover优先级。

说明 当只读节点未开启热备时,主备切换过程中可能会出现20~30秒左右的闪断,因此切换前请务必确保应用具备重连机制;当只读节点开启了热备功能时,主备切换将在5~10秒内完成。
手动主备切换
您也可以手动进行主备切换,指定一个只读节点为新的主节点。手动切换适用于高可用演练,或者需要指定某个节点为主节点的场景。
常见问题
- Q:主备切换后,超过十分钟,集群状态仍未恢复运行中,可能是什么原因?如何处理?
- A:在发生异常触发高可用切换时,应用端长连接可能无法感知到连接状态变化,如果没有设置socket超时时间,应用程序会一直等待数据库返回结果,通常会等到几百秒后才会断连,期间数据库的部分连接无法正常工作,SQL会出现大量执行异常。
为了避免无效连接,建议合理配置MySQL驱动库的connectTimeout和socketTimeout参数,防止出现网络错误时一直等待的情况,从而缩短故障时间。
这两个参数的值需要根据业务负载和使用方式进行评估。在线事务场景中,参数建议值如下:- connectTimeout:建议配置为1~2秒。
- socketTimeout:若为内网环境,建议配置为10~15秒;若为公网环境,建议配置为60~90秒。
说明 以上建议配置仅供参考。
相关API
API | 描述 |
---|---|
FailoverDBCluster | 手动对PolarDB集群进行主备切换,可以指定一个只读节点为新的主节点。 |