mysql数据库被破坏,只剩下ibd文件时如何恢复

在刚开始接触服务器的时候,天真的以为病毒攻击+勒索这种事情离我们相当远,但真当自己服务器被病毒攻击时欲哭无泪,其中有一种情况就是mysql数据库被破坏,只剩下ibd文件,也就是表结构丢失了以后怎么处理。

mysql常用引擎有两种,myisam和innodb。myisam备份容易,直接备份.frm,.MYD,.MYI文件,然后再复制粘贴到目标数据库文件夹即可。但是innodb则不可以,即使你把.frm,.ibd文件放到目标数据库文件夹,也不是查看该数据表,原因是因为.ibd文件含有tablespace id与你要使用.frm不一致;

网上找了很多方法,特别在tablespace id这个处理上特别难,也特别复杂;

首先重要的事情说三遍:确认自己本地mysql版本,必须要大于5.7版本,大于5.7,大于5.7,否则你会发现tablespace id真他么坑!5.7以上就不用管了!

1、使用phpStudy安装新的php和mysql环境。(此处用phpStudy是因为搭建环境快捷,且可以一个系统可装多个mysql环境)

如果你安装的phpstudy自带的mysql没有达到5.7,可以选择升级,攻略如下:

https://www.cnblogs.com/GreenForestQuan/p/6496431.html

2、配置mysql配置

设置mysql配置文件,my.ini 

设置错误日志 log-err=”D:/phpStudy/MySQL/data/error.err” 

设置innodb独立空间 innodb-file-per-table=1 

重启mysql服务

3、建立同名同结构的空表

首先我相信你肯定有过备份过的数据库(只要表结构没有修改过就可以直接使用,不需要自己新建),否则就需要在新的mysql中建立数据库,建立数据表,该数据表应与需恢复的数据表结构和表名一致。 
比如bd文件为:user.ibd ,而创建的数据表为:user

另:该表无需有数据

4、分离表结构

分离数据表的数据和结构:ALTER TABLE members DISCARD TABLESPACE; 

此时我们会看到该数据表的ibd文件消失了

把要恢复的ibd文件复制到新的数据表文件夹中

5、表结构建立联系

使用:ALTER TABLE members IMPORT TABLESPACE;来建立关系。

就这么简单,=。=!


你可能感兴趣的:(mysql数据库被破坏,只剩下ibd文件时如何恢复)