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