Innodb
在這種情況下,我可以如何處理 InnoDB 格式的損壞數據庫?
伙計們,
我有一個大問題。有一台帶有 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 年舊,之後您可以恢復備份二進制日誌。