最新消息:

博客数据丢失反思与mysql数据恢复学习

MySQL数据库 admin 2239浏览 0评论

Mysql数据库有两种不同的引擎:innodb和MyISAM类型。MySQL的数据库文件直接复制便可以使用,但是那是指“MyISAM”类型的表。而“InnoDB”类型的一个表在磁盘上只对应一个“*.frm”文件,不像MyISAM那样还“*.MYD,*.MYI”文件。MyISAM类型的表直接拷到另一个数据库就可以直接使用,但是InnoDB类型的表却不行。

即在data目录下,myisam类型的数据库对应的文件夹下每个表会对应三个文件:*.MYD,*.MYI,*.frm。而innodb类型的数据库对应的文件下每个表只对应一个*.frm文件,即innodb类型的数据库不会将数据保存在相应的文件夹下,所有innodb类型的数据库都将数据保存在data目录下的ibdata1文件中。上述区别导致innodb数据库在不同电脑间直接复制是不行的。

下面讲一下如何将一个Innodb类型的数据库复制到另一台电脑下(可以用于恢复MyISAM数据库):

以恢复wordpress数据库为例:(1)在另一台电脑上新建一个和本机版本一致的Mysql数据库软件作为备份Mysql,并停止其mysql服务;(2)将本机data下的wordpress文件夹复制到备份Mysql的data目录下;(3)复制本机的ibdata1文件替换备份Mysql的ibdata1文件;(4)删除备份Mysql下的ib_logfile0、ib_logfile1两个文件;(5)启动备份Mysql服务,现在在备份Mysql就可以看到wordpress的数据了,数据恢复成功。如果不同于启动MySQL的Windows服 务,查看data文件夹中有个“*.err”错误日志文件,其中会对启动失败的原因有所描述的。

详情参考:

http://blog.zuobus.com/archives/68.html

http://blog.csdn.net/softwave/article/details/6105287

http://hi.baidu.com/du_liang/item/220c7d0bfa632a12addc703b

转载请注明:jinglingshu的博客 » 博客数据丢失反思与mysql数据恢复学习

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. mysql环境:windowsxp mysql5.0.27-community-nt gbk 去年的事情了,易达空间更换服务器,把我的数据表丢失了几个! 原因:技术员是通过复制直接copy数据库文件到另一服务器上的。MyISAM格式的表支持直接copy,但是Innodb表不支持。 庆幸的是ibdata1数据文件还在,数据库名目录下的.frm文件也在。注意:InnoDB表数据一般是存贮在ibdata1这个文件当中,位于C:\Program Files\MySQL Server 5.0\data目录下。 我今天的恢复方法: 1、在另一个电脑上安装一下相同版本的mysql服务器。因为我的数据字符集是gbk,安装mysql的时候选的也是gbk。 2、cmd下:net stop mysql //停止mysql服务。 3、把原来备份好的ibdata1文件拷贝到mysql安装位置的data目录。把原来的数据库目录(如qcmood)也copy到data目录下。 4、把data目录下的ib_logfile0,ib_logfile1这两个文件删除,不然不能重新启动mysql。 5、cmd下:net start mysql //开启mysql服务,然后用mysql的命令行就可以查看恢复的数据了。 注意:通过直接copy的方式转储数据库,只有MyISAM格式的表可以运行,通过phpmyadmin虽然可以看到Innodb表的表名,但是点击表名会出现:#1146 – Table ‘qcmood.user_fbzw’ doesn’t exist,说明数据并不存在。所以Innodb表不能直接copy复制,不过还是有方法的,可查看http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#backing-up。
    admin12年前 (2013-05-30)回复