從 .ibd 檔案恢復 MySql 表:一個持續的挑戰
P粉848442185
P粉848442185 2023-12-30 12:03:47
0
1
540

MySQL 伺服器突然停止工作,服務會斷斷續續,我無法進行備份,因為服務無法運行,所以我能做的最好的就是複製整個 DATA 資料夾。

此外,我有一個較早的備份,因此使用它與 ibd 檔案一起恢復了所有表,除了最後一個表,它說:

ERROR 1808 (HY000): Schema mismatch (Clustered index 
validation failed. Because the .cfg file is missing, table 
definition of the IBD file could be different. Or the data file 
itself is already corrupted.)

我不知道該怎麼辦。

P粉848442185
P粉848442185

全部回覆(1)
P粉311563823

我認為您唯一能做的就是依賴備份中的表格版本。您無法恢復複製的 .ibd 檔案。

錯誤訊息表示發生了以下兩種情況之一:

  • 自備份後表結構已更改,因此 .ibd 檔案不再與資料字典中儲存的元資料相符。當表空間檔案的內容與元資料不符時,InnoDB 與您處於同一條船上:「我不知道該怎麼辦。」

  • #即使表結構沒有改變,.ibd 檔案的物理損壞也足以使 InnoDB 無法讀取。

無論哪種方式,InnoDB 都無法讀取該表空間檔案。

顯然,如果您成功恢復所有其他表,這會產生問題。現在,大多數表中都有更多最新數據,除了最後一個表,該表已過時。如果這些表中存在相互引用的行,則它們可能具有孤立記錄(例如,顯示某個使用者購買了產品的記錄,但使用者表中不存在該使用者)。

這是不幸的,而且很難糾正。

一般來說,複製 .ibd 檔案並不是備份 InnoDB 資料庫的可靠方法。您需要使用適當的備援工具,例如 mysqldump 或 Percona XtraBackup。

在上次備份後恢復資料的另一個解決方案是使用二進位日誌檔案進行時間點復原。但要實現這一點,您需要自最近備份以來的所有二進位日誌文件,並且備份需要有關進行備份時二進位日誌位置的資訊。請參閱 https://dev.mysql.com/doc /refman/en/point-in-time-recovery.html

#
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!