1. 程式人生 > 資料庫 >mysql5.7.21啟動異常的修復方法

mysql5.7.21啟動異常的修復方法

一同事反饋有一MySQL例項因為斷電之後,啟動不了。用了innodb_force_recovery=6也無效,於是前往檢視。

排查過程:

最早的啟動資訊裡面,沒有任何報錯,只有一行[ERROR] Aborting提示,如下:

接著同事用了innodb_force_recovery=6的方式,才多出現瞭如下的錯誤提示,但仍無法啟動成功,這個時候,我才決定去看個究竟。

過濾啟動日誌,grep ERROR /data/mysql/3306/mysql_run.err

可以看到,全部報錯主要如下:

MySQL大多數不能啟動的原因,都是系統資料庫的原因,看來這個也不例外。

嘗試使用帶--skip-grant-tables的方式登入系統,竟然成功了。

/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/3306/my.cnf --user=mysql --skip-grant-tables &

緊接著,抓緊對innodb進行檢查,執行:

innochecksum ibdata1

後發現沒有任何輸出。

接著執行mysqlcheck,果然修復一些mysql庫下面的表報錯。之後以正常方式重啟系統,MySQL恢復正常。

mysqlcheck -u root -p --repair -A

總結:

1、MySQL並沒有那麼脆弱,沒必要在損壞的時候就通過備份恢復的方式執行還原,費時費力;

2、啟動過程中,可以通過設定--skip-grant-tables或者設定innodb_force_recovery(這個引數要修改cnf檔案)來讓MySQL跳過一些檢查,使例項成功啟動;

3、啟動之後,可以執行資料備份或者匯出資料,並且嘗試對例項做修復;

4、該例項出現這個問題,懷凝是因為與實時存檔的引數設定不當有關。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。