簡介
本檔案將說明CyberVision Center中Redis服務失敗問題的可能原因。
問題
在某些情況下redis.service
,CyberVision Center上的可能會處於失敗狀態。此服務的失敗還可能導致其他服務(如marmotd和後端)關閉。
不能正常啟動redis.service
的一個可能原因是Redis Append Only File(AOF)處於損壞狀態。
Redis AOF是一種永續機制,允許Redis伺服器跟蹤並記錄伺服器上執行的每個命令。 使用AOF,Redis會附加在伺服器上按順序執行的每個命令。這可防止由於不正確的命令導致的任何資料丟失。
解決方案
為了確認服務是否由於所說明上下文而失敗:
- 使用
systemctl
,通過CLI或診斷包中的檔案檢查Redis服務的狀態systemctl
:
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檔案備份,對損壞的檔案執行修復,然後重新啟動中心:
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)