2016-08-19 67 views
0

我使用MySQL的InnoDB引擎,並設置了file_per_table設置,突然兩個.ibd文件被破壞,它們的大小變成了零字節,現在我設法恢復這兩個.ibd文件的舊版本,並且我做這些步驟來恢復我的數據MySQL InnoDB錯誤1034表'tableName'的密鑰文件不正確;嘗試修復它

1 - 創建一個空數據庫
2 - 創建一個表一樣破壞一個
3-使用「ALTER TABLE tableName DISCARD TABLESPACE
4-副本recoverd的.ibd文件在數據文件夾中
5使用「ALTER TABLE tableName IMPORT TABLESPACE

,但它給了我這個錯誤

錯誤(1034):爲表不正確的密鑰文件 '表名';嘗試修復它

,當我嘗試使用REPAIR TABLE tableName;甚至與

mysqlcheck -r -u root -p databaseName 修復它`它給了我這個錯誤

對錶的存儲引擎不支持修復

+0

Offtopic。這與編程無關。試試DBA網站。 –

+0

嘗試'ALTER TABLE tablename ENGINE = InnoDB;' –

回答

1

您採取了錯誤的方法來恢復表。由於文件系統不一致,文件的大小變爲零。

您不需要ibd文件,您需要其中的數據。因此恢復數據,而不是文件。

正如我們討論的那樣,您應該使用page_parser掃描磁盤,然後從InnoDB頁面(constraints_parser來自同一工具包)中提取記錄。

+0

感謝您提供的信息,這聽起來非常好,我在安裝MySQL 5.7的不同計算機上安裝了CentOS 7,並且還安裝了percona-data-recovery-tool-for-innodb-0.5和我有一個包含ibdata1,ib_logfile0,ib_logfile1的mysal/data /的副本,還有一個包含.frm和.ibd的所有表的文件夾,但正如我所討論的,兩個.ibd文件的大小爲零,我的問題是如何使用page_parser有一個循序漸進的,我可以跟着它,我需要附加包含數據庫文件的硬盤驅動器或只有他們的副本就足夠了 – Bayar

相關問題