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

之前由于被黑客入侵,数据库被覆盖,而备份只有残缺的frm和ibd文件,很是苦恼!

百般搜索终于摸索出了解决办法。

  1. 创建同名数据库(例:原数据库名为wp,则新建一个名为wp的数据库);
  2. 然后把.frm文件拷贝到data/数据库名 文件夹下,用于一会恢复表结构;
  3. cd到data/数据库名 目录下,执行以下命令:

    mysqlfrm –server=root:rootpassword@localhost mydb:mytable.frm –port=3307

    注意:rootpassword为数据库密码 如果没有可以不填,mydb为数据库名,mytable为表名,port不能为3306;

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

    此时数据库和表结构已经恢复完毕;如果提示表不存在。则在语句最前面加上drop table if exists mytable;

  5. 删除data目录下wp库的idb文件。
  6. 将原数据库的idb文件复制进去。
  7. 登入mysql数据库,执行以下命令

    ALTER TABLE `数据库名`.`表名` IMPORT TABLESPACE;

至此数据库恢复成功!

发表评论

电子邮件地址不会被公开。