首页/数据/数据库速查/文件修复工具(redis-check-rdb / redis-check-aof)
Redis 运维与场景124 条

文件修复工具(redis-check-rdb / redis-check-aof)

持久化文件损坏时的官方工具:redis-check-rdb 校验快照;redis-check-aof --fix 可截断 AOF 尾部不完整命令(有数据取舍)。

数据库速查数据更新于 2026-10-13

文件修复工具是什么

Redis 自带两个持久化文件检查工具:redis-check-rdb 校验 RDB 快照完整性,redis-check-aof 校验 AOF 文件,并可用 --fix 截断尾部不完整的命令。AOF 出现损坏时(例如磁盘写满或进程被强杀),--fix 能把文件恢复到可加载状态,代价是截断点之后的写命令永久丢失,属于「保大部分、弃小部分」的取舍。

基本信息

适用版本Redis 全版本;Redis 7 的 AOF 位于 appendonlydir 多文件目录
RDB 检查redis-check-rdb /path/to/dump.rdb
AOF 检查redis-check-aof /path/to/appendonly.aof
修复redis-check-aof --fix <file>(按提示确认)
前提动作修复前先复制原文件留档
影响截断点之后的数据丢失,需人工评估是否需要补齐

典型使用场景

  • 实例启动失败,日志提示 RDB 或 AOF 格式错误
  • 磁盘写满导致 AOF 尾部写坏,需要截断后启动
  • 恢复演练:验证备份文件能否通过完整性校验
  • 迁移前核对持久化文件,避免搬到新机器后启动不了
  • 故障复盘:确认数据丢失的时间范围与原因

校验与修复

校验与修复
# 先复制留档,任何修复都在副本之外保留原件
cp /var/lib/redis/dump.rdb /backup/dump.rdb.$(date +%F)

# 校验 RDB 完整性
redis-check-rdb /var/lib/redis/dump.rdb

# 校验 AOF(Redis 7 目录结构示例)
redis-check-aof /var/lib/redis/appendonlydir/appendonly.aof.1.incr.aof

# --fix 会提示确认后截断损坏的尾部
redis-check-aof --fix /var/lib/redis/appendonlydir/appendonly.aof.1.incr.aof

# 修复完成后启动实例并核对关键数据是否存在
redis-server /etc/redis/redis.conf

工具与适用文件

工具目标文件能做什么
redis-check-rdbdump.rdb校验快照完整性,报告损坏位置
redis-check-aofappendonly.aof(及 7.x 的 incr/base 文件)校验 AOF,报告异常命令位置
redis-check-aof --fix同上截断损坏尾部使文件可加载
redis-cli --rdb远程拉取 RDB备份用途,不做修复
--fix 是「保大部分弃小部分」:截断点之后的写命令丢失,金融、订单类数据必须人工核对后补齐;执行前务必先备份原文件,修复失败时还有回退余地。
Redis 7 的 AOF 采用多文件结构(base 与 incr 文件位于 appendonlydir 目录):校验与修复要针对具体文件,同时留意 manifest 文件的一致性,操作前先停实例,避免运行中改写。

易错点

  • 直接对生产文件执行 --fix 不留备份:修坏后无从回退,可能连可读部分也失去
  • AOF 损坏就整个删除重建:等于放弃全部增量数据,应先尝试校验与截断
  • 实例运行中操作持久化文件:与后台重写或追加写入冲突,文件进一步损坏
  • 修完不核对关键数据:截断范围可能比预期大,必须逐项确认核心业务数据
  • 只看日志报错不看磁盘状况:磁盘写满或文件系统异常不解决,修复后很快再次损坏

数据来源与参考

  • Redis 官方文档: redis-check-aof
  • Redis 官方文档: redis-check-rdb

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌