MyISAM 引擎表損壞或 InnoDB 輕微損壞時,mysqlcheck 是首選修復工具。本文提供單庫、全庫自動修復的標準命令模板。
mysqlcheck --auto-repair -A -o -uroot -p'password'
--auto-repair:檢測到損壞自動修復-A / --all-databases:所有資料庫-o / --optimize:修復後優化表(整理碎片、更新統計資訊)mysqlcheck --auto-repair --databases db_name -o -uroot -p'password'
mysqlcheck -A -uroot -p'password' # 全庫檢查
mysqlcheck --databases db_name -uroot -p'password' # 單庫檢查
mysqlcheck --auto-repair db_name table_name -uroot -p'password'
| 參數 | 含義 |
|---|---|
-c / --check | 檢查表(預設動作) |
-r / --repair | 修復表 |
--auto-repair | 檢查發現錯誤時自動修復 |
-o / --optimize | 優化表(等同 OPTIMIZE TABLE) |
-a / --analyze | 分析表(更新統計資訊) |
-q / --quick | 快速檢查/修復(僅檢查索引,不掃描資料行) |
-F / --fast | 僅檢查未正確關閉的表 |
mysqlcheck 僅能處理輕微邏輯損壞,嚴重損壞需依賴 innodb_force_recovery 或備份恢復。SELECT、INSERT、LOCK TABLES 權限。mysqldump 或檔案複製),防修復失敗導致資料永久遺失。REPAIR TABLE tbl_name [QUICK] [EXTENDED];
OPTIMIZE TABLE tbl_name;
ANALYZE TABLE tbl_name;
適用於單表精準修復,無需命令列工具。