目录

简介

问题

解决方案

简介

本文档描述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)