文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  使用 myisamchk 進行崩潰還原

9.6.1 使用 myisamchk 進行崩潰還原

本節說明如何檢查及處理 MySQL 資料庫中的資料損毀。如果您的表格經常損毀,您應該嘗試找出原因。請參閱第 B.3.3.3 節,「如果 MySQL 持續崩潰該怎麼辦」

如需了解 MyISAM 表格可能如何損毀的說明,請參閱第 18.2.4 節,「MyISAM 表格問題」

如果您在外部鎖定停用的情況下 (預設值) 執行 mysqld,當 mysqld 使用相同表格時,您就無法可靠地使用 myisamchk 來檢查表格。如果您可以確定在您執行 myisamchk 時,沒有人可以使用 mysqld 來存取表格,您只需要在開始檢查表格之前執行 mysqladmin flush-tables 即可。如果您無法保證這一點,您必須在檢查表格時停止 mysqld。如果您執行 myisamchk 來檢查 mysqld 同時更新的表格,即使表格沒有損毀,您也可能會收到表格損毀的警告。

如果伺服器在啟用外部鎖定的情況下執行,您可以隨時使用 myisamchk 來檢查表格。在這種情況下,如果伺服器嘗試更新 myisamchk 正在使用的表格,伺服器會等待 myisamchk 完成後才繼續。

如果您使用 myisamchk 來修復或最佳化表格,您必須始終確保 mysqld 伺服器沒有在使用該表格 (這也適用於外部鎖定停用的情況)。如果您沒有停止 mysqld,您至少應該在執行 myisamchk 之前執行 mysqladmin flush-tables。如果伺服器與 myisamchk 同時存取表格,您的表格可能會損毀

在執行崩潰還原時,務必了解資料庫中的每個 MyISAM 表格 tbl_name 對應到資料庫目錄中以下表格顯示的三個檔案。

檔案 目的
tbl_name.MYD 資料檔
tbl_name.MYI 索引檔

這三種檔案類型中的每種都可能以各種方式損毀,但問題最常發生在資料檔和索引檔中。

myisamchk 的運作方式是逐行建立 .MYD 資料檔的副本。它會移除舊的 .MYD 檔案,並將新檔案重新命名為原始檔案名稱,來結束修復階段。如果您使用 --quickmyisamchk 不會建立暫時的 .MYD 檔案,而是假設 .MYD 檔案正確,並且只產生新的索引檔,而不觸碰 .MYD 檔案。這很安全,因為 myisamchk 會自動偵測 .MYD 檔案是否損毀,如果損毀則中止修復。您也可以指定 --quick 選項兩次來執行 myisamchk。在這種情況下,myisamchk 不會中止一些錯誤 (例如重複索引鍵錯誤),而是會嘗試透過修改 .MYD 檔案來解決這些錯誤。通常,只有當您的可用磁碟空間太少而無法執行正常修復時,使用兩個 --quick 選項才有用。在這種情況下,您至少應該在執行 myisamchk 之前備份表格。