Vecloud 发表于 2022-8-9 11:46:56

zimbra服务器故障导致mysql开启失败怎么办?

记一次zimbra服务器故障导致mysql起不来问题
服务器有一天突然访问不了,局域网连接不上,去机房查看,硬盘灯亮着,屏黑的,按电源键没法关机,没办法,只能强制关机了。强制关机后,启动起来,登陆进去看。
zmcontrol status过了好久才出现内容,提示如下:

Unable to determine enabled services from ldap.

Unable to determine enabled services. Cache is out of date or doesn't exist.

经网上查找解决方法:

zmcontrol stop

再zmcontrol start

启动的时候就报错了,好几个服务启动不起来
我就单独一个服务一个服务启动
看启动提示都是提示mysql.service这个服务启动不了
于是我去后台查看mysql报错日志
查看 /opt/zimbra/log/mysql_error.log

发现很多类似出错提示:

Failed to find tablespace for table '"mboxgroup99"."tag"' in the cache. Attempting to load the tablespace with space id 6420

网上查了一下应该是Mysql表空间遭到破坏(应该是强制关机引起的)
于是我就想是否可以通过还原mysql数据库来恢复表空间,因为系统每天有自动备份mysql数据库
但是还原的时候又提示我以下信息:

Table 'xxx' is read only,表只读,网上查了修改目录底下文件夹和文件的权限,可是这些权限本来就没有改,就不需要更改了
网上又找方法,发现可以修改my.cnf配置文件让他强制启动
/opt/zimbra/conf/my.cnf

在添加:

#innodb_force_recovery = 6

#innodb_purge_threads = 1

然后重启mysql.service服务
这回zmcontrol查看各个服务都启动了,个别启动不了的再单独启动,等zmcontrol status查看各个服务都是running的时候再去登陆网页版发送邮件,发现只能发,不能收,还是有问题
又继续在网上查找方法,发现可以利用innochecksum这个工具修复,网上想安装这个工具麻烦,找下/opt/zimbra/common/bin底下居然有自带这个工具,于是用以下命令修复:

/opt/zimbra/common/bin/innochecksum -f /opt/zimbra/db/data/ibdata1

运行完,提示没有-f 这个选项,我就--help查看,没有查看代替-f的参数,后面干脆直接用不带参数的命令:

/opt/zimbra/common/bin/innochecksum /opt/zimbra/db/data/ibdata1

然后把前面my.cnf里面的强制恢复选项取消掉,再zmcontrol restart重启服务,居然启动起来了,发送和接收邮件也可以,不过有个遗憾就是imap服务不能用,后续再研究
PS:zmdbintegrityreport命令也可以在数据库故障的时候用来尝试修复数据库
页: [1]
查看完整版本: zimbra服务器故障导致mysql开启失败怎么办?