如何使用frm和ibd文件修复mysql数据

我本地安装的mysql起不起来了,原因不明,估计是有一张太大了,超过了16G。

尝试了各种办法,包括重新安装数据库之类,但是不管怎么样,一定要先把数据先保存好。

我的是Mac,所以数据已开始在 /usr/loal/var/mysql中,Windows的位置一定要查清楚,是一个data文件夹。

然后发现里面是一堆的frm和ibd。

因为最开始就崩溃了,所以直接使用上一层的ibdata1文件修复是无效的。

 

然后下面是真正的干货:

1、新建一个数据库

2、用文本编辑器打开frm文件(建议用windows下用emeditor等编辑器打开,在mac打开略麻烦)

3、文件里有很多乱码,但是无所谓,依然可以看到里面的字段有哪些

4、在数据库里新建数据表,然后按次序新增字段,按表的同名保存数据表

5、停止mysql服务(windows里是找到服务,然后停止;mac下是使用mysql.server stop,多运行几次才行)

6、将数据文件夹的frm文件覆盖新生成的frm文件

7、启动mysql

8、点击设计该数据表,发现索引、类型、长度之类的都恢复了

9、使用 show create table指令导出建表语句

10、新建要恢复的数据库

11、使用语句创建表

12、执行 alter table {表名} discard tablespace;

13、将要恢复的ibd文件复制进要恢复的数据库的目录

14、执行 alter table 表名 import tablespace;

15、执行后,刷新数据库,发现表出来了,双击后就能正常读取数据。

16、如果有多张表,循环执行2-15步骤即可

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值