问题描述:今天一个同学过来求救,idb文件被误删除了,想要找dba恢复
解决思路:实例在没有重启的状况下可以根据lsof恢复,这也是linux常用文件恢复的方法
恢复步骤(网络上有较多解决思路,这里简单记录,便于下次使用):
1、ps -ef|grep mysqld 找到mysql对应的进程号,这个时候访问出问题最好给mysql加个全局的锁(flush tables with read lock;)
2、lsof|grep deleted|grep *.ibd 看下这个文件还有木有
3、找到这个对应的文件拷贝回去
根据进程号找到目录
cd /proc/123940/fd (ps:123940就是ps -ef|grep mysqld 查到的进程号)
这个时候执行ll会出现文件号指向不同的文件,找到想要恢复的文件cp回去
cp /proc/123940/fd/70 > /data/mysql/data/xxx.ibd
4、修改文件权限到mysql,重启即可