我必须从 24 小时前的备份中恢复正在运行 cyrus imapd 安装的虚拟服务器。此后,imap 客户端超时,日志中充斥着以下内容:
尾部/var/log/mail.info:
12 月 24 日 20:59:16 h2229778 cyrus/master[3570]: 服务通知 pid 10857 处于 READY 状态: 异常终止
十二月 24 20:59:16 h2229778 cyrus/master[3570]: 进程 10858 已退出,由 11 发出死亡信号
通过 init 脚本重新启动将得到以下结果:
./cyrus-imapd restart
* Restarting Cyrus IMAPd cyrmaster
find: /run/cyrus/lock': No such file or directory
find: /run/cyrus/proc': No such file or directory
行为没有改变。
我找到了很多关于这两句引言的帖子,但似乎没有太多与我的问题相关的内容。不过,我怀疑其中一个 cyrus 数据库被损坏了。
这可能是问题所在吗?
我如何才能确定真正的原因?
如果是数据库问题,我该如何正确恢复它们?
我正在运行 cyrus 2.4.12-2。
非常感谢!
答案1
缺少锁文件表明 cyrus 无法工作,可能是数据库已损坏。
您可以尝试使用以下方法修复数据库:
sudo -u cyrus ctl_cyrusdb -r
它没有显示任何输出,但您可以打开 tail -f 到 syslog 来查看发生了什么。
如果失败,您可以尝试删除 /var/lib/cyrus/db/* 并再次执行相同的命令。
最好将所有用户备份到一个文本文件中,您可以使用以下命令执行此操作:
sudo -u cyrus /usr/sbin/ctl_mboxlist -d > /tmp/mboxlist.txt
您可以稍后使用以下命令从此文件重新创建用户数据库:
cat /root/mboxlist.txt | sudo -u cyrus /usr/lib/cyrus/bin/ctl_mboxlist -u
注意:所有路径均适用于 Debian,在其他 Linux 发行版中可能有所不同。