持久化不等于备份
开启 AOF 或 RDB 只是让实例自己能重启恢复,文件仍在本机磁盘上;备份要做的是把快照、AOF 目录、配置文件与版本号定期复制到异地,并周期性演练恢复流程。灾难恢复的顺序是申请隔离实例、拷回文件、启动校验、核对数据后再切流量,跨机房与跨版本都要提前验证。
基本信息
| 备份对象 | RDB 快照、AOF 目录(7.0+ 为 appendonlydir)、配置文件与版本号 |
|---|---|
| 频率 | 由 RPO 决定,关键业务可小时级或更密 |
| 异地要求 | 同机同机房不算备份,整机或机房故障会一起丢失 |
| 演练 | 定期在隔离实例恢复一次,核对键数量并抽样验证数据 |
冷备与恢复演练
冷备与恢复演练
redis-cli BGSAVE # 触发后台快照
redis-cli INFO persistence | grep rdb_bgsave_in_progress # 为 0 表示快照已完成
cp /var/lib/redis/dump.rdb /backup/redis/dump-$(date +%F-%H%M).rdb # 拷贝快照到备份目录
tar czf /backup/redis/aof-$(date +%F).tgz /var/lib/redis/appendonlydir # 7.0+ 备份整个 AOF 目录
redis-server /etc/redis/restore-test.conf --dir /data/restore # 隔离实例启动
redis-cli -p 6380 DBSIZE # 核对键数量
redis-cli -p 6380 INFO keyspace # 核对各库规模与过期设置检查点与判据
| 检查点 | 命令或动作 | 判据 |
|---|---|---|
| 快照完成 | INFO persistence 的 rdb_bgsave_in_progress | 为 0 才拷贝文件 |
| 备份频率 | 按 RPO 设定定时任务 | 最近一次成功时间在阈值内 |
| 异地保存 | 同步到独立存储或异地机房 | 与生产不同磁盘、不同机房 |
| 恢复演练 | 隔离实例启动并核对 | DBSIZE 与抽样数据符合预期 |
| 版本记录 | 记录 Redis 版本与配置 | 跨版本恢复前先验证兼容性 |
典型使用场景
- 误删数据后的快速回滚,用最近快照恢复隔离实例再挑选数据
- 机房级容灾:把备份同步到异地并保持可用
- 版本升级前的全量留档,便于回退
- 定期演练验证 RPO 与恢复时长是否达标
- 交付与审计:提供可验证的备份与恢复记录
BGSAVE 写盘期间直接拷贝文件可能拿到不完整产物,要先确认 rdb_bgsave_in_progress 为 0,或检查日志中后台保存成功的记录。
只备份不演练,真正出事时才会发现权限、路径、版本全都不对;恢复演练要按固定周期执行并留下记录。