从ibdata / frm文件恢复mysql

一个硬盘故障已经离开了我试图从“数据”文件夹的副本恢复MySQL我有转储的“最”的内容,但我缺less一些数据文件夹有idbdata1 /日志文件/ .frm文件的文件夹所以,读了很多这和尝试了很多东西(见下文),但无法获得服务开始 – 是一个Windows用户与MySQL 5.5

1)使用innodb_force_recovery = 6启动所有原始日志文件的服务

RESULT: InnoDB: Error: log file .\ib_logfile0 is of different size 0 100663296 bytes InnoDB: than specified in the .cnf file 0 178257920 bytes! 

2)用innodb_force_recovery = 6删除日志文件启动服务

 RESULT: InnoDB: Page directory corruption: infimum not pointed to 131001 19:54:14 InnoDB: Page dump in ascii and hex (16384 bytes):len 16384; hex 

3)试图在http://www.chriscalender.com/?p=49使用innodb恢复指令,但这使用Linux和wouldnt工作在我的Windows设置 – 尽pipe安装perl

我现在卡住了,要打电话给佩尔科纳 – 任何想法欢迎?

***编辑

从3个月前发现了另一个“数据”文件夹 – 可以得到这个服务开始,但得到错误

 Cannot find table xxx from the internal data dictionary of innodb though the .frm table exists etc... 

对于所有innodb表 – 现在是使用Googlesearch解决scheme

所有由MySQL服务器生成和使用的文件 – ibdata1,ib_logfile *,.frm,.ibd等,在操作系统之间应该是可以互换的 – 我从经验中知道他们在Solaris和Linux之间进行交换,但是我保持远离Windows,因为我一般可以,所以我不能肯定地说…但一个选项可能是得到一个工作的MySQL MySQL 5.5安装程序,然后停止它,并将所有这些文件复制到Linux机器代替现有的“datadir”。

但下一个适当的步骤也将高度依赖于究竟发生了什么…服务器正在优雅地终止,还是反复崩溃? 而且,这将取决于哪个文件导致问题。 如果它只是一个表的.ibd文件,那么将该文件重命名为.ibd以外的内容应允许MySQL跳过该文件并转到下一个。

如果你没有使用innodb_file_per_table那么你所有的鸡蛋都在一个非常脆弱的篮子里,ibdata1。

如果您启用了二进制日志logging并且只有稍微过时的备份,则还可以在其他计算机上恢复备份,并向前播放binlog以恢复其他数据。

根据您系统pipe理专业知识的一般水平,缺乏备份的可用性以及数据的紧迫性和价值,调用Percona或SkySQL可能是最好的计划。