查看文章
 
通过直接复制frm文件以实现恢复/复制innodb数据表
2009-05-14 18:37

在Mysql5.0的使用过程中,经常会出现一些莫名奇妙的问题,导致服务无法启动,只好重新安装MySQL,但是这样原来的数据库就会丢失了。
听说MySQL的数据库文件直接复制便可以使用,但是根据查询,那是指原来的一种“MyISAM”类型的表。
我通常都是使用MySQL-Front直接创建表,默认是“InnoDB”类型,这种类型的一个表在磁盘上好像只对应一个“*.frm”文件,不像MyISAM那样还“*.MYD,*.MYI”文件。
MyISAM类型的表我试过,好像直接拷到另一个数据库就可以直接使用,但是InnoDB类型的表却不行。
在网上搜索了很多办法:
一种说同时拷贝“ibdata1”等等文件,但是这样却造成新的数据库无法启动。
一种好像说使用“truncate table 表名”这样的命令来恢复表结构,也不成功
还有说用什么“mySQLdump.exe”,但是这种方法的前提好像需要数据库是好的,并且能够正常启动运行,而我现在是数据库坏掉了,只剩下表文件……

被这个问题真是搅的头疼,希望有经验的高手能给出一个彻底的解决方法:
就是,我现在手头上只有InnoDB类型的frm表文件的话,如何能够将表恢复到一个新的数据库中?还有能恢复数据更好了!


  
   编程论坛 1 个网友回答:
我以前MySQL坏了,重新安装之后,发现所有旧数据库都没有丢失阿,都可以用呢
应该只有Mysql中的mySQL数据库被重新覆盖了


  
   编程论坛 2 个网友回答:
把DATA目录下的Mysql目录改名,然后重新安装MYSQL。

之后你就知道怎么做了。

  
   编程论坛 3 个网友回答:
把重新安装的新Data文件夹删除掉
之后再把原来的Data文件夹名改回来
呵呵,没试过,应该可行

  
   编程论坛 4 个网友回答:
谢谢各位回复。
大概找到一种解决方法了,就像我问题中提到的网上搜的第一种方法那样:
同时拷贝innodb数据库表“*.frm”文件和innodb数据“ibdata1”文件到合适的位置。启动MySQL的Windows服务,如果不能成功的话,查看data文件夹中有个“*.err”错误日志文件,其中会对启动失败的原因有所描述的。比如我碰到过两种错误原因。
一种是类似这样的错误信息:

INIFile code
InnoDB: Error: log file .\ib_logfile0 is of different size 0 10485760 bytes
InnoDB: than specified in the .cnf file 0 25165824 bytes!

这是因为在mySQL配置文件中配置的日志文件大小与实际的不相符。
解决方法是直接删掉旧的“ib_logfile0”等日志文件,重启MySQL后会自动生成新的日志文件的。
另一中则是这样的错误信息

INIFile code
InnoDB: Operating system error number 5 in a file operation.
InnoDB: The error means mySQLd does not have the Access rights to
InnoDB: the directory. IT may also be you have created a subdirectory
InnoDB: of the same name as a data file.
InnoDB: File name .\ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.

经检查原来是“ibdata1”文件在复制的过程中不知怎的被加上只读属性了。
解决方法是去掉“ibdata1”文件的只读属性便可。

上面的方法好像只适用于把旧的innodb数据库拷到一个还没有innodb数据的新数据库中。
如果目标数据库中已经存在含有数据的“ibdata1”等文件,不要用什么mySQLdump的话,不知还有没有什么简便方法来合并新旧数据?

  
   编程论坛 5 个网友回答:
之前做好备份比啥都强

  
   编程论坛 6 个网友回答:
先留着你的 frm 文件不要动.在新的mysql里建一个数据库,然后分别手工建立你要的那些表,结构随便弄.这样在 Mysql\data文件夹就有了一堆和你手头保存的frm对应文件.把你保留的文件覆盖这些新的frm 重启 mySQL 服务 这样你保留的数据库结构就出来了.只有数据结构没有数据.


类别:php+mysql||添加到搜藏 |分享到i贴吧|浏览(3608)|评论 (0)
 
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu