我必须恢复在MySQL 5.0中无意中DROPped的数据库.从检查备份文件,我似乎只有.FRM文件来保存数据库数据.
任何人都可以建议这是否是我需要从备份执行数据库恢复/导入,还是有其他文件我应该完成这个?
.frm文件不是数据文件,它们只存储"数据字典信息"(参见MySQL手册).InnoDB将其数据存储在ib_logfile*文件中.这就是您进行备份/恢复所需的.欲了解更多详情,请参见这里.
恢复innodb :(假设您的数据文件夹是C:\ ProgramData\MySQL\MySQL Server 5.5\data)
将要还原的数据库(以数据库名称命名)的文件夹复制到C:\ ProgramData\MySQL\MySQL Server 5.5\data
将3个ibdata文件复制到数据文件夹ex.(C:\ ProgramData\MySQL\MySQL Server 5.5\data)
_ib_logfile0 _ib_logfile1 _ibdata1
通过文件右键单击 - >属性获取以MB为单位的_ib_logfile0的大小(它应与_ib_logfile1相同)
编辑mysql配置文件(mysql\bin\my.ini),使innodb_log_file_size = 343M正好是ibdata文件大小
跑
mysqld --defaults-file = mysql\bin\my.ini --standalone --console --innodb_force_recovery = 6
现在您的数据应该回到您的数据库中.使用phpmysql或任何其他工具导出它们
哦,我...你遇到了麻烦.关闭数据库.备份innodb文件.祈祷你丢弃数据库后没有做任何事情.
Percona的人员(包括MySQL性能博客的作者)应该能够帮助你:Percona紧急支持.
如果您自己冒险,请随身携带:Innodb数据恢复工具包.
物流呢?您必须阅读每个页面(计算机术语页面...在Innodb的情况下为16k块)并以此方式重建您的数据.这是非常低级的工作(我们正在谈论打开你的十六进制编辑器并开始计算字节,如果工具包没有为你做的话),如果你不是一个经验丰富的程序员,你将会受到伤害.