加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据

发布时间:2020-12-12 03:09:22 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据》要点: 本文介绍了MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据,希望对您有用。如果有疑问,可以联系我们。 记录通过.frm和.ibd文件恢复数据到当地 .frm文件:保存了每个表的元数据

《MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据》要点:
本文介绍了MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据,希望对您有用。如果有疑问,可以联系我们。

MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据

记录通过.frm和.ibd文件恢复数据到当地

.frm文件:保存了每个表的元数据,包含表结构的定义等;

.ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索引的文件.

以actclss表为例,布局如下

MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据

1、安装相同版本的mysql;

2、找回表布局(若有表布局,直接导入表即可)

  • 建立同名的表(InnoDB),随意一个字段即可

MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据

  • 关闭mysql服务,用必要恢复的.frm文件覆盖新生成的.frm文件.接着修改my.ini配置innodb_force_recovery = 6进入恢复模式.启动mysql.

MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据

  • 启动mysql,desc actcalss.我这里直接出现了表布局.若没有,查询日志,会提示该表列数.注释innodb_force_recovery = 6,建立相同列数的表.重复以上步骤,会得到表布局.

  • 导出布局,删除表,导入表布局.

3、.ibd文件包括tablespace id,所以需要修改恢复数据.ibd文件的tablespace id和新建立的相同.可使用winHex(编辑16进制).打开新建的.ibd文件,得到tablespace id.

MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据

4、打开需恢复的.ibd文件,修改为 00 03.

5、停止mysql服务,保证innodb_force_recovery = 6.替换.ibd文件.启动mysql.数据和布局都恢复了.可以导出数据和布局.

注意:

1、数据量大时,查询时mysql会异常停止服务,可修改my.ini配置或使用程序分批导出;

2、.ibd文件过大时,winHex修改文件后无法保留,此时可使用linux的vim进行16进制编辑和保留.

  • vim actcalss.ibd -b 二进制的方式打开 (文件过大时,需耐心等待一会儿)

MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据

  • 在vim模式下,输入 :%!xxd 进行16进制编纂

MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据

  • 编纂完后,使用 :%!xxd -r 转换为二进制

  • :wq!保留即可


· 学IT,就来中公优就业:http://www.ujiuye.com/

· 2017年【中公教育】特别推出2017年就业促进计划,500万就业基金助你成为IT达人

详情请戳http://www.ujiuye.com/zt/jycj/?wt.bd=bgz

· 什么?海量IT学习材料白给你都不要?别想了,加群抢:584539956

编程之家PHP培训学院每天发布《MYSQL INNODB引擎下:根据.frm和.ibd文件恢复表结构和数据》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读