Redis 的其一灾备方案
2026年3月16日大约 2 分钟
Redis 的其一灾备方案
本质:用 Redis 降级 Redis
灾备方案的核心就是用另一套 Redis 作为主节点的备份,主挂了就切到备节点读写,本质是「Redis 降级 Redis」。
一、两套 Redis 主备切换方案
方案思路
- 平时:A 为主(读写),B 为从(备份)
- A 坏了:切到 B 读写,B 提升为主,A 变备
- A 恢复后:A 配置为 B 的从节点,从 B 重新同步
关键要点
- 必须做主从复制:B 持续从 A 同步,否则 A 坏时 B 数据落后,切换会丢数据
- 切换方式:改连接串或通过代理/VIP,应用快速指向新主
- 恢复后:A 修好后配置为 B 的从,从 B 全量+增量同步,再考虑是否切回
与冷备的区别
| 方式 | 数据同步 | 切换 | 数据风险 |
|---|---|---|---|
| 纯冷备(两套独立) | 无或手动 | 手动 | 可能丢故障期间数据 |
| 主从 + 手动切换 | 持续复制 | 手动改连接 | 通常只丢几秒 |
二、同步过程中新数据如何处理
主从复制时,新写入不会因为「正在同步」而丢失。
全量同步(Full Sync)
主节点生成 RDB 快照并发送给从节点时,新写入会:
- 先写入主节点内存
- 同时写入复制缓冲区(replication buffer)
- RDB 发完后,主节点把缓冲区里的命令再发给从节点
从节点先加载 RDB,再按顺序执行这些命令,全量同步期间的新数据也会被同步。
增量同步(Partial Sync)
依赖复制积压缓冲区(replication backlog,环形缓冲区):
- 主节点把最近的写命令写入 backlog
- 从节点断线重连时带上 offset,主节点从 backlog 中补发缺失部分
- 同步过程中新产生的写命令会追加到 backlog,并实时发给从节点
| 阶段 | 新数据如何处理 |
|---|---|
| 全量同步 | 写入 replication buffer,RDB 发完后补发 |
| 增量同步 | 写入 backlog,并实时发给从节点 |
主节点在复制过程中持续接收写请求,新数据通过 buffer 或 backlog 传给从节点,不会丢失。
总结
用 Redis 降级 Redis = 主从复制 + 故障时切到从节点。主从复制保证了数据同步,全量/增量同步机制保证了同步期间的新写入不丢。
