Redis

关注公众号 jb51net

关闭
首页 > 数据库 > Redis > Redis避免AOF再次损坏

Redis避免以后AOF再次损坏的预防措施

作者:BullSmall

文章提供了修复和防止Redis AOF文件损坏的方法,包括临时修复、关键配置设置、双保险策略、运维规范和一键自救命令,重点介绍了安全AOF刷盘、AOF自动碎片重写、损坏容错配置、关闭混合AOF等配置,并强调了避免磁盘满、定期巡检等运维规范,需要的朋友可以参考下

一、先把当前 AOF 损坏彻底修好(极简操作)

  1. 停止 redis
systemctl stop redis
  1. 备份 + 修复
cd /var/lib/redis/appendonlydir
cp appendonly.aof.1.incr.aof appendonly.aof.1.incr.aof.bak
redis-check-aof --fix appendonly.aof.1.incr.aof
  1. 临时放行损坏尾段(适配你报错提示)编辑 redis.conf
aof-load-corrupt-tail-max-size 830
  1. 启动
systemctl start redis

二、永久杜绝 AOF 损坏(关键配置,直接抄)

打开 redis.conf

1. 安全 AOF 刷盘(防止断电崩文件)

# 核心:不要用always(太耗性能),也别用no(极易坏文件)
appendfsync everysec

# 断电/强制关机时,减少AOF损坏概率
no-appendfsync-on-rewrite no

2. 开启 AOF 自动碎片重写

避免 AOF 文件无限膨胀、内部格式异常

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

3. 损坏容错配置(防止启动直接挂掉)

# 轻微损坏允许启动,截断错误尾段
aof-load-corrupt-tail-max-size 1024
aof-trim-corrupt-tail yes

4. 关闭混合 AOF(Redis7+ 最容易坏文件的元凶)

重点推荐,混合持久化最容易出现 aof 格式报错

aof-use-rdb-preamble no

三、搭配 RDB,双保险(数据不丢、不怕 AOF 坏)

同时开 RDB+AOF,AOF 坏了可以用 RDB 恢复

# 定时快照
save 60 1000
dbfilename dump.rdb
dir /var/lib/redis

四、运维硬性规范(避免再次炸裂)

  1. 禁止暴力杀进程不要 kill -9 redis,统一用:
systemctl stop redis
# 或
redis-cli shutdown
  1. 服务器关机前先停 Redis断电、重启前优雅下线,防止 AOF 写入中断。
  2. 磁盘不要满盘运行磁盘 100% 占用,AOF 写入截断直接损坏文件,定期监控磁盘。
  3. 定期巡检
# 检查aof是否异常
redis-check-aof /var/lib/redis/appendonlydir/*.aof

五、后续再崩一键自救命令

# 批量修复所有aof
redis-check-aof --fix /var/lib/redis/appendonlydir/*aof
# 查看redis运行+持久化状态
redis-cli info persistence

六、直接复制粘贴到redis.conf,全覆盖,防 AOF 损坏 + 兼顾性能 + 双持久化兜底

# ========== 持久化核心配置(直接生效) ==========
# 开启AOF
appendonly yes

# AOF文件独立目录,方便维护
appendonlydir /var/lib/redis/appendonlydir

# 刷盘策略:折中最稳,不易坏文件
appendfsync everysec

# 后台重写时不阻塞刷盘
no-appendfsync-on-rewrite no

# 关闭混合AOF(Redis7+ 损坏高发根源,必关)
aof-use-rdb-preamble no

# AOF自动重写,防止文件过大、碎片错乱
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 容忍轻微AOF尾部损坏,启动不挂
aof-load-corrupt-tail-max-size 1024
aof-trim-corrupt-tail yes

# ========== RDB 快照兜底(双保险) ==========
save 60 10
save 300 100
save 3600 1000

# RDB文件目录&名称
dir /var/lib/redis
dbfilename dump.rdb

# 快照出错也允许启动
stop-writes-on-bgsave-error no

# 压缩&校验,保证文件完整性
rdbcompression yes
rdbchecksum yes

安全 AOF 刷盘(防止断电崩文件),依次执行如下命令

止 Redis---》 编辑配置文件,粘贴上面全部内容---》 重建 AOF 目录权限(避免写入权限异常损坏文件)---》重启 Redis

systemctl stop redis
vi /etc/redis/redis.conf
mkdir -p /var/lib/redis/appendonlydir
chown -R redis:redis /var/lib/redis
chmod 700 /var/lib/redis/appendonlydir
systemctl start redis
systemctl status redis

七、关键说明

  1. aof-use-rdb-preamble no关闭「RDB+AOF 混合格式」,彻底杜绝你刚才那种 aof.incr 格式报错
  2. appendfsync everysecalways 性能强,比 no 安全,生产最优选择。
  3. RDB+AOF 双开AOF 万一损坏,直接用 dump.rdb 恢复数据,不怕丢数据。

到此这篇关于Redis避免以后AOF再次损坏的预防措施的文章就介绍到这了,更多相关Redis避免AOF再次损坏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文