說明:
線上的一台MySQL數據庫服務器突然斷電,造成系統故障無法啟動,重新安裝系統後,找到之前的MySQL數據庫文件夾。
問題:
通過復制文件的方式對之前的MySQL數據庫進行恢復,發現在程序調用時找不到數據庫中的表,造成網站無法正常訪問。
分析:
1、MySQL數據庫,使用拷貝文件方式來恢復數據庫,只支持MyISAM引擎;
2、如果有數據庫或數據表使用了InnoDB引擎,恢復的時候,必須連同MySQL數據庫目錄下的ibdata1文件一起拷貝過來。
解決辦法:
1、停止MySQL服務
service mysqld stop
2、找之前的備份數據庫文件
cd /home/mysql_bak/mysql/ #進入MySQL備份目錄
ibdata1 #需要此文件
3、拷貝ibdata1文件到數據庫相應目錄
cp /home/mysql_bak/mysql/ibdata1 /usr/local/mysql/data/ibdata1 #拷貝文件到現在的數據庫目錄
chown mysql.mysql /usr/local/mysql/data/ibdata1 #設置權限位mysql用戶和用戶組
rm /usr/local/mysql/data/ib_logfile0 #刪除現有日志文件,否則啟動MySQL失敗
rm /usr/local/mysql/data/ib_logfile1 #刪除現有日志文件,否則啟動MySQL失敗
4、啟動MySQL
service mysqld start
故障解決
此時頁面已正常打開。
ibdata1作用:InnoDB引擎下的表數據文件。
建議:數據庫一定要做好備份,恢復數據最好使用.sql備份文件導入。
至此,MySQL數據庫InnoDB引擎下服務器斷電數據恢復教程完成。