在我的一个InnoDB表中执行条件DELETE
操作时,显然需要在ibdata1中创建一些临时表,硬盘已满并且mysql崩溃。直到我删除了ibdata1文件(〜30 GB)后,我才开始重新启动它。MySQL InnoDB表损坏 - 如何解决?
现在mysql的再次启动,但在数据库中的所有表似乎已损坏(当我做了REPAIR TABLE tablename EXTENDED
我得到:
+-----------------------------------+--------+----------+---------+
| Table | Op | Msg_type | Msg_text |
+-----------------------------------+--------+----------+---------+
| mydb.table1 | repair | Error | Unknown table engine 'InnoDB' |
| mydb.table1 | repair | error | Corrupt |
+-----------------------------------+--------+----------+---------+
我用innodb_file_per_table
选项,让我所有的.FRM和。 ibd文件(应该分别包含元数据和数据)都是完整的(具有与崩溃前相同的文件大小),在目录中:/var/mysql/data/mydb/
。有谁知道我如何让mysql用适当的方法识别这些表数据再次出现?
谢谢!
你是否在腐败之前做了完整备份? – northpole 2009-08-28 17:24:39
我只对表结构做了备份(使用--no-data),因为其余数据非常庞大,大约100GB,可以通过其他脚本重新填充。但我仍然有这些带有相应.frm文件的多GB .ibd文件,所以我认为数据仍然存在。只是不确定如何让MySQL再次阅读它。 – ash 2009-08-28 17:27:26