Code Bye

通过.frm和.ibd对mysql数据恢复

   误删了数据库数据,只恢复了.frm和.ibd文件,将文件拷贝到data文件下,生成的表打不开,也没有数据。
报错1146- tableXXX doesn”t exist。求帮助,怎么样恢复原始数据库数据。
解决方案

40

刚好今天也忙,忙到刚才。
例如说 现在要恢复user表
1、先建立和之前user表一样的表结构。就是执行create table user …. ,执行完,数据库目录下就会建立user.ibd文件(当然还有其他的)
2、执行 alter table `user` discard tablespace ; 执行完之后,数据库目录下的user.ibd文件就没了
3、把你备份的ibd放到消失的user.ibd文件那里。
4、给这个文件加权限,全部者mysql ,权限660(你可以参考别的ibd文件全部者和权限设置)
5、执行 alter table `user` import tablespace; 执行完,表数据就可读了,这时候会丢失一些诸如表行记录数等存在系统表里的信息,不过那些信息无所谓。表其实这时候已经可以正常用了。假如不放心,可以导出sql语句或txt,再创建表导入。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明通过.frm和.ibd对mysql数据恢复