在docker方式启动的redis情况下,由于异常中断服务导致aof文件损坏,再次启动redis时,提示以下错误时,表示需要修复aof文件。 但是修复命令又在docker容器内,容器此时又无法启动进入,那么需要借助docker来完成修复:
Bad file format reading the append only file appendonly.aof.14.incr.aof: make a backup of your AOF file, then use ./redis-check-aof --fix <filename.manifest>
1. 在宿主机中执行以下命令:
docker-compose run --rm redis redis-check-aof --fix /data/appendonlydir/appendonly.aof.14.incr.aof
提示如下信息则表示修复完成,然后重启redis即可:
Start checking Old-Style AOF
AOF /data/appendonlydir/appendonly.aof.14.incr.aof format error
AOF analyzed: filename=/data/appendonlydir/appendonly.aof.14.incr.aof, size=34458611, ok_up_to=33025019, ok_up_to_line=1129515, diff=1433592
This will shrink the AOF /data/appendonlydir/appendonly.aof.14.incr.aof from 34458611 bytes, with 1433592 bytes, to 33025019 bytes
Continue? [y/N]: y
Successfully truncated AOF /data/appendonlydir/appendonly.aof.14.incr.aof
2. 重启容器
docker-compose restart redis