mysql 系統帳號執行,避免檔案擁有權錯亂myisamchkisamchk(舊版本,已少見)# 單一表檢查 myisamchk [options] tbl_name isamchk [options] tbl_name # 批次檢查(資料庫目錄下) myisamchk *.MYI isamchk *.ISM # 指定路徑批次檢查 myisamchk /path/to/database_dir/*.MYI myisamchk /path/to/datadir/*/*.MYI # 所有資料庫所有表
注意:工具不判斷表位置,必須在表檔案目錄執行或指定完整路徑。Windows 平台不支援萬用字元批次操作。
myisamchk tbl_name # 或靜默模式 myisamchk -s tbl_name
可發現 99.99% 的錯誤,僅無法偵測極罕見的純資料檔損壞。速度最快。
myisamchk -e tbl_name # 等同 myisamchk --extend-check tbl_name
-v 可繼續至 20 個錯誤myisamchk -m tbl_name # 等同 myisamchk --medium-check tbl_name
介於標準與擴展之間,速度較快但覆蓋率較低,實務上較少使用。
| 選項 | 說明 |
|---|---|
-i / --information | 顯示統計資訊(如索引基數、資料長度等) |
-C / --check-only-changed | 僅檢查上次檢查後有變更的表 |
-v / --verbose | 詳細輸出模式 |
檢查發現錯誤後,依嚴重程度選擇修復模式:
# 快速修復(僅修復索引樹) myisamchk -r tbl_name # 完整修復(重建資料檔與索引,較慢但徹底) myisamchk -r -e tbl_name # 強制修復(嘗試挽救極度損壞的表) myisamchk -r -f tbl_name
CHECK TABLE 或 myisamchk -s 掃描myisam_recover_options(如 BACKUP,FORCE)讓 MySQL 啟動時自動檢查修復InnoDB 具備自動崩潰恢復機制,不可 使用 myisamchk。若遭遇損壞:
innodb_force_recovery=1..6 分級啟動導出資料