僅適用於 MyISAM 儲存引擎表(.MYD、.MYI 檔案)。InnoDB 表損壞需透過 innodb_force_recovery 或備份還原處理。
cp -a /var/lib/mysql/db_name /backup/systemctl stop mysqld(避免檔案被鎖定/寫入)cd /var/lib/mysql/db_name| 等級 | 指令 | 適用場景 | 耗時 |
|---|---|---|---|
| 標準檢查 | myisamchk tbl_name | 例行巡檢,發現 99.99% 錯誤 | 快 |
| 靜默模式 | myisamchk -s tbl_name | 腳本自動化,僅回傳錯誤碼 | 快 |
| 擴展檢查 | myisamchk -e tbl_name | 懷疑資料檔損壞,逐行驗證索引指向 | 慢(大表慎用) |
| 中等檢查 | myisamchk -m tbl_name | 折衷方案,較少使用 | 中 |
# 檢查所有 MyISAM 表
myisamchk *.MYI
# 指定路徑
myisamchk /var/lib/mysql/db_name/*.MYI
# 所有資料庫
myisamchk /var/lib/mysql/*/*.MYI
myisamchk -r tbl_name
myisamchk -r -o tbl_name
myisamchk -r -f tbl_name
myisamchk -d tbl_name # 顯示表資訊,確認 Max datafile length 正常
mysqlcheck -r db_name tbl_name # 或用 SQL 介面二次確認
-v / --verbose:詳細輸出-i / --information:顯示統計資訊(行數、索引長度等)-C / --check-only-changed:僅檢查上次檢查後異動的表mysqldump / 實體備份 / 二進位日誌)。REPAIR TABLE tbl_name USE_FRM(需 Server 運行)。DROP INDEX 後 ADD INDEX 重建。CHECK TABLE / mysqlcheck 巡檢。建立「備份 → 停服務 → 檢查 → 修復 → 驗證 → 啟動」標準作業程序,讓表損壞不再恐慌。