TL;DR
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ファイルがおかしくなっているのでFIXしてあげれば良い模様。
しかしredisが起動してくれないためAOFファイルのパスすらわからない。
What is the default location for Redis AOF file for Ubuntu?
上記の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
truncateされてる!?
しかしコンテナを起動すると無事redisに接続できてデータも残っていた、良かった。
全てのDocker内のAOFファイルのパスが私のと同じとは限らないですが、参考になればと思います。