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

时间:2022-09-20 13:55:00

记一次利用 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文件夹中。此时,连接数据库的时候,提示如下报错:
![这里写图片描述](http://img.blog.csdn.net/20180106232539911?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjI2MDc5NjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
查了一圈,发现可能是mysql的版本不一样的问题,查了一下,确实原来的版本是5.6,我本地的是5.5。因此先把我本地的mysql升级到了5.6版本再打开,不再提示上面的错误。有MYD和MYI后缀名文件的表也可以打得开。但是后缀名是ibd的文件报了表不存在的问题,后面想到了,可能是innodb采用共享的储存模式,因此把ibdata1的文件也下载下来,放到data文件之后,发现可以用了,最终大功告成了。
不过还是提醒大家,做这些操作的时候记得把原有的数据备份一下,在平常的运维过程中也需要养成备份数据库的习惯,这样,才可以有备无患~