錯誤重制:
使用rm -f ib*删除資料檔案和重做日志檔案。
這時mysql程序還存在,mysql還能正常使用。
檔案恢複:
1:查找mysqld的程序号。
# netstat -ntpl | grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 12147/mysqld
2:利用程序号查找如下檔案。
# ll /proc/12147/fd | egrep 'ib_|ibdata'
lrwx------ 1 root root 64 Jun 18 09:23 10 -> /mydata/ib_logfile1 (deleted)
lrwx------ 1 root root 64 Jun 18 09:23 4 -> /mydata/ibdata1 (deleted)
lrwx------ 1 root root 64 Jun 18 09:23 9 -> /mydata/ib_logfile0 (deleted)
3:添加鎖,使資料庫沒有寫入操作。
sql> flush tables with read lock;
4:輸入以下指令,讓髒頁盡快刷入到磁盤。
sql> set global innodb_max_dirty_pages_pct=0;
5:檢視innodb狀态資訊,确認髒頁已經刷入磁盤,比對如下數值:
6:确認完後,就可以進行恢複操作了,把之前記錄的删除檔案複制到原來目錄下。
# cd /proc/12147/fd
# cp 10 /mydata/ib_logfile1
# cp 4 /mydata/ibdata1
# cp 9 /mydata/ib_logfile0