我正在使用InnoDB引擎进行MySQL并且设置了file_per_table设置,突然两个.ibd文件被破坏并且它们的大小变为零Byte,现在我设法恢复这两个.ibd文件的旧版本并且我做这些恢复数据的步骤
1-创建一个空数据库
2-创建一个与损坏的一个相同的表 3-使用“ALTER TABLE tableName DISCARD TABLESPACE
”
4-复制数据文件夹中的recoverd .ibd文件 5-使用“ALTER TABLE tableName IMPORT TABLESPACE
”
但它给了我这个错误
错误(1034):表'tableName'的密钥文件不正确;尝试修复它
当我尝试使用REPAIR TABLE tableName;
或甚至
mysqlcheck -r -u root -p databaseName
`它给了我这个错误
表的存储引擎不支持修复
答案 0 :(得分:1)
你采取了错误的方法来恢复表。由于文件系统不一致,文件的大小变为零。
您不需要ibd文件,您需要其中的数据。所以恢复数据,而不是文件。
正如我们所讨论的那样,您应该使用page_parser
扫描磁盘,然后从InnoDB页面(constraints_parser
中提取相同工具包中的记录)。