MySQL InnoDB 数据库使用 .frm 文件和 ibdata 文件恢复

Posted

技术标签:

【中文标题】MySQL InnoDB 数据库使用 .frm 文件和 ibdata 文件恢复【英文标题】:MySQL InnoDB database restore using .frm files and ibdata files 【发布时间】:2012-08-18 16:12:39 【问题描述】:

您好,我错误地从基于 Windows XP 的 PC 中删除了我的 mysql 数据库(该数据库用于托管使用 Xampp 包的 Wiki 服务)。现在我正在尝试恢复数据,以便我至少可以检索在 Mediawiki 包的相应表中输入的文本。

删除后,我尝试使用 Minitool 数据恢复软件恢复数据,并且能够恢复包含 .frm 文件、ib_logfile0、ib_logfile1 和 ibdata1 的主模式文件夹(存储在 C>xampp>mysql>data 下)。

现在我正在尝试恢复数据库,以便进行 SQL 转储并相应地使用它。我参考了专家之前提供的一些建议。以下是链接-

Restoring MySQL InnoDB files on Windows

*** answers

但是这些对我没有多大帮助,不确定我在说明中到底遗漏了什么。最后我无法启动 MySQL 服务,它失败了,日志中出现以下错误 -

120823 12:17:04 [Note] Plugin 'FEDERATED' is disabled.
120823 12:17:04 InnoDB: The InnoDB memory heap is disabled
120823 12:17:04 InnoDB: Mutexes and rw_locks use Windows interlocked functions
120823 12:17:04 InnoDB: Compressed tables use zlib 1.2.3
120823 12:17:04 InnoDB: Initializing buffer pool, size = 16.0M
120823 12:17:04 InnoDB: Completed initialization of buffer pool
120823 12:17:04 InnoDB: highest supported file format is Barracuda.
InnoDB: No valid checkpoint found.
InnoDB: If this error appears when you are creating an InnoDB database,
InnoDB: the problem may be that during an earlier attempt you managed
InnoDB: to create the InnoDB data files, but log file creation failed.
InnoDB: If that is the case, please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/error-creating-innodb.html
120823 12:17:04 [ERROR] Plugin 'InnoDB' init function returned error.
120823 12:17:04 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
120823 12:17:04 [ERROR] Unknown/unsupported storage engine: InnoDB
120823 12:17:04 [ERROR] Aborting

对于从这种情况中恢复过来的任何帮助,我们将不胜感激。如果需要,我愿意提供更多数据。 [MySQL Server Version 5.5, xampp-win32-1.8.0-VC9]

【问题讨论】:

参考这个:dev.mysql.com/doc/refman/5.5/en/error-creating-innodb.html 我会在不同的文件夹或服务器中重新安装 Mysql 服务器,然后用旧文件复制/覆盖新的 .frm 和 ibdata 文件,然后启动服务器 @shubhansh 我也试过了,但没有帮助。请问还有什么建议吗? @golimar 谢谢!我也试过了,但没有帮助。请问还有什么建议吗? 尝试不复制 .frm 文件。 【参考方案1】:

天哪,终于解决了:) 实际上我是一个新手,这就是为什么我无法快速解决这个问题。这是我遵循的工作流程。

我安装了一个全新的 MySQL 服务器副本。为事务数据库运行向导配置。 我从Services.msc 停止了 MySQL 然后覆盖C/programdata/mysql/mysql server 5.5/data 文件夹中的ib* and *frm 文件(架构文件夹下) 将C/apps/mysql 中的my.ini 更新为innodb_log_file_size=<actual size of iblogfile0> 运行命令mysqld --defaults-file="C:/apps/mysql/my.ini" --standalone --console --innodb_force_recovery=6 上述完成后关闭cmd.exe 重启 MySQL 服务 打开 MySQL 工作台并进行转储

很抱歉让大家感到困惑。再次感谢。让我知道是否有人需要明确上述步骤。

【讨论】:

我正在执行这些步骤,请告诉我完成所有这些步骤需要多长时间?我的“ibdata1”文件大小为 114MB,“ib_logfile0”文件大小为 5MB。提前致谢。 @techguy4web 抱歉,我不记得完成的确切时间。我只能说最有可能不到 30 分钟。祝你好运! 好的,感谢您的友好回复。我的进程在 cmd 窗口上运行了 10 个小时。我怎么知道它运行是否正确?你能帮我检查一下这个过程吗? @techguy4web 不幸的是,我通过反复试验解决了我的问题。我不是数据库专家。您应该通过提出一个包含所有细节的新问题或谷歌搜索一些现有问题来寻求一些专家帮助。很抱歉让您失望了!

以上是关于MySQL InnoDB 数据库使用 .frm 文件和 ibdata 文件恢复的主要内容,如果未能解决你的问题,请参考以下文章

mysql innodb通过frm 和 ibd 文件恢复数据过程

重新安装mysql原来数据库的只剩下了.frm的问,怎么恢复的数据

6种innodb数据字典恢复方法

Mysql使用的B+树和存储引擎的关系

MySQL的MyISAM InnoDB 区别简单笔记!

从 .frm 文件恢复 mysql 数据库