Mysql 损坏的InnoDB导出

Mysql 损坏的InnoDB导出,mysql,innodb,Mysql,Innodb,昨天,我专用服务器的硬盘崩溃了。我唯一的选择就是在更换新硬盘之前尽可能地保存 我唯一能保存的是/var/lib/mysql文件夹。现在我有了一个新的硬盘,新的MySQL数据库正在运行,但是是空的。我想从我拥有的数据库中恢复数据 我尝试了几种方法,并在互联网上读到InnoDB导出不如复制所有/var/lib/mysql文件夹那么简单,所以我不确定我有什么解决方案 我试图用新文件夹替换新的/var/lib/mysql文件夹,但现在mysqld无法运行。错误日志看起来很多,但是添加innodb\u f

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

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

我尝试了几种方法,并在互联网上读到InnoDB导出不如复制所有
/var/lib/mysql
文件夹那么简单,所以我不确定我有什么解决方案

我试图用新文件夹替换新的
/var/lib/mysql
文件夹,但现在mysqld无法运行。错误日志看起来很多,但是添加
innodb\u force\u recovery=1
一点帮助都没有

现在我有点迷路了,别无选择。最近有人遇到过类似的情况吗


谢谢

有一个工具可以从损坏的磁盘中检索MySQL数据库

我希望您仍然有旧硬盘连接到服务器,或者至少有一张从中拍摄的图像

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

假设您已将旧的(损坏的)磁盘作为/dev/sdb连接

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

./stream_parser -f /dev/sdb
然后您需要恢复InnoDB字典以了解表名->索引id对应关系。有关详细信息,请参阅

您还需要表结构。从一些旧的备份中获取。(其他选项是从.frm文件或InnoDB dictionary恢复结构)

了解表的表结构和索引id后,可以从InnoDB页面提取表记录:

./c_parser -6f pages-actor.ibd/FIL_PAGE_INDEX/0000000000002655.page -t actor.sql
sql是CREATETABLE语句

c_解析器将生成LOAD DATA INFILE命令,将转储加载回MySQL