从ibdata1恢复未连接的表

时间:2011-09-27 13:36:01

标签: mysql innodb recovery

我遇到mysql的数据丢失,下面是步骤:

1.我将Table_A从MyISAM转换为InnoDB(使用innodb_file_per_table OFF),看到ibdata1大小增加;

2.Trned ON innodb_file_per_table;

3.将Table_A转换回MyISAM,ibdata1没有收缩;

4.将Table_A转换为InnoDB,得到Table_A.ibd文件;

现在我丢失了Table_A.ibd文件,想要从ibdata1文件中找回数据。

我关闭innodb_file_per_table并尝试使用InnoDB格式创建相同的Table_A,它失败了,并告诉我TABLE_A已经存在,我无法从架构中找到该表。

我搜索了整个互联网,没有找到任何帮助,请帮助!

1 个答案:

答案 0 :(得分:0)

Goodle Percona数据恢复工具包。 你需要:

  1. 将ibdata1拆分为页面(page_parser)
  2. 从InnoDB字典中获取记录 - 表SYS_TABLES和SYS_INDEXES
  3. 从SYS_ *表
  4. 中查找表的index_id
  5. 从包含表的index_id的页面中获取记录(constraints_parser工具)。
  6. 更新:数据恢复工具包已移至GitHub