我一直在使用AppServ,其中包括MySQL,PHP,Apache24和phpMyAdmin功能。
有一天,我不小心从计算机上卸载了我的AppServ服务,不得不再次安装它。一切正常,直到我看到数据库无法正常运行。
我无法以某种方式获取我的数据,所以事故发生前我创建的网站也是如此。当我转到phpMyAdmin时,可以清楚地看到我制作的结构,但看不到它们的内容,这就是问题所在。实际上,当我在目录中看到它们时,它们都站在那儿。
谢谢。
注意::AppServ卸载过程不会删除您自己的数据。
答案 0 :(得分:1)
要从.frm
恢复数据库并从.ibd
恢复内容,您必须执行以下操作:
1)创建临时数据库,以避免突然与其他数据库一起工作。
CREATE DATABASE soru_sor_recover;
2)从CREATE TABLE
个文件生成.frm
转储(您需要安装mysql-utilities
from here);
mysqlfrm –diagnostic answers.frm >> create_table.txt
mysqlfrm –diagnostic categories.frm >> create_table.txt
mysqlfrm –diagnostic inbox.frm >> create_table.txt
mysqlfrm –diagnostic questions.frm >> create_table.txt
mysqlfrm –diagnostic users.frm >> create_table.txt
3)使用某些gui或仅通过终端导入create_table.txt
:
mysql -u root -p soru_sor_recover < create_table.txx
4)现在我们有了表,但是它们是空的。因此,我们必须用恢复的ibd文件替换空表的.ibd
文件。所以我们需要丢弃表空间:
ALTER TABLE answers DISCARD TABLESPACE;
ALTER TABLE categories DISCARD TABLESPACE;
ALTER TABLE inbox DISCARD TABLESPACE;
ALTER TABLE questions DISCARD TABLESPACE;
ALTER TABLE users DISCARD TABLESPACE;
5)替换数据文件夹中的.ibd
个文件,并为该文件定义用户和组:
cp *.ibd /var/lib/mysql/soru_sor_recover
chown -R mysql:mysql /var/lib/mysql/soru_sor_recover/*.ibd
6)重新启动mysql:
/etc/init.d/mysql restart
7)启用表空间,转到mysql控制台:
ALTER TABLE answers IMPORT TABLESPACE;
ALTER TABLE categories IMPORT TABLESPACE;
ALTER TABLE inbox IMPORT TABLESPACE;
ALTER TABLE questions IMPORT TABLESPACE;
ALTER TABLE users IMPORT TABLESPACE;
文档化的原始来源is here