我必须恢复在 MySQL 5.0 中无意中删除的数据库。通过检查备份文件,我似乎只有 .FRM 文件来保存数据库数据。
谁能告诉我这是否是我从备份中执行数据库恢复/导入所需的全部内容,还是我应该提供其他文件来完成此操作?
恢复 innodb:(假设你的数据文件夹是 C:\ProgramData\MySQL\MySQL Server 5.5\data)
将 3 个 ibdata 文件复制到数据文件夹 ex。(C:\ProgramData\MySQL\MySQL 服务器 5.5\data)
_ib_logfile0 _ib_logfile1 _ibdata1
通过文件右键->属性获取_ib_logfile0的大小,单位为MB(应该和_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 块)并以这种方式重建您的数据。这是非常低级的工作(我们正在谈论打开你的十六进制编辑器并开始计算字节,如果工具包不为你做的话),如果你不是一个经验丰富的程序员,你会受到伤害.
您可以在这里找到详细的解决方案:
http://www.unilogica.com/mysql-innodb-recovery/(葡萄牙文文章)
除了innodb_force_recovery的标志,我还找到了另一个解决方案:innodb_file_per_table,它像 MyISAM 表一样在每个文件中拆分 InnoDB 表。
在崩溃恢复中,与单个文件ibdata1相比,您丢失的数据更少。