MySQL InnoDB数据库恢复

时间:2008-09-22 15:49:23

标签: mysql backup innodb restore

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

任何人都可以建议我是否需要从备份中执行数据库恢复/导入,还是需要其他文件才能完成此操作?

4 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:10)

恢复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 Server 5.5 \ data)

    _ib_logfile0
    _ib_logfile1
    _ibdata1
    
  3. 通过文件右键单击 - >获取以MB为单位的_ib_logfile0的大小(它应与_ib_logfile1相同)属性

  4. 将innodb_log_file_size = 343M的mysql配置文件(mysql \ bin \ my.ini)编辑为ibdata文件大小

  5. 运行

      

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

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

  7. 导出它们

答案 2 :(得分:6)

哦,我...你遇到了麻烦。关闭数据库。备份innodb文件。祈祷你放弃数据库后没有做任何事情。

Percona的人员(包括MySQL性能博客的作者)应该能够帮助你:Percona emergency support

如果您自己冒险,请随身携带:Data Recovery Toolkit for Innodb

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

答案 3 :(得分:-2)

您可以在此处找到详细的解决方案:

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

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

在崩溃恢复中,您可以丢失的数据少于单个文件 ibdata1