网站之家技术交流论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1642|回复: 1

只有.frm文件的MYSQL恢复数据库方法

[复制链接]
发表于 2014-11-1 14:52:49 | 显示全部楼层 |阅读模式
今天一个客户的博客数据库表自己删了,叫帮恢复,我叫技术上服务器上看一下,数据库有备份,可是当恢复过去发现,phpmyadmin显示不了表,而这个数据库其他程序的表能显示,最终发现原来wordpress这程序的数据库是用INNODB,不是用MYISAM,所以博客存储的数据方式是不一样的,数据库结构是存在frm文件,而数据是存在ibdata1文件里面,所以恢复把数据库目录复制过去或单独复制你想要恢复的博客表,博客数据也是显示不出来,phpmyadmin里面也显示不了表,经查资料自己实验出来,最终解决了这个问题。
方法如下:

1、手动在对应数据库目录下创建各个frm文件对应的其他2个文件扩展,.MYI和.MYD
   如数据库目录下是wp_user.frm那就再创建2个文件为wp_user.MYI与wp_user.MYD这2个文件
2、然后最好把INNODB引擎改成MYISAM引擎,免的下次再出来,可以通过phpmyadmin把每一个表的引擎改成MYISAM,并且再用phpmyadmin修复这些表。
3、这样phpmyadmin是能看到,但博客还是没数据显示。
4、接下来恢复数据,因为INNODB的引擎数据是存在ibdata1里面,所以我们要到mysql安装目录下的data目录下找到ibdata1,先把这个备份下,不然等下覆盖或没备份,其他用户数据可能会丢,因为里面有其他用户的数据,所以先备份下,恢复完ibdata1文件后,博客就回来了,所有数据就显示出来
5、现在就是备份数据,可以通过phpmyadmin备份或其他备份工具,原先创建的MYI与MYD是0字节,现在改成MYISAM之后,就变成有大小的,因为现在数据是存在这里面,所以现在数据恢复好之后,备份了,就再恢复ibdata1文件成刚才的,不然其他客户的数据会没掉。
6、这样其他客户的数据正常外,自己的博客数据也回来了,因为我们数据存储的方式改成存到MYI里面了。

回复

使用道具 举报

 楼主| 发表于 2014-11-1 18:31:39 | 显示全部楼层
最简单的办法是在新的数据库中创建和原名字一样的数据库,然后把.frm 文件拷贝进去就OK了。

可是,有些时候这样不行,查询的时候会出现某某表不存在的问题,在确认.frm ,db.opt 文件完整的情况下,那么这种表使用的应该是innodb表引擎,应该将数据目录中的innodb数据文件(默认ibdata1) 也一并复制过来。重启MySql 服务就好了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|网站之家技术交流论坛 ( 粤ICP备09092995号 )

GMT+8, 2024-9-8 10:11 , Processed in 0.089588 second(s), 7 queries , File On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表