mysqlcheckクライアントはテーブルのチェック、修復、最適化、そして分析を行います。
mysqlcheckのファンクションはmyisamchkと似ていますが、作動方法が異なります。実質的な作動方法の違いは、mysqlcheckはmysqldサーバが作動中の時に使用されなければいけません。myisamchkはこのサーバが作動していない時に使用品kればいけません。mysqlcheckを使用することの利点は、テーブルのチェックや修復時にサーバを停止させなくてすむことです。
mysqlcheckはSQLステートメントCHECK TABLE
、REPAIR TABLE
、ANALYZE TABLE
、そしてOPTIMIZE TABLE
をユーザにとって便利な方法で使用します。実行したいオペレーションに対してどのステートメントを使用するか決定し、実行のためサーバにステートメントを送信します。各ステートメントがどのストレージエンジンと作動するかは、ステートメントの説明を章 12. SQL ステートメント構文で参照してください。
MyISAM
ストレージエンジンは全4ステートメントをサポートしています。よって、mysqlcheckはMyISAM
テーブル上で全4オペレーションを実行することができます。他のストレージエンジンは必ずしも全てのオペレーションをサポートしているとは限りません。そのような場合、エラーメッセージが表示されます。例えば、test.t
がMEMORY
テーブルの場合、チェックしようとすれば以下の結果が生成されます。
shell> mysqlcheck test t
test.t
note : The storage engine for the table doesn't support check
一般的に、mysqlcheckを起動するには3つの方法があります。
shell>mysqlcheck [options] db_name [tables]
shell>mysqlcheck [options] --databases db_name1 [db_name2 db_name3...]
shell>mysqlcheck [options] --all-databases
db_name
に続くテーブルに名前をつけない場合、もしくは--databases
、--all-databases
オプションを使用している場合、データベース全体がチェックされます。
他のクライアントプログラムに比べ、mysqlcheckは特別な機能があります。テーブルチェックのデフォルト行為(--check
) はバイナリの名前を変更することで変えられます。テーブルをデフォルトで修復するツールが必要な場合、mysqlrepairと名づけたmysqlcheckのコピーを作成するか、mysqlrepairと名づけられたmysqlcheckへのシンボリックリンクを作成してください。mysqlrepairを起動すれば、テーブルを修復します。
以下の名前はmysqlcheckのデフォルト行為を変更するのに使用できます。
mysqlrepair | デフォルトオプションは--repair |
mysqlanalyze | デフォルトオプションは--analyze |
mysqloptimize | デフォルトオプションは--optimize |
mysqlcheckは次のオプションをサポートします。
ヘルプ メッセージを表示し、閉じます。
データベース内のテーブルを全てチェックします。これは--databases
オプションを使用してコマンドライン上のデータベース全てに名前をつけることと同じです。
各テーブルのためにステートメントを発行する代わりに、データベースから処理されるテーブルの名前を記載しているデータベースごとにシングルステートメントを実行します。
テーブルを分析します。
チェックされたテーブルが破壊されていた場合、自動的に修復します。必要な修復は全てのテーブルがチェックされた後に実行されます。
キャラクタ セットがインストールされるディレクトリです。項 「データおよびソート用キャラクタ セット」 を参照してください。
テーブルにエラーが無いかチェックします。これがデフォルトオペレーションになります。
最後に行われたチェックより変更されたテーブル、もしくはしっかり閉じられていないテーブルをチェックします。
CHECK TABLE
をFOR UPGRADE
オプションと共に起動し、現サーババージョンとの互換性の無いテーブルがあるかチェックします。これにより--fix-db-names
と--fix-table-names
オプションを自動的に有効化します。--check-upgrade
はMySQL で追加されました。
双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。
名づけられたデータベース内のテーブルを全て処理します。通常、mysqlcheckはコマンドライン上の最初のアーギュメント名とそれに続く名をテーブル名として認識します。このオプションを使用sるうことで、名前のついたアーギュメントを全てデータベース名として認識します。
--debug[=debug_options]
, -# [debug_options]
デバッグのログを書き込みます。debug_options
文字列は大抵'd:t:o,file_name'になります。
--default-character-set=charset_name
charset_name
をデフォルトキャラクタセットとして使用します。項 「データおよびソート用キャラクタ セット」 を参照してください。
テーブルをチェックするのにこのオプションを試用している場合、100%適合していることを保証しますが、時間がかかります。
このオプションを使用してテーブルを修復している場合、修復作業に時間がかかる上、必要な無い無駄な行を生成することもあります。!
正しく閉じられていないテーブルのみをチェックする。
データベース名を5.1フォーマットに変換します。特別な文字を含むデータベース名のみ影響を受けます。このオプションはMySQL 加されました。
データベース名を5.1フォーマットに変換します。特別な文字を含むテーブル名のみ影響を受けます。このオプションはMySQL 加されました。
SQLエラーが発生しても続けます。
--host=host_name
, -h host_name
与えられたホスト上でMySQLサーバに接続します。
--extended
オペレーションよりも速いチェックを行います。これはエラーの99.99%をチェックし、ほとんどの場合において十分な成果を発揮します。
テーブルを最適化します。
--password[=password]
, -p[password]
サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p
)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password
あるいは-p
に続くオプションからpassword
値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。項 「パスワードのセキュリティ」 を参照してください。
コネクションに使用するTCP/IPポート番号です。
--protocol={TCP|SOCKET|PIPE|MEMORY}
使用するべき接続プロトコルです。
このオプションを使用してテーブルをチェックしている場合、正しくないリンクをチェックするために行のスキャンを行いません。これが最速のチェックメソッドです。
このオプションを使用してテーブルを修復している場合、インデックスとリーのみの修復を試みます。これが最速の修復メソッドです。
ユニークではないユニークキー以外の全てを修復できるリペアを実行します。
サイレントモード。エラーメッセージのみプリントします。
localhost
の接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。
--ssl
で始まるオプションは、SSLを介してサーバに接続し、SSL キーや証明の場所を明示するか否かを指定します。項3. 「SSL コマンド オプション」 を参照してください。
--databases
か-B
オプションを重ね処理します。オプションに続く全てのネームアーギュメントはテーブル名として認識されます。
MyISAM
の修復オペレーションでは、.frm
ファイルからテーブルストラクチャを取得することで.MYI
ヘッダが破壊されていてもテーブルが修復できます。
--user=user_name
, -u user_name
サーバに接続する際使用するMySQLユーザ名です。
Verbose モードプログラムオペレーションのあらゆるステージの情報をプリントします。
バージョン情報を表示し、閉じます。