10

我必须恢复在 MySQL 5.0 中无意中删除的数据库。通过检查备份文件,我似乎只有 .FRM 文件来保存数据库数据。

谁能告诉我这是否是我从备份中执行数据库恢复/导入所需的全部内容,还是我应该提供其他文件来完成此操作?

4

4 回答 4

14

.frm 文件不是数据文件,它们只是存储“数据字典信息”(参见MySQL 手册)。InnoDB 将其数据存储在 ib_logfile* 文件中。这就是您进行备份/恢复所需要的。有关更多详细信息,请参见此处

于 2008-09-22T16:06:31.790 回答
12

恢复 innodb:(假设你的数据文件夹是 C:\ProgramData\MySQL\MySQL Server 5.5\data)

  1. 将要还原的数据库的文件夹(以数据库名称命名)复制到 C:\ProgramData\MySQL\MySQL Server 5.5\data
  2. 将 3 个 ibdata 文件复制到数据文件夹 ex。(C:\ProgramData\MySQL\MySQL 服务器 5.5\data)

    _ib_logfile0
    _ib_logfile1
    _ibdata1
    
  3. 通过文件右键->属性获取_ib_logfile0的大小,单位为MB(应该和_ib_logfile1一样)

  4. 编辑 mysql 配置文件 (mysql\bin\my.ini) 以使 innodb_log_file_size=343M 与 ibdata 文件大小完全相同

  5. mysqld --defaults-file=mysql\bin\my.ini --standalone --console --innodb_force_recovery=6

  6. 现在您的数据应该回到您的数据库中。使用 phpmysql 或任何其他工具导出它们

于 2012-06-17T05:44:36.893 回答
6

哦,我的……你有麻烦了。关闭数据库。备份 innodb 文件。祈祷你删除数据库后什么都不做。

Percona 的人(包括 MySQL 性能博客的作者)应该能够帮助您:Percona 紧急支持

如果您自己冒险,请随身携带:Innodb 的数据恢复工具包

物流呢?您必须阅读每一页(计算机术语页面......在 Innodb 的情况下为 16k 块)并以这种方式重建您的数据。这是非常低级的工作(我们正在谈论打开你的十六进制编辑器并开始计算字节,如果工具包不为你做的话),如果你不是一个经验丰富的程序员,你会受到伤害.

于 2008-09-22T16:18:21.187 回答
-2

您可以在这里找到详细的解决方案:

http://www.unilogica.com/mysql-innodb-recovery/(葡萄牙文文章)

除了innodb_force_recovery的标志,我还找到了另一个解决方案:innodb_file_per_table,它像 MyISAM 表一样在每个文件中拆分 InnoDB 表。

在崩溃恢复中,与单个文件ibdata1相比,您丢失的数据更少。

于 2014-03-17T11:58:38.023 回答