MySQL 是一款流行的關系型數據庫管理系統,但在某些情況下,用戶可能會遇到 MySQL 啟動失敗的問題,這時可能會造成數據的丟失。下面介紹如何在 MySQL 啟動不了時恢復數據。
第一步:找到 MySQL 日志文件
# Linux 系統下 cd /var/log/mysql/ # 找到錯誤日志文件 nano error.log # Windows 系統下 cd C:\Program Files\MySQL\MySQL Server 5.7\data # 找到錯誤日志文件 notepad error.log
第二步:分析錯誤日志文件
# 打開 error.log 文件后,找到最新的 ERROR,查看具體錯誤信息,如 2019-07-10T00:12:15.330068Z 0 [ERROR] InnoDB: Then remove or rename the ibdata1 checkpoint file 2019-07-10T00:12:15.330068Z 0 [ERROR] InnoDB: InnoDB: Plugin initialization aborted with error Generic error 2019-07-10T00:12:15.330068Z 0 [ERROR] Plugin 'InnoDB' init function returned error. 2019-07-10T00:12:15.330068Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 2019-07-10T00:12:15.330068Z 0 [ERROR] Failed to initialize plugins. 通過分析錯誤信息,可以得知是 InnoDB 存儲引擎初始化失敗,需要恢復數據。
第三步:備份 MySQL 數據庫文件
# 先備份 MySQL 數據庫目錄下的所有文件,如 /var/lib/mysql 或 C:\Program Files\MySQL\MySQL Server 5.7\data,以防數據丟失。
第四步:恢復數據
# 執行以下命令,啟動 MySQL 數據庫 # Linux 系統下 systemctl start mysql # Windows 系統下 net start mysql # 如果 MySQL 無法正常啟動,可以嘗試恢復數據 # Linux 系統下 cd /var/lib/mysql/ mv ibdata1 ibdata1.bak mv ib_logfile1 ib_logfile1.bak mv ib_logfile0 ib_logfile0.bak systemctl start mysql # Windows 系統下 cd C:\Program Files\MySQL\MySQL Server 5.7\data rename ibdata1 ibdata1.bak rename ib_logfile1 ib_logfile1.bak rename ib_logfile0 ib_logfile0.bak net start mysql # 上述命令將原有的 ibdata1、ib_logfile0、ib_logfile1 文件備份并重命名,啟動 MySQL 后將自動生成新的 ibdata1、ib_logfile0、ib_logfile1 文件,從而恢復數據。
總之,MySQL 啟動不了時要冷靜分析錯誤日志,備份好數據,再嘗試恢復數據。