一同事反饋有一MySQL實例因為斷電之后,啟動不了。用了innodb_force_recovery=6也無效,于是前往查看。
排查過程:
最早的啟動信息里面,沒有任何報錯,只有一行[ERROR] Aborting提示,如下:

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

過濾啟動日志,grep ERROR /data/mysql/3306/mysql_run.err
可以看到,全部報錯主要如下:

MySQL大多數(shù)不能啟動的原因,都是系統(tǒng)數(shù)據(jù)庫的原因,看來這個也不例外。
嘗試使用帶--skip-grant-tables的方式登錄系統(tǒng),竟然成功了。
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/3306/my.cnf --user=mysql --skip-grant-tables
緊接著,抓緊對innodb進行檢查,執(zhí)行:
innochecksum ibdata1
后發(fā)現(xiàn)沒有任何輸出。
接著執(zhí)行mysqlcheck,果然修復一些mysql庫下面的表報錯。之后以正常方式重啟系統(tǒng),MySQL恢復正常。
mysqlcheck -u root -p --repair -A
總結:
1、MySQL并沒有那么脆弱,沒必要在損壞的時候就通過備份恢復的方式執(zhí)行還原,費時費力;
2、啟動過程中,可以通過設置--skip-grant-tables或者設置innodb_force_recovery(這個參數(shù)要修改cnf文件)來讓MySQL跳過一些檢查,使實例成功啟動;
3、啟動之后,可以執(zhí)行數(shù)據(jù)備份或者導出數(shù)據(jù),并且嘗試對實例做修復;
4、該實例出現(xiàn)這個問題,懷凝是因為與實時存盤的參數(shù)設置不當有關。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- MySQL 查看鏈接及殺掉異常鏈接的方法
- MySQL手動注冊binlog文件造成主從異常的原因
- MySQL數(shù)據(jù)庫連接異常匯總(值得收藏)
- mysql innodb 異常修復經驗分享
- MySQL定義異常和異常處理詳解
- MySQL存儲過程中一些基本的異常處理教程
- 分析一個MySQL的異常查詢的案例
- MySQL異常處理淺析
- 分析MySQL拋出異常的幾種常見解決方式