Innodb

在這種情況下,我可以如何處理 InnoDB 格式的損壞數據庫?

  • May 15, 2013

伙計們,

我有一個大問題。有一台帶有 CRM 數據庫的伺服器。我可能損壞了它,不知道該怎麼辦。

ls /var/lib/mysql/sugarcrm/
accounts_audit.frm      address_book.ibd     contacts_audit.frm           emails_email_addr_rel.ibd   mkt_marketiery_accounts_c.frm     pm_processmanagerstagetask.frm     quotes.frm              uni_webinars.frm
accounts_audit.ibd      bugs_audit.frm

等等。當我嘗試觀看或做出更改時,我會收到

mysql> select * from vcals limit 1;
ERROR 1146 (42S02): Table 'sugarcrm.vcals' doesn't exist

mysqld.log:

130515 11:34:02130515 11:34:02

$$ ERROR $$儘管存在表的 .frm 文件,但無法從 InnoDB 的內部數據字典中找到表 sugarcrm/vcals。也許您已經刪除並重新創建了 InnoDB 數據文件,但忘記刪除 InnoDB 表的相應 .frm 文件,或者您已將 .frm 文件移動到另一個數據庫?請參閱http://dev.mysql.com/doc/refman/5.0/en/innodb-troubleshooting.html 如何解決問題。

問題是我沒有 .ibd 文件,只有 .frm 。另外我還沒有完全備份數據庫的 .sql 文件。現在我從很久以前的 5 月 9 日導入了 .sql。:( 我知道 .frm 不包含數據,僅包含結構。

問題是:我可以以某種方式修復還是無法修復此 DB 副本?一般來說,如果我有 .ibd 文件,可以使用哪些方法來修復數據庫?就我而言,5 月 9 日備份是我認為的最佳變體。我沒有出口,不是嗎?

謝謝。

首先,如果文件不存在,請檢查系統日誌中的文件系統/磁碟錯誤,因為這是非常奇怪的情況。

之後檢查文件系統(停止 mysql、umount 和 fsck -f),看看是否有錯誤並且 fsck 能夠修復它們。

如果這些步驟不能解決您的問題,您可以檢查二進制日誌文件,可能它比 5 月 9 年舊,之後您可以恢復備份二進制日誌。

引用自:https://serverfault.com/questions/507901