首页/数据/Redis 进阶速查/appendonly 与 AOF 文件形态
持久化56 条

appendonly 与 AOF 文件形态

appendonly yes 开启 AOF;7.0 起 AOF 为多文件结构(base 与 incr 片段加 manifest),旧版本为单一 appendonly.aof 文件。

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

appendonly 与文件形态

appendonly 是 AOF 的总开关:设为 yes 后实例才记录追加日志,设为 no 时即使目录里存在 AOF 文件也不会加载或写入。文件形态随版本变化:7.0 之前 AOF 是一个 appendonly.aof 单文件,7.0 起改为目录结构,由 manifest 描述一个 base 基线文件加若干 incr 增量文件,这样重写时不必整体替换一个大文件,也便于按段管理。

基本信息

开关appendonly yes|no,可通过 CONFIG SET 动态切换
旧版形态单文件 appendonly.aof,位于 dir 指定的目录
新版形态7.0 起为 appendonlydir/ 目录,含 manifest 与 base、incr 文件
动态开启立即触发一次基线重写,把当前内存数据写成基线,之后写入进入增量
关闭影响关闭不会删除已有文件,遗留文件可能影响后续的加载判断

典型使用场景

  • 为存量实例补开持久化:CONFIG SET appendonly yes 即时生效,无需重启
  • 版本升级前后核对文件结构:升级到 7.0 后目录结构变化,备份脚本必须同步调整
  • 备份策略设计:新版可直接备份整个 appendonlydir 目录,恢复时目录一起还原
  • 容量治理:观察 base 与 incr 文件的体积分布,判断重写是否按预期触发
  • 临时关闭 AOF 做压测:压测结束立即重新开启并确认基线已生成

开启与查看

开启与查看
redis-cli CONFIG SET appendonly yes           # 动态开启,后台立刻生成基线
redis-cli CONFIG GET appendonly               # 确认开关状态
ls -lh /data/redis/                           # 旧版:看到 appendonly.aof
ls -lh /data/redis/appendonlydir/             # 新版:manifest 与 base/incr 文件
redis-cli INFO persistence | grep -E 'aof_enabled|aof_current_size|aof_base_size'
redis-cli CONFIG REWRITE                      # 让开关写入配置文件,重启后仍生效

文件形态对照

版本结构运维影响
7.0 之前单个 appendonly.aof备份与恢复只需处理一个文件,重写时整体替换
7.0 及之后appendonlydir 目录加 manifest备份需连同目录一起处理,注意 manifest 与其他文件的一致性
混合格式aof-use-rdb-preamble yes 时基线为 RDB 格式加载更快、体积更小,但基线部分不再是人可读的命令
关闭后文件保留但不再写入重新开启时会重新生成基线,旧文件仍占磁盘
动态开启的开销:CONFIG SET appendonly yes 会立即触发一次子进程重写来生成新基线,这个动作和快照一样需要 fork 并可能造成短暂停顿。大实例应在低峰执行,并提前确认磁盘空间足够容纳新基线文件。
关闭 appendonly 不会清理已有文件:目录里的 AOF 还在,重新开启时 Redis 会重新生成基线,但旧文件与 manifest 的残留可能引起加载来源与预期不一致。关闭前应明确是否需要归档或删除这些文件。

易错点

  • 跨版本迁移时直接按旧路径拷贝 appendonly.aof,新版本加载的是目录结构,恢复自然失败,迁移步骤必须按版本区分
  • 只开 AOF 而没确认文件写入目录在其他实例上同样可写,容器重建后目录挂载变化导致基线写不进去,重启后数据为空
  • 执行 CONFIG SET appendonly yes 后忘记 CONFIG REWRITE,实例重启时 AOF 又关闭,等于持久化保护只在本次运行期内存在
  • 备份时只拷部分文件或拷目录时未保证一致性,恢复时 manifest 指向缺失文件,实例直接启动失败

数据来源与参考

  • Redis 官方文档:AOF 与 7.0 多文件 AOF 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌