您好,登錄后才能下訂單哦!
記一次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
在[mysqld]添加:
#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命令也可以在數據庫故障的時候用來嘗試修復數據庫
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。