昨天我们的机器出乎意料地崩溃,我们的Redis AOF文件损坏了。
尝试使用sudo systemctl start redis-server
启动服务时,我们会收到以下日志:
读取仅附加文件的错误文件格式:备份您的 AOF文件,然后使用./redis-check-aof --fix
显然这看起来像是一个简单的错误修复,只需执行./redis-check-aof --fix <filename>
。
除非我对该文件的位置知之甚少。
我已经在Github讨论中搜索了这个问题,但遗憾的是没有人为我提供该文件的位置:
持久性文档也没有提到此文件的位置:
这些是我运行Redis的系统的规格:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
此文件位于何处?
答案 0 :(得分:5)
您有两种选择:
redis.conf
。 dir
和appendfilename
配置指定AOF
文件的目录和文件名。redis-cli
连接到Redis,并使用CONFIG GET
命令获取dir
配置,即CONFIG GET dir
。 AOF
文件应位于此目录下。答案 1 :(得分:1)
路径通常为/var/lib/redis/appendonly.aof
,您将需要运行sudo redis-check-aof --fix /var/lib/redis/appendonly.aof
答案 2 :(得分:1)
如果您使用docker并将卷附加到/ data,则appendonly.aof的路径将为:/data/appendonly.aof
答案 3 :(得分:1)
就我而言,我使用的是 docker。我在没有使用 --appendonly yes
的情况下启动了 redis 服务器,然后它启动时没有任何问题。然后像@for-stack 所说的那样运行 CONFIG GET dir
并得到这个输出:
1) "dir"
2) "/data"
于是我在 /data 路径下检查并找到了文件 appendonly.aof
然后我运行 /usr/local/bin/redis-check-aof --fix /data/appendonly.aof
来解决这个问题。