如何在没有ibdata1和* .ibd文件的情况下恢复innodb表

时间:2014-06-06 11:53:12

标签: mysql database innodb restore

由于某些原因,这些文件ibdata1,ib_logfile0,ib_logfile1已从硬盘驱动器中删除,mysql服务器已重新启动,当然其中一个数据库停止了错误" db.table不存在!"。如果只有* .frm,db.opt文件,可以以某种方式恢复这些文件吗?

感谢。

1 个答案:

答案 0 :(得分:1)

尽快获取磁盘映像或以只读方式挂载MySQL分区(如果它不在/)。

然后你需要编译数据恢复工具包(如果“make”失败则安装依赖项):

  make 

然后使用page_parser扫描磁盘映像。它将找到InnoDB页面,并按照index_id对每种页面类型进行排序。

  ./page_parser -f /path/to/disk.img

然后你需要表结构(从旧备份中获取它们或从.frm恢复)。您需要使用该结构来编译constraints_parser - 一个从InnoDB页面获取记录的工具。

  ./constraints_parser -5f pages-XXXXXX/FIL_PAGE_INDEX/0-x/

将输出保存在某个文件中。它还会生成LOAD DATA到stderr以将转储上传回MySQL。 有关详细信息,请查看Percona网站上的文档。

根据我的经验,在此类事故发生后,70-80 %%的数据应该可以恢复。