mysqlcheck 是 MySQL 內建的指令模式工具, 可以檢查, 修復及最佳化資料表.
這邊是官方的說明文件. 有興趣可以自己參考一下.
Mysqlcheck 為用戶提供了一種方便的使用 SQL 語句 CHECK TABLE、REPAIR TABLE、ANALYZE TABLE和OPTIMIZE TABLE 的方式。它確定在要執行的操作中使用使用哪個語句,然後將語句發送到要執行的Server上。
有3種方式來調用mysqlcheck:
shell> mysqlcheck [options] db_name [tbl_name ...]
shell> mysqlcheck [options] --databases db_name ...
shell> mysqlcheck [options] --all-databases
如果沒有指定任何資料表或使用 --databases 或 --all-databases 選項,則檢查整個數據庫。
同其它客戶端比較,mysqlcheck 有一個特殊特性。重新命名二進制可以更改檢查資料表的默認行為(--check)。如果你想要一個工具默認可以修復資料表的工具,只需要將 mysqlcheck 重新復制為 mysqlrepair,或者使用一個符號鏈接 mysqlrepair 鏈接 mysqlcheck。如果調用 mysqlrepair,可按照命令修復資料表。
下面的名可用來更改 mysqlcheck 的默認行為:
mysqlrepair | 默認選項為 --repair |
mysqlanalyze | 默認選項為 --analyze |
mysqloptimize | 默認選項為 --optimize |
mysqlcheck支持下面的選項:
- -A, --all-databases
- 檢查所有數據庫中的所有資料表。與使用---database選項相同,在命令行中命名所有數據庫。
- -a, --analyze
- 分析資料表。
- -1, --all-in-1
- 不是為每個表發出一個語句,而是為命名數據庫中待處理的所有表的每個數據庫執行一個語句。
- --auto-repair
- 如果某個被檢查的表破壞了,自動修復它。檢查完所有表後自動進行所有需要的修復。
- --character-sets-dir=name
- 字符集的安裝目錄。參見5.10.1節,"數據和排序用字符集"。
- -c, --check
- 檢查資料表的錯誤。
- -C, --check-only-changed
- 只檢查上次檢查以來已經更改的或沒有正確關閉的資料表。
- --compress
- 壓縮在客戶端Server之間發送的所有信息(如果二者均支持壓縮)。
- -B, --databases
- 處理數據庫中命名的所有資料表。使用該選項,所有字名參量被看作數據庫名,而不是資料表名稱。
- -#, --debug[=#]
- 寫調試日誌。 debug_options字符串通常為'd:t:o,file_name'。
- --default-character-set=name
- 使用charsetas默認字符集。參見5.10.1節,"數據和排序用字符集"。
- -F, --fast
- 只檢查沒有正確關閉的資料表。
- -f, --force
- 即使出現SQL錯誤也繼續。
- -e, --extended
- 如果你正使用該選項來檢查資料表,可以確保它們100%地一致,但需要很長的時間。 如果你正使用該選項來修復資料表,則運行擴展修復,不但執行的時間很長,而且還會產生大量的垃圾行!
- -?, --help
- 顯示幫助消息並退出。
- -h, --host=name
- 連接給定主機上的MySQL Server。
- -m, --medium-check
- 執行比--extended操作更快的檢查。只能發現99.99%的錯誤,在大多數情況下這已經足夠了。
- -o, --optimize
- 優化資料表。
- -p, --password[=name]
- 當連接Server時使用的密碼。如果使用短選項形式(-p),選項和密碼之間不能有空格。 如果在命令行中--password或-p選項後面沒有密碼值,則提示輸入一個密碼。
- -P, --port=#
- 用於連接的TCP/IP端口號。
- --protocol=name
- 使用的連接協議。
- -q, --quick
- 如果你正使用該選項在檢查資料表,它防止掃描行以檢查錯誤鏈接的檢查。這是最快的檢查方法。 如果你正使用該選項在修復資料表,它嘗試只修復索引樹。這是最快的修復方法。
- -r, --repair
- 執行可以修復大部分問題的修復,只是唯一值不唯一時不能修復。
- -s, --silent
- 沉默模式。只打印錯誤消息。
- -S, --socket=name
- 用於連接的套接字文件。
- --tables
- 覆蓋---database或-B選項。選項後面的所有參量被視為資料表名稱。
- -u, --user=name
- 當連接Server時使用的MySQL用戶名。
- -v, --verbose
- 冗長模式。打印關於各階段程序操作的信息。
- -V, --version
- 顯示版本信息並退出。