日期:2014-05-16  浏览次数:20497 次

Mysql InnoDB的数据库的简易恢复

??? 因为我们项目组和别的项目组共享一台测试机,昨天别的组的一个兄弟在升级mysql的时候把我们测试用的mysql给remove掉了,因此今天捣鼓了一下如何恢复和备份mysql,按惯例,记下来,以便以后查看。

??? 使用过mysql的都知道,在mysql中建立任何一张数据表,在其数据目录对应的数据库目录下都有对应的.frm文件,.frm文件时用来保存每个数据库表的元数据(meta)信息,包括表结构的定义等,.frm文件跟数据库存储的引擎无关,也就是任何存储引擎的数据表都必须有.frm文件,命名方式为数据表名.frm,如user.frm,.frm文件可以用来在数据库崩溃时恢复表结构。

??? 这次我们遇到的情况是以前的mysql被remove了,但是幸好数据文件和表文件还在,因此可以根据这些文件将以前的数据

恢复过来。

??? 比如我在mysql上创建了一个数据库myDB,这个数据库里面有3张表,分别叫table1,table2和table3。那么在该mysql的数据文件目录(即dataDir,该目录在.cnf文件中配置)中就有这样的文件目录结构:/myDB/table1.frm,/myDB/table2.frm,myDB/table3.frm。那么我们想恢复这个myDB的数据的话,方法很简单:

??? 第一,在mysql上创建同名的数据库myDB:create database myDB。

??? 第二,然后停止mysql数据库,把上面提到的/myDB文件夹copy到当前mysql的数据文件目录。最后重启mysql就ok了。

?

??? 注意:网上很多文章都提到只要在这个同名的数据库myDB下创建同名的table,然后把上文的table1.frm,table2.frm,table3.frm直接copy到相应的目录就好了。但是我认为这种做法也许在有的情况时能正常恢复数据的,但是在我这次遇到的情况却不能把数据恢复过来,这也是在网上有一大堆文章描述如何从.frm文件恢复数据的方法的情况下,我仍然要在在这类记录下自己是如何恢复数据的原因。

?