利用mysql物理文件(*.ibd,*.frm)回复数据

本文记录了一次遭受勒索病毒攻击后,如何通过恢复MySQL数据库物理文件实现数据救赎的过程。病毒加密了大部分文件,但庆幸的是MySQL的物理文件未受影响。通过下载服务器上的数据库文件到本地,新建数据库,分离并导入表空间,成功恢复了数据。作者强调了数据库备份的重要性,并提出使用.idb文件和表结构备份的策略。
摘要由CSDN通过智能技术生成

前言

服务器突然连接不上,联系云客服,云客服发现是重启卡住了,经过他们排查,是服务器中了勒索病毒,该病毒就是在服务器上执行脚本,把文件全部进行加密,然后友好的给你留下一个文件。(QTMD)

1639727550502_7016

​ 经过排查,我这台服务器影响的有两个服务,一个tomcat服务,一个springboot服务和一个msyql数据库。服务器上的mysql运行文件都被加密过,想重新启动是不可能了,还好最后发现,mysql数据的物理文件没有被处理过(看来勒索病毒处理的还是有漏洞呀),看来数据恢复还有希望;另外一个服务上传的图片全部被加密,这个也是没办法恢复了。

恢复mysql数据

  1. mysql本地文件,大概是这个样子,一个库一个目录,目录下面就是该库的物理文件

    • db.opt存的信息是该库的字符集和字符集排序规则
    • *.frm是表结构信息
    • *.ibd是表数据信息
    • 这个接口是innodb引擎的接口,myisam结构好像不太一致,想具体了解的自行了解。
  2. 将所有文件下载到本地。

  3. 自己本机mysql上创建一个新的库

  4. 我是有测试环境,所以直接把测试环境的表结构同步过来。

  5. 打开本机mysql新库的物理地址,可以看到目录和服务器上全部一致。

  6. 分离表空间,使当前.ibd的数据文件和.frm分离。

    ALTER TABLE 表名 DISCARD TABLESPACE;
    
  7. 这时候查看本地目录,该表的ibd文件已经成自动删除

  8. 将服务器上下载的idb文件复制过来,重新建立idb的链接。(要注意复制过来之后权限和用户组要和之前保持完全一致)

    ALTER TABLE 表名 IMPORT TABLESPACE;
    
  9. 至此,该表的数据已经回复完成,多表可利用excel批量处理

经验与反思

  1. 数据库和图片的静态文件尽量少放在服务器上,rds防护肯定比自己服务器上搭建msyql好点。(数据更安全点)
  2. 这次被攻击也不知道是不是因为log4j2漏洞导致(持怀疑态度,毕竟是漏洞爆出之后,一周左右被攻击,而且服务确实用了log4j2)
  3. 数据库备份可以利用*.idb文件和表结构进行备份(至少我觉得可行,主要是重新建立idb链接的速度很快。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值