You need to enable JavaScript to run this app.
导航
主从切换
最近更新时间:2024.10.15 20:19:14首次发布时间:2021.11.04 14:15:17

缓存数据库 Redis 版提供主从切换功能。当检测到实例发生故障时,系统会立即触发主从切换,及时恢复实例正常运行,保障实例的高可用。除此之外,Redis 还支持手动触发主从切换,满足容灾演练或多可用区场景下就近连接等需求。

前提条件

实例类型为主备实例。单节点实例不支持主从切换功能。关于两种类型实例的功能特性差异详情,请参见功能特性差异

触发原因

  • 手动触发
    当需要进行容灾演练或多可用区场景下就近连接时,您可以手动触发主从切换。具体操作步骤,请参见手动执行主从切换

    说明

    手动切换主节点后,若实例发生了故障,系统会立即触发故障切换保障实例高可用,此时实例的主节点可能会与您手动切换主节点时选择的主节点不一致。

  • 故障切换
    缓存数据库 Redis 版采用了基于高可用 HA(High Availability)系统的探活机制进行故障检测。HA 系统会通过健康检测来确认主从节点的健康状态。实例会根据故障级别采取不同的机制进行节点切换,确保实例尽快恢复服务。不同故障级别及响应机制说明如下表。

    故障级别故障响应机制

    仅主节点故障

    当只有主节点出现故障时:

    1. 系统自动将同步延迟时间最短的从节点提升为主节点。
    2. 创建一个新节点用于替换故障节点,并和新的主节点完成数据同步。

    说明

    • 主节点切换后,无需修改客户端的连接地址代码。
    • 由于主从节点间的同步数据是异步实现的,可能会丢失最近写入的部分数据。

    主节点和部分从节点故障

    当主节点和部分从节点出现故障时:

    1. 系统自动将同步延迟时间最短的从节点提升为主节点。
    2. 创建对应数量的新节点,并和新的主节点完成数据同步。

    说明

    • 主节点切换后,无需修改客户端的连接地址代码。
    • 由于主从节点间的同步数据是异步实现的,可能会丢失最近写入的部分数据。

    主节点和所有从节点都故障

    当实例中所有节点都出现故障时:

    1. 系统自动创建与原实例相同数量的主节点和从节点。
    2. 新的主从节点会替换掉对应角色的故障节点,替换完成后,所有节点会被冷启动。

    说明

    • 当所有节点发生故障时,还没来得及写入云盘中的数据会丢失。
    • 节点恢复后,无需修改客户端的连接地址代码。

切换影响及建议

  • 切换影响
    • 正在切换的节点将出现秒级的连接闪断。
    • 正在切换的节点会出现短暂的(30 秒内)不可写时间,以避免主从切换引起潜在的数据丢失风险和 DNS 缓存引起的数据双写情况。
    • Pub/Sub 不支持数据持久化,主从切换时订阅缓存区的数据可能存在数据丢失风险。
  • 建议
    应用需具备自动重连机制,以及处理异常的能力,否则在实例执行主从切换过程中,应用将提示异常信息,例如 READONLY You can't write against a read only replica