利用frm和idb文件恢复mysql数据

.frm和.idb文件是Mysql数据库使用InnoDB数据库引擎时产生的两个文件。
~表名.frm文件存储的相关表的表结构、索引等元数据
~表名.idb文件存储的相关表中的数据记录。

第一步:下载安装MYSQL Utilities工具

官方下载地址:MySQL :: Download MySQL Utilities (Archived Versions)

第二步:使用.frm文件恢复表结构

打开cmd,使用cd切换到.frm文件所在路径。例如:admin.frm文件在D:mysql-5.7.31-winx64/data/数据库名文件中。则需要cd /d mysql-5.7.31-winx64/data/数据库名文件夹中。

然后,使用mysqlfrm --diagnostic ./文件名.frm命令来导出建表的sql语句(红色方框里的就是)

mysqlfrm --diagnostic ./文件名.frm #在cmd中执行

 复制红框内的sql语句,使用建表sql语句在Mysql数据库中创建相应的表。

然后在最后一行(分号内)

添加下面参数

ROW_FORMAT=COMPACT

同时,因为row_format=compact状态下,字段长度太长的话,在mysql中使用用该语句创建表格时,会报错,因此需修改语句里面varchar()括号内的数值,将其改小直至不报错。

错误代码:1071  Specified key was too long;

如果发现报错无法读取.frm文件,则需要用管理员身份运行cmd后操作。

第三步:使用.idb文件恢复表中的记录

首先,将刚才创建的表的表空间卸载(删除.idb文件),执行完下面的这条命令之后将会自动删除该表的.idb文件。

alter table 表名 discard tablespace; --在Mysql中执行

然后,将需要恢复的.idb文件拷贝到刚才创建的数据表的 表名.frm文件所在的文件夹中(一般是在数据安装路径\data\数据库名 文件夹,在这个文件中可以看创建的表的.frm文件就对了)。

最后,使用下面的命令将复制的.idb文件导入到创建的表中。

alter table 表名 import tablespace; --在mysql中执行

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值