自动/手动主备节点切换

当系统发生故障时,PolarDB集群会自动进行主备节点切换。您也可以手动进行主备切换,指定一个只读节点为新的主节点。

注意事项

不论是自动切换还是手动切换,当只读节点未开启热备时,主备切换过程中可能会出现约20~30秒的闪断,因此在切换前请务必确保应用具备重连机制。当只读节点开启了热备功能时,主备切换将在5~10秒内完成。关于如何开启只读节点的热备功能,请参见设置热备节点

重要

在某些极端场景下,主备切换过程中的闪断时间可能会增加,但不会超过3分钟。

自动主备切换

PolarDB集群版采用双活(Active-Active)的高可用集群架构。当系统发生故障时,可读写的主节点和只读节点之间会自动进行故障切换(Failover),系统自动选举新的主节点。

集群中每个节点都有一个故障切换(Failover)优先级,该优先级决定了故障切换时每个节点被选举为主节点的概率高低。当多个节点的优先级相同时,则有相同的概率被选举为主节点。

自动选举主节点按以下步骤进行:

  1. 系统找出当前可以被选举的所有只读节点。

  2. 选择优先级最高的一个或多个只读节点。

  3. 如果切换第一个节点失败(例如,网络原因、复制状态异常等),则会尝试切换下一个,直至成功。

您可在集群基本信息页面的数据库节点区域,查看并设置集群中每个节点的Failover优先级。

优先级

说明
  • 当只读节点未开启热备功能时,主备切换过程中可能会出现约20~30秒的闪断,因此切换前请务必确保应用具备重连机制。

  • 当只读节点开启热备功能时,主备切换将在5~10秒内完成。

  • 在某些极端场景下,主备切换过程中的闪断时间可能会增加,但不会超过3分钟。

手动主备切换

您也可以手动进行主备切换,指定一个只读节点为新的主节点。手动切换适用于高可用演练,或者需要指定某个节点为主节点的场景。

  1. 登录PolarDB控制台

  2. 在左上角,选择集群所在地域。

  3. 找到目标集群,单击集群ID。

  4. 基本信息页面的数据库节点区域,单击右上角切换图标切换视图。

  5. 单击主备切换

    主备切换

  6. 在弹出的对话框中,选择新主节点,单击确定,开始切换。

    说明
    • 如果新主节点为未开启热备功能的只读节点,切换过程中可能会出现约20~30秒的闪断,因此切换前请务必确保应用具备重连机制。

    • 如果新主节点为开启热备功能的只读节点,主备切换将在5~10秒内完成。

    • 在某些极端场景下,主备切换过程中的闪断时间可能会增加,但不会超过3分钟。

常见问题

  • Q:主备切换后,超过十分钟,集群状态仍未恢复运行中,可能是什么原因?如何处理?

  • A:在发生异常触发高可用切换时,应用端长连接可能无法感知到连接状态变化,如果没有设置socket超时时间,应用程序会一直等待数据库返回结果,通常会等到几百秒后才会断连,期间数据库的部分连接无法正常工作,SQL会出现大量执行异常。

    为了避免无效连接,建议合理配置MySQL驱动库的connectTimeoutsocketTimeout参数,防止出现网络错误时一直等待的情况,从而缩短故障时间。

    这两个参数的值需要根据业务负载和使用方式进行评估。在线事务场景中,参数建议值如下:

    • connectTimeout:建议配置为1~2秒。

    • socketTimeout:若为内网环境,建议配置为10~15秒;若为公网环境,建议配置为60~90秒。

    说明

    以上建议配置仅供参考。

相关API

API

描述

FailoverDBCluster

手动对PolarDB集群进行主备切换,可以指定一个只读节点为新的主节点。