【问题标题】:How to restore innodb tables without ibdata1 and *.ibd files如何在没有 ibdata1 和 *.ibd 文件的情况下恢复 innodb 表
【发布时间】:2014-06-06 11:53:11
【问题描述】:

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

谢谢。

【问题讨论】:

  • Percona InnoDB 数据恢复工具是一个免费工具包,用于从 InnoDB 表中恢复丢失或损坏的数据。更多详情可以参考percona.com/software/mysql-innodb-data-recovery-tools
  • 是的,我已经安装/编译了它,但我不知道如何使用它:),你能帮我吗?
  • 不幸的是,你被搞砸了..对不起你的损失..**飞走了**

标签: mysql database innodb restore


【解决方案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%% 的数据在发生此类事故后应该可以恢复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多