在我的一個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