首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL数据恢复(innoDB) -缺少.frm文件但完整的ibdata

MySQL数据恢复(innoDB) -缺少.frm文件但完整的ibdata
EN

Server Fault用户
提问于 2010-08-10 18:33:08
回答 1查看 7.1K关注 0票数 4

最近的服务器故障给我留下了一个完好无损的ibdata文件,但只有我的..frm目录的一半。我已经将所有这些复制到一个新的mysql安装中,并成功地恢复了我仍然拥有.frm文件的数据库。我的问题是-从ibdata文件中以某种方式重新生成.frm文件是可能的吗?或者以某种方式修改同一数据库的开发版本中的.frm文件,以便它们可以用于恢复?

遗憾的是,从备份中恢复并不是一个可行的选择。

编辑以澄清:我尝试使用本地生成的包含相同模式的.frm文件恢复数据库--即使在innodb_force_recovery = 1时也没有骰子。

EN

回答 1

Server Fault用户

发布于 2011-08-24 06:31:24

我从来没有这样做过,但你的问题与我使用的工具有关,所以我很好奇!看起来这是可能的,下面是一个例子:

http://www.chriscalender.com/?p=28

有时,当您只有.ibd文件时,您可能需要恢复一个表。在这种情况下,如果您试图将它加载到一个新实例中,您可能会遇到一些关于表id不匹配的错误。其实没有办法解决这个问题。但是,我已经找到了两种解决方案:注意:您将需要使用这些方法恢复每个表的.ibd文件和CREATE语句。

  • 模拟内部InnoDB表计数器。也就是说,创建工作表(启用innodb_file_per_table ),直到表id的内部指针等于(1 - id_of_ibd_table_you_need_to_restore)为止。(见方法1)
  • 手动十六进制编辑.ibd文件,更改表id。(见方法2)

台阶本身有好几页长,所以我还没有把它们贴在这里。

另一篇相关文章:http://www.mysqlperformanceblog.com/2011/05/13/connecting-orphaned-ibd-files/

我很想知道这是否有效,看起来好像有很多人成功地使用了它。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/168989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档