MySQL之——崩潰-修復損壞的innodb:innodb_force_recovery

由於windows服務器經常死機,導致有時mysql啓動不了,查看mysql-error.log發現以下錯誤信息:

2019-08-27T20:00:58.495267+08:00 0 [ERROR] InnoDB: Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB log files. Please refer to http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html for information about forcing recovery.
2019-08-27T20:00:58.495518+08:00 0 [ERROR] InnoDB: Page [page id: space=0, page number=266] log sequence number 8181701917 is in the future! Current system log sequence number 8181692811.

 

直接上解決方案:

1、配置my.cnf

配置innodb_force_recovery = 1或2——6幾個數字,重啓MySQL

2、導出數據腳本

mysqldump -uroot -p123456 test > test.sql
導出SQL腳本。或者用Navicat將所有數據庫/表導入到其他服務器的數據庫中。
注意:這裏的數據一定要備份成功。然後刪除原數據庫中的數據。

3、刪除ib_logfile0、ib_logfile1、ibdata1

備份MySQL數據目錄下的ib_logfile0、ib_logfile1、ibdata1三個文件,然後將這三個文件刪除

4、配置my.cnf

將my.cnf中innodb_force_recovery = 1或2——6幾個數字這行配置刪除或者配置爲innodb_force_recovery = 0,重啓MySQL服務

5、將數據導入MySQL數據庫

mysql -uroot -p123456 test < test.sql; 或者用Navicat將備份的數據導入到數據庫中。

如果在導入數據過程中發生tablespace不存在的問題,請刪除data目錄相應database下的文件。


此種方法下要注意的問題:
  1、ib_logfile0、ib_logfile1、ibdata1這三個文件一定要先備份後刪除;
  2、一定要確認原數據導出成功了
  3、當數據導出成功後,刪除原數據庫中的數據時,如果提示不能刪除,可在命令行進入MySQL的數據目錄,手動刪除相關數據庫的文件夾或者數據庫文件夾下的數據表文件,前提是數據一定導出或備份成功。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章