记一次利用 idb文件和frm文件还mysql数据

本文记录了一次通过.idb和.frm文件恢复MySQL数据的过程。讨论了MyISAM和InnoDB存储引擎的区别,以及在不同版本MySQL间迁移数据时遇到的问题和解决方法,强调了数据库备份的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记一次利用 idb文件和frm文件还mysql数据

在部署环境的时候,不小心将原有的mysql卸载掉了,幸好保留了原有数据库的data目录,里面包含了几种类型的数据,在网上查找了相应的说明,下面po处理和大家分享一下:

1.后缀名为.frm的文件:这个文件主要是用来描述数据表结构和字段长度灯信息
2.后缀名为.ibd的文件:这个文件主要储存的是采用独立表储存模式时储存数据库的数据信息和索引信息;
3.后缀名为.MYD(MYData)的文件:从名字可以看出,这个是存储数据库数据信息的文件,主要是存储采用独立表储存模式时存储的数据信息;
4.后缀名为.MYI的文件:这个文件主要储存的是数据库的索引信息;
5.ibdata1文件:主要作用也是储存数据信息和索引信息

从上面可以看出,.ibd储存的是数据信息和索引信息,ibdata1文件也是存储数据信息和索引信息,.MYD和.MYI也是分别储存数据信息和索引信息,那他们之间有什么区别呢?
主要区别是再于数据库的存储引擎不一样,如果储存引擎采用的是MyISAM,则生成的数据文件为表名.frm、表名.MYD、表名的MYI;而储存引擎如果是innoDB,并且采用独立储存的模式,生成的文件是表名.frm、表名.ibd,如果采用共存储模式的,数据信息和索引信息都存储在ibdata1中;
接下来,就来到关键的步骤了,因为在linux上直接将data文件夹复制到新装的mysql的data文件夹没有起左右,因此选择将data文件夹下载到了线下,打算用windows环境来操作,完成之后再导回线上。
我的做法是这样的,我直接把下载好的data里面的数据库文件放在本地运行环境的mysql文件夹里面的data文件夹中。此时,连接数据库的时候,提示如下报错:
这里写图片描述
查了一圈,发现可能是mysql的版本不一样的问题,查了一下,确实原来的版本是5.6,我本地的是5.5。因此先把我本地的mysql升级到了5.6版本再打开,不再提示上面的错误。有MYD和MYI后缀名文件的表也可以打得开。但是后缀名是ibd的文件报了表不存在的问题,后面想到了,可能是innodb采用共享的储存模式,因此把ibdata1的文件也下载下来,放到data文件之后,发现可以用了,最终大功告成了。
不过还是提醒大家,做这些操作的时候记得把原有的数据备份一下,在平常的运维过程中也需要养成备份数据库的习惯,这样,才可以有备无患~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值