mysql——在没有ibdata1文件的情况下用*.frm和*.ibd文件恢复数据库

昨天同学问我阿里云上的数据库被盗了 只留下了一个QQ号是不是被盗了,辛辛苦苦手敲的化学相关的知识库就这样没了;然后告诉我之前保留过两个文件(frm和ibd),然后就百度、Google…etc;数据库恢复成功 哈哈!!!


切记 恢复之前先把备份好的frm和ibd文件拷贝到别的文件夹做好备份,免得一次不成功改写了文件!
  1. 安装MySQL Utilities管理工具,可在官网下载;
  2. 创建同名数据库;(创建数据库之前如果show databases命令还能查到目标数据库,可以直接删除data目录下的该数据库文件夹);
  3. 然后把.frm文件拷贝到data/数据库名 文件夹下,用于一会恢复表结构
  4. cd到data/数据库名 目录下,执行以下命令
mysqlfrm --server=root:rootpassword@localhost mydb:mytable.frm --port=3307
注意:rootpassword为数据库密码 如果没有可以不填,mydb为数据库名,mytable为表名;


5.执行后稍等片刻就会在命令行打印出创建表的sql语句,然后复制出来利用sql管理工具执行去创建表(如果执行之前数据库中已经存在表则先删除此数据表然后再执行sql语句);此时数据库和表结构已经恢复完毕;

然后利用*.ibd文件恢复数据表里面的数据;步骤如下:

6.登陆数据库执行以下语句:
ALTER TABLE `数据库名`.`表名` DISCARD TABLESPACE;
7.然后把备份的*.ibd文件拷贝到data目录下的数据库文件夹下;登陆数据库然后执行以下命令:
ALTER TABLE `数据库名`.`表名` IMPORT TABLESPACE;

稍等片刻 ok 数据恢复成功!!!

你可能感兴趣的:(mysql)