限制与风险

目录

当前仅支持 IP 连接地址

目标实例连接时,仅支持 <ip:port> 连接,暂不支持域名。

源实例提供的链接地址必须具备高可用性

灾备 Proxy 地址本身不具备高可用性。如果通过 NodePort 暴露源 Proxy,请将其置于前端负载均衡器之后以确保 HA;或者使用 MetalLB 为 Proxy 提供高可用的虚拟 IP。

目前仅支持 Redis 6.0,其他版本不支持开启灾备

仅 Redis 6.0 实例支持灾备功能,Redis 7.2 的支持仍在开发中;Redis 6.0 开启灾备后,不支持升级至 Redis 7.2。

Redis 实例开启灾备后不可关闭

Redis 灾备模块开启后,会在 Redis 持久化的 RDB 文件中写入对应的 offsetoplog id 等 AUX 信息记录;同时,Redis 实例的主从同步中会有特殊的同步指令。因此,为保证数据的可靠性和集群的可用性,开启后不允许卸载 Redis 灾备模块。

开启灾备会增加存储压力,建议使用本地 SSD 作为存储

Redis 灾备实例会实时将 oplog 写入存储(每秒执行一次 fsync);当 oplog 达到限制大小(3Gb)时,会切割 oplog 文件;清理逻辑会定期标记未使用的 oplog 切片文件并及时清理。因此,上述操作会同时存在 oplog 的读写和 rdb 生成的存储逻辑,会增加存储压力。建议使用本地 SSD 作为存储,以保证持久化性能。

灾备实例建议使用 RDB 参数模板

使用 RDB 参数模板,结合 save 参数,主动触发快照和主动触发 oplog 清理,可以保证新目标实例连接时快速同步快照。如果使用 AOF 参数模板,仍需设置 save 参数以确保定期 RDB 持久化,保证本地数据更可靠,但同时开启 RDB 和 AOF 持久化对存储性能要求更高。请确认使用本地 SSD 作为存储。

搭建灾备网络时,双方 Redis 实例需保证架构一致

Redis 灾备插件当前基于 oplog 同步数据。oplog 上下文具有关联性和幂等性,oplog 数据不能被重新分片并提交到不同分片。该限制要求:

  1. sentinel 模式的目标端只能是 sentinel 模式
  2. cluster 模式的目标端只能是 cluster 模式
  3. cluster 模式目标端的分片必须与源端一致
  4. cluster 模式目标端的槽分布必须与源端一致
  5. cluster 模式不支持在线同步添加或减少分片

一个 Redis 灾备实例作为源端最多可有 15 个目标实例

由于 service_id 限制,灾备源端最多可有 15 个目标实例。但目前不支持级联,也不支持多活(仅支持星型分布,不支持树型或环型链路)。

以下 Redis 6.0 写命令当前不支持灾备

migratepubsub 相关命令、stream 相关命令。对于 pubsubstream 命令,建议使用 MQ 组件替代。

源端故障后,首要操作是断开与源端的连接

源端故障后,在灾备切换之前,首要操作是断开目标与源端的同步链路,防止源端突然恢复但数据不正确,从而污染目标端。