天天看點

mysql誤删除InnoDB資料檔案恢複

錯誤重制:

 使用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狀态資訊,确認髒頁已經刷入磁盤,比對如下數值:

mysql誤删除InnoDB資料檔案恢複
mysql誤删除InnoDB資料檔案恢複
mysql誤删除InnoDB資料檔案恢複

6:确認完後,就可以進行恢複操作了,把之前記錄的删除檔案複制到原來目錄下。

# cd /proc/12147/fd 
# cp 10 /mydata/ib_logfile1
# cp 4 /mydata/ibdata1
# cp 9 /mydata/ib_logfile0      

繼續閱讀