首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 資料表修復命令 mysqlcheck 實戰:單庫/全庫自動修復

     編輯:MySQL 資料庫相關知識

MyISAM 引擎表損壞或 InnoDB 輕微損壞時,mysqlcheck 是首選修復工具。本文提供單庫、全庫自動修復的標準命令模板。

核心命令

1. 修復所有資料庫(生產環境建議維護窗口執行)

mysqlcheck --auto-repair -A -o -uroot -p'password'
  • --auto-repair:檢測到損壞自動修復
  • -A / --all-databases:所有資料庫
  • -o / --optimize:修復後優化表(整理碎片、更新統計資訊)

2. 修復指定單一資料庫

mysqlcheck --auto-repair --databases db_name -o -uroot -p'password'

3. 僅檢查不修復(排查階段)

mysqlcheck -A -uroot -p'password'  # 全庫檢查
mysqlcheck --databases db_name -uroot -p'password'  # 單庫檢查

4. 修復特定表

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僅檢查未正確關閉的表

注意事項

  • InnoDB 表:mysqlcheck 僅能處理輕微邏輯損壞,嚴重損壞需依賴 innodb_force_recovery 或備份恢復。
  • 鎖表影響:修復過程會鎖表,大表耗時長,務必在低峰期執行。
  • 權限:需 SELECT、INSERT、LOCK TABLES 權限。
  • 備份優先:修復前建議先備份(mysqldump 或檔案複製),防修復失敗導致資料永久遺失。

替代方案:SQL 語句修復

REPAIR TABLE tbl_name [QUICK] [EXTENDED];
OPTIMIZE TABLE tbl_name;
ANALYZE TABLE tbl_name;

適用於單表精準修復,無需命令列工具。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved