MySQL误删除文件后,如何恢复

MySQL在运行中,如果误删除数据文件,只有服务进程没有退出,那么就有办法将其恢复。

首先介绍Linux下lsof:他可以显示打开的文件和网络连接。

其次/proc目录包含了反映内核和进程树的各种文件。/proc/504目录包含的是PID是504的进程信息。通过ps命令查看进程的进程ID。两者结合可以将删除的文件恢复。

1、表文件:

[rdb@localhost yzs]$ ll
total 120
-rw-rw---- 1 rdb rdb 8584 Sep 2 19:43 t2.frm
-rw-rw---- 1 rdb rdb 98304 Oct 6 20:45 t2.ibd

2、将t2.ibd文件删除

[rdb@localhost yzs]$ rm -rf t2.ibd

3、通过lsof命令查看打开t2.ibd的进程号,可以看到是38,并且有(deleted)标记,表示已删除

[root@localhost fd]# lsof | grep t2.ibd
mysqld 5004 rdb 38uW REG 8,2 98304 654903 /home/rdb/data/yzs/t2.ibd (deleted)

4、恢复,38是设备描述符fd

[root@localhost fd]# cp 38 /home/rdb/data/yzs/t2.ibd

5、文件已恢复

mysql> select *from t2;
±—±-----+
| id | id2 |
±—±-----+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 6 | 6 |
| 7 | 7 |
±—±-----+
6 rows in set (0.00 sec)

注:

如果不知道进程ID,可以通过下面命令查看被删除的信息,然后找到对应删除的文件,执行第4步:

[root@localhost fd]# lsof -nP |grep ‘(deleted)’

mysqld 5004 rdb 38uW REG 8,2 98304 654903 /home/rdb/data/yzs/t2.ibd (deleted)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值