Redis 启动时出现 “Bad file format reading the append only file“ 错误
当 Redis 启动时出现 “Bad file format reading the append only file” 错误,通常意味着 AOF(Append-Only File)文件存在格式损坏或数据错误。这可能是由于意外关机、磁盘故障或文件写入中断导致的。
解决步骤:
-
使用 redis-check-aof 工具检查并修复
这是最直接的解决方法,使用 Redis 自带的 AOF 检查修复工具:# 先备份原始 AOF 文件(重要!) cp appendonly.aof appendonly.aof.bak# 检查并修复 AOF 文件 redis-check-aof --fix appendonly.aof
修复过程会移除文件中损坏的部分,工具会显示修复详情(如移除了多少字节的无效数据)。
-
重启 Redis 服务
修复完成后,尝试重新启动 Redis:redis-server /path/to/redis.conf
-
如果修复失败,考虑重建 AOF 文件
若上述方法无效,可通过 RDB 文件重建 AOF(前提是开启了 RDB 持久化):# 1. 停止 Redis 服务 redis-cli shutdown# 2. 备份并删除损坏的 AOF 文件 mv appendonly.aof appendonly.aof.corrupted# 3. 启动 Redis 时加载 RDB 并重建 AOF redis-server /path/to/redis.conf
Redis 会先加载 RDB 数据到内存,再重新生成全新的 AOF 文件。
预防措施:
- 确保 Redis 有充足的磁盘空间
- 避免强制 kill Redis 进程(建议使用
redis-cli shutdown
正常关闭) - 定期备份 AOF 和 RDB 文件
- 考虑启用 AOF 重写(
auto-aof-rewrite-*
相关配置)
如果问题反复出现,可能需要检查磁盘健康状态或调整 Redis 持久化策略。