灾难恢复

功能成熟度提示

灾难恢复功能目前处于 alpha 阶段。如果您计划在生产环境中使用此方案,请结合告警和定期备份等功能一起使用。同时,灾难恢复切换需要人工干预,以防止因未知问题导致的数据丢失。

目录

概述

系统的核心功能覆盖整个灾难恢复链路,包括数据拦截、命令解析、操作日志(Oplog)持久化、全量与增量数据同步以及日志切片。工作流程从拦截所有写操作的命令执行入口开始,随后系统深入解析命令并将其转换为幂等的结构化 Oplog 格式。这些日志高效地持久化到本地磁盘,形成完整且可靠的数据变更历史,为后续的数据恢复和故障切换提供坚实基础。

在数据同步方面,系统设计了高效且灵活的同步机制。它支持全量同步,通过生成 RDB 快照并结合 Oplog 的起始位置,快速构建目标端的完整数据副本。更重要的是,我们创新性地引入了与 Oplog 紧密结合的 Offset 机制,构建了超大窗口期的增量同步能力。不同于 Redis 原生复制依赖有限内存积压区,我们的 Oplog 持久化于磁盘,这意味着增量同步的追赶范围仅受磁盘空间限制。因此,即使源端和目标实例之间发生数小时甚至数天的网络中断,一旦连接恢复,目标端仍可从最后记录的 Offset 点请求增量数据,实现高效的数据追赶和一致性恢复,大大提升了灾难恢复架构的可靠性和健壮性。

此外,为了保证系统的长期稳定运行和资源可控,我们设计了精细的日志切片功能。该功能会根据预设的大小策略自动滚动分割本地 Oplog 文件。此机制不仅有效防止单个日志文件无限增长导致存储资源耗尽,还极大地方便了日志的归档、清理和管理,是保障灾难恢复服务在生产环境中持续稳定运行的关键部分。

最后,系统提供了全面且强大的可观测性。通过实时对比主 Oplog 的最新写入位置与目标端同步的 Offset,系统能够以极低开销准确计算源端与目标实例之间的数据同步延迟。这些关键性能指标(KPI)可无缝接入主流监控面板(如 Prometheus/Grafana)和告警系统,使运维团队能够实时直观地掌握系统健康状态、同步链路状态及数据差异,及时介入,防止潜在风险演变为实际故障,有效保障业务连续性和数据安全。

核心优势

  • 高可靠性:基于持久化 Oplog 和大窗口增量同步机制,能够从容应对长期网络分区和延迟,确保数据变更的准确记录和可靠恢复。
  • 高性能:作为轻量级 Redis Module,核心逻辑高度优化并直接在 Redis I/O 线程中执行,最大限度减少对 Redis 核心性能的影响。
  • 高稳定性:智能日志切片机制自动管理存储资源,有效防止日志积累导致的磁盘空间耗尽,保障灾难恢复服务的持续稳定运行。
  • 强可观测性:提供精确到操作级别的延迟计算和丰富的监控指标,使系统状态完全透明,便于集成和自动化运维,实现主动风险防控。

架构说明

为简化不同 Redis 架构接入灾难恢复系统的复杂度,我们设计了专用的代理层。作为灾难恢复系统的核心组件,代理层为哨兵模式和集群模式提供统一的状态检测和数据同步入口。无论后端 Redis 的部署形式如何,灾难恢复系统均通过该统一代理接口进行交互。代理层负责封装与特定架构(哨兵、集群)通信的内部逻辑,从而将灾难恢复系统与后端 Redis 的实现细节解耦,大大简化了灾难恢复实例的接入和管理。

实例 ID:服务 ID

为唯一标识和管理灾难恢复系统中的每个 Redis 实例,我们引入了 service_id 概念。该 ID 是整个灾难恢复系统中路由和数据同步的核心凭证。

  • 唯一标识:每个 Redis 灾难恢复实例,无论是源端还是目标端,必须配置全局唯一的 service_id。灾难恢复系统通过此 ID 建立源端与目标端的映射关系。
  • 取值范围:service_id 的有效范围为 [0-15]
  • 拓扑限制:由于 ID 范围限制,单个灾难恢复源端最多可关联 15 个灾难恢复目标实例,支持“一源多目标”拓扑。

部署架构

Redis 哨兵模式部署架构

当灾难恢复系统发起同步请求时,代理层会查询 Sentinel 集群以获取当前活跃主节点信息。定位后,代理将灾难恢复请求路由至主节点,并在两个网络套接字间直接复制数据,确保网络通信性能。

Redis Sentinel Mode Disaster Recovery Architecture

Redis 集群模式部署架构

对于集群模式,代理层负责处理更复杂的分片路由。它会解析集群拓扑,根据灾难恢复请求涉及的分片信息准确定位负责该分片的主节点。然后,同步流量直接路由至正确的主节点。该机制避免了代理层的数据传输内存和 CPU 开销,确保分布式环境下的高性能、低延迟数据同步。

Redis Cluster Mode Disaster Recovery Architecture

限制与风险

有关灾难恢复的风险与限制,请参阅文档 Disaster Recovery Limitations