如果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文件路径都与我的相同,但希望可以作为参考。