从 .frm、ibdata 和 ib_logfile 恢复 MySQl 数据库

Posted

技术标签:

【中文标题】从 .frm、ibdata 和 ib_logfile 恢复 MySQl 数据库【英文标题】:Recovering MySQl database from .frm, ibdata and ib_logfile 【发布时间】:2011-01-04 13:28:07 【问题描述】:

我有以前版本的 mysql 中的 .frm、ibdata 和 ib_logfile,现在我要切换到更新的版本。不幸的是,我没有安装以前的版本,所以我无法将转储文件导入新的 MySQl 版本。

请提出一些方法让这些数据库在较新的 MySQL 版本中运行。我拥有上一个 MSQl 中的所有必需文件。

【问题讨论】:

如果您只有 InnoDB 表,我相信 Emil 的建议会奏效。对于 MyISAM 表,您需要每个表的 .frm、.myi 和 .myd 文件。 【参考方案1】:

这样做真的很危险,所以只需在文件副本上执行(并尽量使用完全相同版本的 MySQL):

确保 MySQL 服务未运行 删除 ib_logfile(不需要) 将文件放在 MySQL 数据目录中 启动服务器并检查日志文件。 检查一切是否正常。

【讨论】:

这不起作用。虽然它可以识别数据目录中的数据库和表,但它无法读取这些表中的数据。当我尝试使用 sql 查询从表中读取一些信息时出现此错误:ERROR 1033 (HY000): Incorrect information in file: '.\db_name\table_name.frm'【参考方案2】:

好吧,这似乎微不足道。但是因为我已经保存了我之前安装的 Program Files 中存在的整个 MySQL 文件夹。我发现我仍然可以使用该文件夹来运行以前的 MySQL 安装,而无需进行任何更改或重新安装(似乎 MySQl 像 Linux 软件一样工作)。现在我正在使用 mysqldump 创建转储,然后将其导入新的 MySQL 版本。

【讨论】:

以上是关于从 .frm、ibdata 和 ib_logfile 恢复 MySQl 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何 根据ibdata和frm文件 恢复数据库

MySQL 存储引擎

如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库

Windows环境下Mysql如何快速导入或恢复表为innodb的数据

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

mysql 启动失败,date下有ib_logfile1,ibdata1,ib_logfile0,还有错误文件日志。 各位大侠,怎样解决?