mysqlcheck クライアントでは、テーブルの保守 (テーブルの検査、修復、最適化、分析) を行います。
各テーブルはロックされているため、処理中にほかのセッションで使用することはできません。テーブルの保守処理には時間がかかることがあり、特に大きなテーブルでは長い時間を要する可能性があります。--databases
オプションまたは
--all-databases
オプションを使用して 1
つ以上のデータベースに含まれるすべてのテーブルを処理する場合は、mysqlcheck
の呼び出しに長い時間がかかる可能性があります。(mysql_upgrade
についても同じことが言えますが、これはそのプログラムが
mysqlcheck
を呼び出してすべてのテーブルを検査し、必要に応じて修復するからです。)
mysqlcheck のファンクションは myisamchk と似ていますが、作動方法が異なります。実質的な作動方法の違いは、mysqlcheck は mysqld サーバーが作動中のときに使用されなければいけません。一方、myisamchk はこのサーバーが作動していないときに使用されなければいけません。mysqlcheck を使用することの利点は、テーブルの保守を行うためにサーバーを停止する必要がないことです。
mysqlcheck は SQL
ステートメント CHECK
TABLE
、REPAIR
TABLE
、ANALYZE
TABLE
、そして
OPTIMIZE TABLE
をユーザーにとって便利な方法で使用します。実行したいオペレーションに対してどのステートメントを使用するか決定し、実行のためサーバーにステートメントを送信します。各ステートメントがどのストレージエンジンと作動するかは、ステートメントの説明を項8.5.2. 「テーブル保守ステートメント」で参照してください。
MyISAM
ストレージエンジンでは 4
つの保守処理をすべてサポートしているため、mysqlcheck
を使用すると、MyISAM
テーブルに対してそれらのどの保守処理も実行できます。ほかのストレージエンジンは必ずしもすべてのオペレーションをサポートしているとはかぎりません。そのような場合、エラーメッセージが表示されます。たとえば、test.t
が MEMORY
テーブルの場合、確認しようとすれば以下の結果が生成されます。
shell> mysqlcheck test t
test.t
note : The storage engine for the table doesn't support check
mysqlcheck
がテーブルを修復できない場合、手動でテーブルを修復する方法について、項2.12.4. 「テーブルまたはインデックスの再作成または修復」を参照してください。たとえば、InnoDB
テーブルがこれに当たります。このテーブルは
CHECK TABLE
で検査することはできますが、REPAIR
TABLE
で修復することはできません。
MySQL 5.1.27 より前のバージョンでは、パーティション化されたテーブルで mysqlcheck を使用することはできません。
テーブルの修復処理を行う前にテーブルのバックアップを取るのが最善の策です。修復処理によってデータが失われることがあります。考えられる原因にファイルシステムのエラーなどがありますが、これにかぎりません。
一般的に、mysqlcheck を起動するには 3 つの方法があります。
shell>mysqlcheck [
shell>options
]db_name
[tables
]mysqlcheck [
shell>options
] --databasesdb_name1
[db_name2
db_name3
...]mysqlcheck [
options
] --all-databases
db_name
に続くテーブルに名前をつけない場合、または--databases
、--all-databases
オプションを使用している場合、データベース全体が確認されます。
ほかのクライアントプログラムに比べ、mysqlcheck
は特別な機能があります。テーブルチェックのデフォルト行為
(--check
)
はバイナリの名前を変更することで変えられます。テーブルをデフォルトで修復するツールが必要な場合、mysqlrepair
と名づけた mysqlcheck
のコピーを作成するか、mysqlrepair
と名づけられた
mysqlcheck
へのシンボリックリンクを作成してください。mysqlrepair
を起動すれば、テーブルを修復します。
mysqlcheck のデフォルト動作の変更には、次の名前を使用できます。
mysqlrepair | デフォルトオプションは--repair
|
mysqlanalyze | デフォルトオプションは--analyze
|
mysqloptimize | デフォルトオプションは--optimize
|
mysqlcheck は、次のリストに示すオプションをサポートします。また、オプションファイルを読み取り、Command-Line Options that Affect Option-File Handlingに説明されている、オプションファイルを処理するためのオプションもサポートします。
ヘルプメッセージを表示し、閉じます。
データベース内のテーブルをすべて確認します。これは--databases
オプションを使用してコマンドラインですべてのデータベース名を指定するのと同じです。
各テーブルのためにステートメントを発行する代わりに、データベースから処理されるテーブルの名前を記載しているデータベースごとにシングルステートメントを実行します。
テーブルを分析します。
確認されたテーブルが破壊されていた場合、自動的に修復します。必要な修復はすべてのテーブルが確認されたあとに実行されます。
キャラクタセットがインストールされるディレクトリです。Character Set Configuration を参照してください。
テーブルにエラーがないか確認します。これがデフォルトオペレーションになります。
最後に行われた確認より変更されたテーブル、またはしっかり閉じられていないテーブルを確認します。
CHECK TABLE
を FOR UPGRADE
オプションと共に起動し、現サーバーバージョンとの互換性のないテーブルがあるか確認します。これにより--fix-db-names
と--fix-table-names
オプションを自動的に有効にします。--check-upgrade
は
MySQL 5.1.7.で追加されました。
双方が圧縮をサポートしている場合、クライアント・サーバー間で行きかう情報をすべて圧縮します。
名づけられたデータベース内のテーブルをすべて処理します。通常、mysqlcheck はコマンドライン上の最初の引数名とそれに続く名をテーブル名として認識します。このオプションを使用するうことで、名前のついた引数をすべてデータベース名として認識します。
--debug[=
,
debug_options
]-#
[
debug_options
]
デバッグのログを書き込みます。debug_options
文字列は通常
'd:t:o,
になります。デフォルトは
file_name
''d:t:o'
です。
プログラムが閉じるときに、デバッグ情報をプリントします。このオプションは MySQL 5.1.21 で追加されました。
プログラムの終了時にデバッグ情報と、メモリーおよび CPU 使用率の統計を表示します。このオプションは MySQL 5.1.14 で追加されました。
--default-character-set=
charset_name
charset_name
をデフォルトキャラクタセットとして使用します。Character Set Configuration
を参照してください。
テーブルを確認するのにこのオプションを試用している場合、100%適合していることを保証しますが、時間がかかります。
このオプションを使用してテーブルを修復している場合、修復作業に時間がかかる上、必要のない無駄な行を生成することもあります。
正しく閉じられていないテーブルのみを確認する。
データベース名を 5.1 フォーマットに変換します。特別な文字を含むデータベース名のみ影響を受けます。このオプションは MySQL 5.1.7 で追加されました。
データベース名を 5.1 フォーマットに変換します。特別な文字を含むテーブル名のみ影響を受けます。このオプションは MySQL 5.1.7 で追加され、MySQL 5.1.23 以降のバージョンではビューにも適用されます。
SQL エラーが発生しても続けます。
--host=
,
host_name
-h
host_name
与えられたホスト上で MySQL サーバーに接続します。
--extended
オペレーションよりも速い確認を行います。これはエラーの
99.99%を確認し、ほとんどの場合において十分な成果を発揮します。
テーブルを最適化します。
--password[=
,
password
]-p[
password
]
サーバーに接続する際に使用するパスワードです。ショートオプションフォーム
(-p
)
を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password
あるいは-p
に続くオプションから
password
値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。End-User Guidelines for Password Security を参照してください。
Windows では、名前付きパイプを介してサーバーに接続します。このオプションは、ローカルサーバーへの接続で、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。
接続に使用する TCP/IP ポート番号です。
--protocol={TCP|SOCKET|PIPE|MEMORY}
サーバーへの接続に使用する接続プロトコルを指定します。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。使用できる値の詳細は、Connecting to the MySQL Serverを参照してください。
このオプションを使用してテーブルを確認している場合、正しくないリンクを確認するために行のスキャンを行いません。これが最速のチェックメソッドです。
このオプションを使用してテーブルを修復している場合、インデックスとツリーのみの修復を試みます。これが最速の修復メソッドです。
ユニークではないユニークキー以外のすべてを修復できるリペアを実行します。
サイレントモード。エラーメッセージのみプリントします。
localhost
の接続用に使用する、UNIX
ではソケットファイル、Windows
では使用する名づけられたパイプ。
--ssl
で始まるオプションは、SSL
を介してサーバーに接続し、SSL
キーや証明の場所を明示するか否かを指定します。SSL Command Options
を参照してください。
--databases
オプションまたは -B
オプションを上書きします。オプションに続くすべてのネーム引数はテーブル名として認識されます。
MyISAM
の修復オペレーションでは、.frm
ファイルからテーブルストラクチャーを取得することで.MYI
ヘッダーが破壊されていてもテーブルが修復できます。
--user=
,
user_name
-u
user_name
サーバーへの接続時に使用する MySQL ユーザー名です。
冗長モード。プログラム処理のさまざまな段階についての情報を出力します。
バージョン情報を表示し、閉じます。