简介
本文档描述CyberVision Center中Redis服务失败问题的可能原因。
问题
在某些情况下redis.service
,CyberVision Center上的可以处于故障状态。此服务的故障还可能导致其他服务(如marmotd和后端)发生故障。
不能正常启动redis.service
,一个可能的原因是Redis Append Only File(AOF)处于损坏状态。
Redis AOF是一种持久化机制,允许Redis服务器跟踪并记录服务器上执行的每个命令。 使用AOF,Redis会按顺序附加在服务器上执行的每个命令。这样可以防止由于不正确的命令导致的任何数据丢失。
解决方案
要确认服务是否因以下上下文而失败:
- 使用
systemctl
,通过CLI或诊断包中的文件检查Redissystemctl
service的状态:
root@Center-4:~# systemctl --failed
* redis.service loaded failed failed Redis data structure
- 使用以下命令
redis.service
,或诊断包中的日志查journal_redis
看日志中是否存在特定错误:
root@Center-4:~# journalctl -u redis.service
2023-08-08T09:07:59+0000 center redis[973]: Bad file format reading the append only file: make a backup of your AOF file, then use ./redis-check-aof --fix
2023-08-08T09:07:59+0000 center systemd[1]: redis.service: Main process exited, code=exited, status=1/FAILURE
2023-08-08T09:07:59+0000 center systemd[1]: redis.service: Failed with result 'exit-code'.
2023-08-08T09:07:59+0000 center systemd[1]: Failed to start Redis data structure server.
journal_error log:
2023-08-08T09:07:59+0000 center systemd[1]: Failed to start Redis data structure server.
2023-08-08T09:07:59+0000 center systemd[1]: Failed to start Redis data structure server.
- 要解决此问题,此过程将进行AOF文件备份,对损坏的文件执行修复,然后重新启动Center:
root@Center-4:~#sudo cp /data/redis/appendonly.aof /data/redis/appendonly.aof.bak
root@Center-4:~#sudo redis-check-aof --fix /data/redis/appendonly.aof
root@Center-4:~#reboot
- 重新启动后,验证
redis.service
处于活动状态。
root@Center-4:~# systemctl status redis.service
● redis.service - Redis data structure server
Loaded: loaded (/lib/systemd/system/redis.service; enabled; vendor preset: enabled)
Active: active (running)