如果Docker中的Redis的AOF文件损坏了,应对方法如下:

太长不看

docker-compose run --rm redis redis-check-aof --fix /data/appendonly.aof

Docker中的Redis AOF文件已经损坏。

某天突然使用Docker的Redis无法启动。

redis_1 | Bad file format reading the append only file: make a backup of your AOF file, then use ./redis-check-aof --fix <filename>
redis_1 exited with code 1

由于AOF文件出现问题,如果修复它应该就可以了。
但是由于redis无法启动,连AOF文件的路径都不知道。

在Ubuntu中,Redis AOF文件的默认位置是什么?

根据上面的StackOverflow参考,路径是/var/lib/redis/appendonly.aof,因此我们尝试在这个路径下执行。

docker-compose run --rm redis redis-check-aof --fix /var/lib/redis/appendonly.aof
Cannot open file: /var/lib/redis/appendonly.aof

由于无法打开上述路径的文件,这个路径的文件似乎不存在…

请上司确认一下在Docker中Redis内的appendonly.aof的路径是/data/appendonly.aof。

docker-compose run --rm redis redis-check-aof --fix /data/appendonly.aof
0x        1874d306: Expected prefix '
AOF analyzed: size=410310560, ok_up_to=410309382, diff=1178
This will shrink the AOF from 410310560 bytes, with 1178 bytes, to 410309382 bytes
Continue? [y/N]: y
Successfully truncated AOF

截短了吗!?
但是当我启动容器时,成功连接到了Redis,并且数据也保留了下来,太好了。

虽然不是所有Docker内的AOF文件路径都与我的相同,但希望可以作为参考。

广告
将在 10 秒后关闭
bannerAds