当系统发生故障时,PolarDB集群会自动进行主备节点切换。您也可以手动进行主备切换,指定一个只读节点为新的主节点。
注意事项
不论是自动切换还是手动切换,当只读节点未开启热备时,主备切换过程中可能会出现约20~30秒的闪断,因此在切换前请务必确保应用具备重连机制。当只读节点开启了热备功能时,主备切换将在5~10秒内完成。关于如何开启只读节点的热备功能,请参见设置热备节点。
在某些极端场景下,主备切换过程中的闪断时间可能会增加,但不会超过3分钟。
自动主备切换
PolarDB集群版采用双活(Active-Active)的高可用集群架构。当系统发生故障时,可读写的主节点和只读节点之间会自动进行故障切换(Failover),系统自动选举新的主节点。
集群中每个节点都有一个故障切换(Failover)优先级,该优先级决定了故障切换时每个节点被选举为主节点的概率高低。当多个节点的优先级相同时,则有相同的概率被选举为主节点。
自动选举主节点按以下步骤进行:
系统找出当前可以被选举的所有只读节点。
选择优先级最高的一个或多个只读节点。
如果切换第一个节点失败(例如,网络原因、复制状态异常等),则会尝试切换下一个,直至成功。
您可在集群基本信息页面的数据库节点区域,查看并设置集群中每个节点的Failover优先级。
当只读节点未开启热备功能时,主备切换过程中可能会出现约20~30秒的闪断,因此切换前请务必确保应用具备重连机制。
当只读节点开启热备功能时,主备切换将在5~10秒内完成。
在某些极端场景下,主备切换过程中的闪断时间可能会增加,但不会超过3分钟。
手动主备切换
您也可以手动进行主备切换,指定一个只读节点为新的主节点。手动切换适用于高可用演练,或者需要指定某个节点为主节点的场景。
登录PolarDB控制台。
在左上角,选择集群所在地域。
找到目标集群,单击集群ID。
在基本信息页面的数据库节点区域,单击右上角图标切换视图。
单击主备切换。
在弹出的对话框中,选择新主节点,单击确定,开始切换。
说明如果新主节点为未开启热备功能的只读节点,切换过程中可能会出现约20~30秒的闪断,因此切换前请务必确保应用具备重连机制。
如果新主节点为开启热备功能的只读节点,主备切换将在5~10秒内完成。
在某些极端场景下,主备切换过程中的闪断时间可能会增加,但不会超过3分钟。
常见问题
Q:主备切换后,超过十分钟,集群状态仍未恢复运行中,可能是什么原因?如何处理?
A:在发生异常触发高可用切换时,应用端长连接可能无法感知到连接状态变化,如果没有设置socket超时时间,应用程序会一直等待数据库返回结果,通常会等到几百秒后才会断连,期间数据库的部分连接无法正常工作,SQL会出现大量执行异常。
为了避免无效连接,建议合理配置MySQL驱动库的connectTimeout和socketTimeout参数,防止出现网络错误时一直等待的情况,从而缩短故障时间。
这两个参数的值需要根据业务负载和使用方式进行评估。在线事务场景中,参数建议值如下:
connectTimeout:建议配置为1~2秒。
socketTimeout:若为内网环境,建议配置为10~15秒;若为公网环境,建议配置为60~90秒。
说明以上建议配置仅供参考。
相关API
API | 描述 |
手动对PolarDB集群进行主备切换,可以指定一个只读节点为新的主节点。 |