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

mysqlcheck:線上表檢查、修復、優化、分析一站式工具詳解

     編輯:MySQL 資料庫相關知識

mysqlcheck 是 MySQL 官方提供的客戶端工具,功能對標 myisamchk,但無需停止服務即可線上操作 MyISAM 表(InnoDB 部分操作亦支援)。底層映射至 CHECK/REPAIR/ANALYZE/OPTIMIZE TABLE SQL 語句。

三種調用模式

mysqlcheck [options] db_name [tbl_name ...]
mysqlcheck [options] --databases DB1 [DB2 ...]
mysqlcheck [options] --all-databases
  • 未指定表名時,預設處理整個資料庫所有表。
  • --all-databases 等同列出所有庫名。

核心選項速查表

短選項長選項功能
-c--check檢查錯誤(預設行為)
-r--repair修復損壞
-a--analyze分析表(更新索引統計)
-o--optimize優化表(整理碎片、重建索引)
--auto-repair檢查發現損壞自動修復
-q--quick檢查:僅檢查索引鏈接;修復:僅修復索引樹(最快)
-F--fast僅檢查未正確關閉的表
-m--medium-check99.99% 錯誤覆蓋,速度介於 quick 與 extended 之間
-e--extended100% 一致性檢查(極慢);修復時執行延伸修復(產生大量垃圾行)
-C--check-only-changed僅檢查上次檢查後有變更或未正確關閉的表
-1--all-in-1每庫發送單一 SQL 處理所有表(減少網路往返)
-f--force遇 SQL 錯誤繼續處理後續表
-s--silent僅輸出錯誤訊息
-v--verbose詳細輸出各階段資訊

重命名二進制改變預設行為

  • mysqlrepair → 預設 --repair
  • mysqlanalyze → 預設 --analyze
  • mysqloptimize → 預設 --optimize

可用符號連結或複製二進制檔實現:ln -s mysqlcheck mysqlrepair。

連線參數

-h, --host=host_name
-P, --port=port_num
-u, --user=user_name
-p, --password[=pass]
-S, --socket=path
--protocol={TCP|SOCKET|PIPE|MEMORY}
--compress

實戰範例

# 每日維護窗口:快速檢查+自動修復所有庫
mysqlcheck --auto-repair --fast --all-databases -u root -p

# 深度檢查特定庫(維護窗口較長時)
mysqlcheck --extended --all-databases -u root -p

# 僅優化碎片嚴重的表
mysqlcheck --optimize --check-only-changed db_name -u root -p

mysqlcheck 讓線上維護零停機成為可能,配合 cron/Windows 排程器 實現自動化巡檢。

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