RDB 恢复是什么
RDB 恢复本质上就是「把快照文件放回正确位置,然后启动」:Redis 启动时会读取 dir 与 dbfilename 指定的文件并自动加载,AOF 开启时优先加载 AOF。文件是否完好可以用 redis-check-rdb 校验,启动日志会明确写出加载了哪个文件、多少键、耗时多久。流程简单,容易出问题的是权限、版本,以及「到底加载了哪个文件」。
基本信息
| 加载时机 | 实例启动时自动加载,无需额外命令 |
|---|---|
| 加载优先级 | AOF 开启时优先加载 AOF,其次才是 RDB |
| 校验工具 | redis-check-rdb 文件路径 |
| 文件位置 | dir 与 dbfilename 两个配置决定 |
| 前置建议 | 恢复流程先在预发环境演练过再上生产 |
典型使用场景
- 误操作后从最近一次快照回滚数据
- 实例迁移时搬移数据文件并验证加载结果
- 快照文件损坏导致启动失败,需要定位损坏原因
- 定期演练恢复流程,记录实际耗时用于修正预估
- 核对备份文件与线上实例的版本兼容性
恢复步骤
恢复步骤
redis-cli shutdown save # 停止实例并保存一次快照
cp /backup/dump.rdb /var/lib/redis/dump.rdb
chown redis:redis /var/lib/redis/dump.rdb
chmod 640 /var/lib/redis/dump.rdb
redis-check-rdb /var/lib/redis/dump.rdb # 先校验,再启动
redis-server /etc/redis/redis.conf
# 启动日志关注:
# * Loading RDB produced by version 7.2.4
# * Ready to accept connections环节与常见错误
| 环节 | 要点 | 常见错误 |
|---|---|---|
| 文件位置 | 必须放在 dir 与 dbfilename 指定路径 | 放错目录,启动后用的是旧文件 |
| 文件属主 | 与运行用户一致,权限 640 左右 | 权限不对导致启动直接失败 |
| 版本兼容 | 跨版本恢复前先确认可读性 | 高版本文件拿到低版本上无法加载 |
| 加载优先级 | AOF 优先于 RDB | 只想用 RDB 却没关掉 AOF |
| 结果核对 | 看日志中的文件版本与键数 | 不复核就等于不知道加载了什么 |
同一目录下同时存在 AOF 与 RDB 时会优先加载 AOF,只想用 RDB 恢复必须先关闭 appendonly 或清空 AOF 目录,否则忙活半天恢复出来的还是旧数据。
备份文件建议在文件名或旁挂清单里标注版本、生成时间与校验值:跨版本恢复(例如把 7.x 的文件给 6.x)通常直接报错,提前标注能省下大量排查时间。
恢复后的第一件事是核对数据:库的数量、关键键的数量、抽样几条业务数据。只看「服务起来了」就宣布恢复完成,是演练中反复出现的误区。