ในกรณีถ้า ไม่สามารถรัน recovery mode 1-6 แล้วยัง error อยู่ให้ทำการตั้งสติให้มั่น และใช้วิธี ใช้ tool 
ในการดึงข้อมูลครับ ซึ่งบอกเลยว่าวิธีนี้ จะ advance หน่อย 
แต่ถ้ามีพื้นฐานในการ compile source มาดีก็จะผ่านได้ครับ เริ่มจาก download tool undrop 
https://twindb.com/undrop-for-innodb/https://twindb.com/recover-corrupt-mysql-database/ผมใช้ env เป็น centos 7.x และลง Mysql-server 5.6 ครับซึ่งจะมี tool innodb ให้ใช้งานค่อนข้างเยอะและเสถียรแล้ว 
==== install new Mysql 5.5
http://repo.mysql.com/yum/mysql-5.5-community/el/7/x86_64/https://www.cyberithub.com/install-mysql/==== install undrop
git clone git@github.com:twindb/undrop-for-innodb.git
yum install make gcc flex bison
ทำการ make ก่อนเพื่อให้ได้
หลังจาก make เสร็จ ก็จะได้  
stream_parser 
c_parser
มาครับ 
ทำการ copy ibdata1 จากเครื่องที่ corrupted หรือ harddisk มีปัญหามา ในกรณีของผมเป็นการรวมไฟล์ อยู่ในไฟล์เดียวคือ ibdata1 
และ innodb_file_per_table=0  
แล้วทำการ รัน 
./stream_parser -f ibdata1
จะได้ไฟล์ตัวที่เป็น INDEX และ BLOB มาครับ ใน folder 
/root/undrop-for-innodb/pages-ibdata1
[PKL@db2 pages-ibdata1]# ls -lah
drwxr-xr-x  2 root root 300K Jun  6 19:56 FIL_PAGE_INDEX
drwxr-xr-x  2 root root 4.2M Jun  6 19:56 FIL_PAGE_TYPE_BLOB
ซึ่งถ้าเราเข้าไป string file ดูก็จะเห็นเป็น raw data อยู่ใน folder: FIL_PAGE_INDEX ครับ
# strings 0000000008664211.page 
String 0000000008664211.page 
==check  innodb 
show variables like 'innodb_file_per_table';
./c_parser -f pages-ibdata1/FIL_PAGE_INDEX/0000000008671378.page -t dictionary/member_golf.sql
==== step1 begin here =====
./stream_parser -f ibdata1 
===ทำการเชคจาก table name จาก 0000000000000001.page ก่อน
./c_parser -4 -f pages-ibdata1/FIL_PAGE_INDEX/0000000000000001.page -t dictionary/SYS_TABLES.sql
000082B5C909    5400001D8F1CD8  SYS_TABLES      "PKL\_sabye/member"        3336397 69      1       0       0       ""      0
000082B5C912    59000185BB2B9C  SYS_TABLES      "PKL\_sabye/received\_thb" 3336398 3       1       0       0       ""      0
000082B5CAB0    6A0000E78C06CE  SYS_TABLES      "PKL\_sabye/transfer\_transaction" 3336399 42    3336398
==== step2 for ทำการค้นหา INDEX ของ table: member
./c_parser -4 -f pages-ibdata1/FIL_PAGE_INDEX/0000000000000003.page -t dictionary/SYS_INDEXES.sql | grep 3336398
000082B5C90D    D600019E61014F  SYS_INDEXES     3336398 8671379 "PRIMARY"       1       3       0       41052
SET FOREIGN_KEY_CHECKS=0;
LOAD DATA LOCAL INFILE '/home/centos/undrop-for-innodb/dumps/default/SYS_INDEXES' REPLACE INTO TABLE `SYS_INDEXES` CHARACTER SET UTF8 FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'SYS_INDEXES\t' (`TABLE_ID`, `ID`, `NAME`, `N_FIELDS`, `TYPE`, `SPACE`, `PAGE_NO`);
-- STATUS {"records_expected": 7615, "records_dumped": 7457, "records_lost": true} STATUS END
Primary = 8671379
====step3 : for received_thb.sql dump export to sql file with position 0000000008671379
./c_parser -6f pages-ibdata1/FIL_PAGE_INDEX/0000000008671379.page -t dumps/received_thb.sql > dumps/default/received_thb 2> dumps/default/received_thb.sql
==step4: for member.sql
./c_parser -4 -f pages-ibdata1/FIL_PAGE_INDEX/0000000000000003.page -t dictionary/SYS_INDEXES.sql | grep 3336397
000082B5C904    D10001532C06B9  SYS_INDEXES     3336397 8671378 "PRIMARY"       1       3       0       152194
===step5: generate and import data 
./c_parser -6f pages-ibdata1/FIL_PAGE_INDEX/0000000008671378.page -t dumps/member.sql -b pages-ibdata1/FIL_PAGE_TYPE_BLOB -o dumps/default/member5 -l dumps/default/member5.sql
===step6: load data to file 
cd dump
mysql --local-infile -uroot -p
source member5.sql 
show create table member;
เท่านี้ก็จะได้ข้อมูลจาก table: member ออกมาละครับผม 
ขอจงอย่าล้มเลิก ยาก แปลว่าทำได้ สู้ๆ ครับ ^_^  

ทีมงาน R&D 
กอล์ฟ [at] Packetlove[dot]com