首页/数据/Redis 进阶速查/7.0 多文件 AOF 结构
持久化56 条

7.0 多文件 AOF 结构

7.0 起 AOF 目录由 manifest 清单、base 基线文件与 incr 增量文件组成;重写只生成新 base 并切换 manifest,不再重写单个巨型文件。

Redis 进阶速查数据更新于 2026-10-13

7.0 的 AOF 目录结构

7.0 起 AOF 从单个文件改成了目录结构:默认目录为 appendonlydir,其中包含一个 manifest 清单文件、若干 base 基线与 incr 增量文件。清单记录当前生效的文件列表与类型,加载时按清单顺序先读 base 再读 incr。重写不再重写那个不断变大的文件,而是生成新的 base 并切换清单指向,因此重写期间的磁盘峰值更低、切换动作也更简单,旧文件可以在切换完成后清理释放。

基本信息

目录appendonlydir,可用 appenddirname 改名
组成manifest 清单 + base 基线 + incr 增量
base 格式开启 aof-use-rdb-preamble 时为 RDB,否则为 AOF
加载顺序按清单依次读取 base 与 incr
命名特点文件名带类型与序号后缀,便于识别

典型使用场景

  • 备份脚本适配:备份对象从单个文件变成整个目录
  • 排查 AOF 加载失败:先核对清单与实际文件是否一一对应
  • 迁移时手工搬文件:必须把清单与文件一起搬,缺一不可
  • 磁盘容量评估:重写期间新旧 base 会同时存在
  • 从 6.x 升级到 7.0 后修正运维脚本与备份清单

查看结构

查看结构
ls -l /data/redis/appendonlydir/                 # 列出清单与各段文件
cat /data/redis/appendonlydir/appendonly.aof.manifest   # 查看生效文件清单
redis-cli INFO persistence | grep -E 'aof_(enabled|base_size|current_size)'
redis-cli BGREWRITEAOF                            # 生成新 base 并切换清单
redis-check-aof /data/redis/appendonlydir/appendonly.aof.1.incr.aof  # 校验增量文件

文件类型与作用

文件内容作用
manifest生效文件的清单加载入口,记录类型与序号
base 文件某一时刻的数据全集代表重写时的数据集基线
incr 文件基线之后的写命令追加写入,可能有多份
被替换的旧文件历史版本切换完成后可清理释放空间
备份与迁移脚本如果还按旧文件名 appendonly.aof 去找文件,会漏掉新结构导致备份不完整。稳妥做法是整目录打包,或者按清单文件逐项列举,并在恢复时保持目录结构与清单一致。
排查启动失败时,第一步是核对清单与实际文件是否一一对应:清单里列出的文件缺失,或者目录里多出清单未登记的文件,都会让加载在初始化阶段直接失败。此时不要随手删除文件,先把整个目录备份下来再分析,避免把可恢复的数据毁掉。

易错点

  • 运维脚本仍按单文件路径备份 AOF,备份不完整,恢复时数据对不上
  • 手工改动目录中的文件却没有同步修改清单,启动时因清单与实际不符而失败
  • 迁移只拷贝增量文件漏掉 base,加载后得到的是一个残缺数据集
  • 重写完成后不清理被替换的 base 文件,磁盘被历史文件持续占用

数据来源与参考

  • Redis 7.0 Release Notes:Multi-part AOF
  • Redis 官方文档:AOF 文件结构说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌