InnoDB出口损坏

时间:2014-07-29 12:30:49

标签: mysql innodb

昨天,我专用服务器的硬盘崩溃了。我唯一的选择是在更换新硬盘之前保存我所能做的。

我唯一可以保存的是/var/lib/mysql文件夹。现在我有一个新的硬盘驱动器,运行一个新的MySQL数据库,但是空的。我想从我拥有的数据库中恢复数据。

我尝试了几件事,并通过互联网阅读InnoDB导出并不像复制所有/var/lib/mysql文件夹那么容易,所以我不确定我有什么解决方案。

我尝试用new替换新的/var/lib/mysql文件夹,但现在mysqld将无法运行。错误日志看起来很多like this,但添加innodb_force_recovery = 1根本没有帮助。

现在我有点失落,没有选择。最近有人遇到过类似的事吗?

由于

1 个答案:

答案 0 :(得分:1)

有一个工具可以从损坏的磁盘https://launchpad.net/undrop-for-innodb中检索MySQL数据库。

我希望您仍然可以将旧硬盘连接到服务器或至少从中获取图像。

下载最新版本并进行编译。你需要gcc,flex和bison作为依赖。

假设您已将旧的(已损坏的)磁盘附加为/ dev / sdb

首先,您需要扫描磁盘并找到InnoDB页面

./stream_parser -f /dev/sdb

然后你需要恢复InnoDB字典以了解表名 - > index_id对应。有关详细信息,请参阅"Recover InnoDB dictionary"

您还需要表格结构。从一些旧备份中获取它。 (其他选项可以从.frm文件或InnoDB字典中恢复结构)

当您知道表的表结构和index_id时,您可以从InnoDB页面中提取表记录:

./c_parser -6f pages-actor.ibd/FIL_PAGE_INDEX/0000000000002655.page -t actor.sql

actor.sql是CREATE TABLE语句

c_parser将生成LOAD DATA INFILE命令以在MySQL中加载转储。