MySQL利用frm和idb文件进行数据恢复

当使用InnoDB引擎且innodb_file_per_table=1时,恢复MySQL数据涉及处理.frm和.ibd文件。由于tablespace id不匹配问题,直接拷贝文件通常无效。为恢复数据,需要备份当前ibdata1和相关表文件,替换为待恢复文件,重启MySQL,再导出数据到SQL文件,最后恢复备份文件并重新导入数据。
摘要由CSDN通过智能技术生成

我们知道MySQL中如果用的是MYISAM数据引擎,那么数据很好恢复,只要将相应.frm, .MYD, .MYI文件拷贝过去即可。但是如果是innodb的话,如果开启innodb_file_per_table=1,则每一个数据表都是一个单独的文件,比如User表,则会建立User.frm和User.ibd.


那么直接拷贝这两个文件到新的MySQL数据目录下可以吗,一般来说是不行的,那么什么时候可以呢?只有在你的ibd文件的tablespace id和ibdata1文件中的元信息的tablespace id一致才可以。


那么怎么办呢?根据之前讲的,innodb恢复不了就是因为table space id不匹配导致的。所以我们可以这样做 (以zhc_db数据库为例):

1 首先将当前mysql数据目录下的ibdata1文件和zhc_db下边的frm和ibd文件备份。

2 将之前要恢复的ibdata1和frm和ibd文件拷贝到当前的mysql数据目录下,进行覆盖。注意因为当前数据库可能还有其它数据库和表,所以这一步可能导致其它数据库出现问题。不过没关系,因为我们已经备份了。

3 保险起见,重启一下mysql吧,service mysql r

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值