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

要看版本。高于5.5的,直接创建个结构一样的数据库,然后discard掉相应表空间之后,再import ,低版本的,就创建个结构一样的数据库,然后查看对应表的表空间id,没记错的话,应该是37-38字节,然后把你保存的ibd文件的37-38字节表空间id改成和前面一样的,然后把ibd盖过去,就可以了。

例如说 现在要恢复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,再创建表导入。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值