欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

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

发布时间:2025/3/11 数据库 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 MySQL文件后_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)

总结

以上是生活随笔为你收集整理的MySQL文件后_MySQL误删除文件后,如何恢复的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。