恢复前先校验文件
redis-check-rdb 是随 Redis 一起提供的校验工具:它解析 RDB 文件,输出格式版本、数据库与键数量的统计信息,发现损坏时会指出问题所在的位置。它的用途是「确认文件能不能读」,而不是「把坏文件修好」。校验通过只说明结构完整,并不代表内容符合业务预期,所以完整的验证还应该包含用这个文件真的启动一次实例,并对关键业务数据做抽样核对。
基本信息
| 用途 | 校验与查看 RDB 文件内容概况 |
|---|---|
| 用法 | redis-check-rdb <文件路径> |
| 输出 | RDB 版本、键数量、辅助元信息 |
| 退出码 | 非 0 表示文件不可读或已损坏 |
| 局限 | 只做报告与校验,不负责修复 |
典型使用场景
- 备份完成后自动校验,通过的文件才进入可用备份清单
- 恢复演练的第一步:先校验文件再启动实例
- 排查启动失败:确认是否是 RDB 文件损坏导致
- 版本升级前核对老快照能否被新版本二进制读取
- 交接与审计:证明某个时间点的备份确实可用
校验与验证
校验与验证
redis-check-rdb /backup/redis/dump-2026-10-10.rdb # 校验结构并查看统计
redis-check-rdb /data/redis/dump.rdb; echo "退出码: $?" # 非 0 即为异常
# 结构校验通过后,用独立实例做真实恢复验证
redis-server --port 6390 --dir /tmp/restore-test --dbfilename dump.rdb
redis-cli -p 6390 DBSIZE # 键数量是否符合预期
redis-cli -p 6390 --scan | head -20 # 抽样看键名是否正常校验输出的关注点
| 输出项 | 含义 | 异常信号 |
|---|---|---|
| RDB 版本 | 文件格式版本号 | 高于当前二进制支持的版本会加载失败 |
| 键数量 | 文件中包含的键总数 | 与预期量级差异大说明拿错了文件 |
| 辅助元信息 | 生成时间等元数据 | 时间不符合预期说明不是目标快照 |
| 退出码 | 0 表示可读 | 非 0 表示文件损坏或不可读 |
发现损坏时优先从更早的备份恢复,而不是现场修补:RDB 是二进制整体格式,局部修补的可靠性无法保证,修补后的文件往往在运行一段时间后才暴露出问题,代价更大。