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
误删除文件后,可以发现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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27181165/viewspace-775841/