mysql ibdata1 ib_logfile的恢復

wang_0720發表於2013-11-06
mysql如果使用的是innodb儲存引擎,那麼在mysql的DATA_HOME(一般是/var/lib/mysql)下,會有幾個很重要的檔案,ibdata1(資料檔案)存放mysql的資料及索引,ib_logfileN(redo log事務日誌檔案)。如果誤刪除了這幾個檔案中的某個或某幾個,下面的方法可以教你恢復。 

    誤刪除檔案後,可以發現mysqld程式仍然在執行,這時千萬別停掉mysql!!!要做的有如下幾件事:
1 FLUSH TABLES WITH READ LOCK;
2 檢視mysql pid
ps -ef |grep mysql|grep -v root|awk '{print $2}'
或者
[root@rac1 mysql]# netstat -tnulp|grep 3306
tcp        0      0 0.0.0.0:3306               0.0.0.0:*                  LISTEN      7091/mysqld
7091就是我要取的mysql pid
3 檢視檔案控制程式碼
[root@rac1 mysql]# ll /proc/7091/fd|egrep 'ib_|ibdata1'
lrwx------ 1 root root 64 Sep 10 11:25 10 -> /var/lib/mysql/ib_logfile1
lrwx------ 1 root root 64 Sep 10 11:25 11 -> /var/lib/mysql/ib_logfile2
lrwx------ 1 root root 64 Sep 10 11:25 4 -> /var/lib/mysql/ibdata1
lrwx------ 1 root root 64 Sep 10 11:25 9 -> /var/lib/mysql/ib_logfile0
[root@rac1 mysql]#
查詢顯示的10 11 4 9就是對應的mysql檔案。
4 把這些檔案copy到mysql的DATA_HOME下並改屬性
cp /porc/7091/fd/10 /var/lib/mysql
cp /porc/7091/fd/11 /var/lib/mysql
cp /porc/7091/fd/4 /var/lib/mysql
cp /porc/7091/fd/9 /var/lib/mysql
chown mysql.mysql -R /var/lib/mysql
5 重啟mysql

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27181165/viewspace-775841/,如需轉載,請註明出處,否則將追究法律責任。

相關文章