MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

4.5.3 mysqlcheck — テーブル保守プログラム

mysqlcheck クライアントでは、テーブルの保守 (テーブルの検査、修復、最適化、分析) を実行します。

各テーブルは処理中にロックされるため、ほかのセッションでは利用できません。ただし、検査操作ではテーブルは READ ロックでのみロックされます (READ ロックおよび WRITE ロックの詳細は、セクション13.3.6「LOCK TABLES および UNLOCK TABLES ステートメント」を参照してください)。 テーブルの保守処理は、特に大きなテーブルでは長い時間を要する可能性があります。 --databases オプションまたは --all-databases オプションを使用して 1 つまたは複数のデータベースに含まれるすべてのテーブルを処理する場合は、mysqlcheck の呼び出しに長い時間がかかる可能性があります。 (これは、テーブルの処理方法が同じであるためにテーブルチェックが必要であると判断された場合に、MySQL のアップグレード手順にも当てはまります。)

mysqlcheck は、mysqld サーバーの実行中に使用する必要があります。つまり、テーブルのメンテナンスを実行するためにサーバーを停止する必要はありません。

mysqlcheck は SQL ステートメント CHECK TABLEREPAIR TABLEANALYZE TABLE、および OPTIMIZE TABLE をユーザーにとって便利な方法で使用します。 実行する操作に対してどのステートメントを使用するか決定し、実行のためサーバーにステートメントを送信します。 各ステートメントがどのストレージエンジンと機能するかは、セクション13.7.3「テーブル保守ステートメント」のステートメントの説明を参照してください。

すべてのストレージエンジンが必ずしも 4 つの保守操作をすべてサポートしているわけではありません。 そのような場合、エラーメッセージが表示されます。 たとえば、test.tMEMORY テーブルの場合、これをチェックしようとすると、次の結果が生成されます:

shell> mysqlcheck test t
test.t
note     : The storage engine for the table doesn't support check

mysqlcheck がテーブルを修復できない場合、手動でテーブルを修復する方法についてはセクション2.11.13「テーブルまたはインデックスの再作成または修復」を参照してください。 これは、たとえば、CHECK TABLE ではチェックできますが、REPAIR TABLE では修復できない InnoDB テーブルの場合です。

注意

テーブルの修復操作を実行する前に、テーブルのバックアップを作成することをお勧めします。状況によっては、この操作のためにデータ損失が発生することがあります。 考えられる原因としては、ファイルシステムのエラーなどがありますがこれに限りません。

一般的に、mysqlcheck を起動するには 3 つの方法があります。

shell> mysqlcheck [options] db_name [tbl_name ...]
shell> mysqlcheck [options] --databases db_name ...
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 は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqlcheck] グループおよび [client] グループで指定できます。 MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.2.2「オプションファイルの使用」を参照してください。

表 4.13 「mysqlcheck のオプション」

オプション名 説明 導入 非推奨
--all-databases データベース内のテーブルをすべて確認
--all-in-1 各データベースに対して、そのデータベースのすべてのテーブルを指定する単一のステートメントを実行
--analyze テーブルを分析します
--auto-repair 確認されたテーブルが破損していた場合、自動的に修復
--bind-address 指定されたネットワークインタフェースを使用して MySQL サーバーに接続
--character-sets-dir 文字セットがインストールされているディレクトリ
--check テーブルにエラーがないか確認
--check-only-changed 最後に行われた検査以降に変更されたテーブルのみをチェック
--check-upgrade CHECK TABLE を FOR UPGRADE オプションで呼び出し
--compress クライアントとサーバー間で送信される情報をすべて圧縮 8.0.18
--compression-algorithms サーバーへの接続に許可される圧縮アルゴリズム 8.0.18
--databases すべての引数をデータベース名として解釈
--debug デバッグログの書込み
--debug-check プログラムの終了時にデバッグ情報を出力
--debug-info プログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力
--default-auth 使用する認証プラグイン
--default-character-set デフォルト文字セットを指定
--defaults-extra-file 通常のオプションファイルに加えて、名前付きオプションファイルを読み取ります
--defaults-file 指名されたオプションファイルのみを読み取る
--defaults-group-suffix オプショングループのサフィクス値
--enable-cleartext-plugin 平文の認証プラグインを有効化
--extended テーブルをチェックして修復
--fast 正しく閉じられていないテーブルのみを確認
--force SQL エラーが発生しても続行
--get-server-public-key サーバーから RSA 公開キーをリクエスト
--help ヘルプメッセージを表示して終了
--host MySQL サーバーがあるホスト
--login-path ログインパスオプションを .mylogin.cnf から読み取り
--medium-check --extended 操作よりも速いチェックを実行
--no-defaults オプションファイルを読み取らない
--optimize テーブルを最適化します
--password サーバーに接続する際に使用するパスワード
--pipe 名前付きパイプを使用してサーバに接続する (Windows のみ)
--plugin-dir プラグインがインストールされているディレクトリ
--port 接続用の TCP/IP ポート番号
--print-defaults デフォルトオプションの印刷
--protocol 使用するトランスポートプロトコル
--quick 最速のチェック方法
--repair 一意ではではない一意なキー以外のほぼすべてを修正できる修復を実行
--server-public-key-path RSA 公開鍵を含むファイルへのパス名
--shared-memory-base-name 共有メモリー接続用の共有メモリー名 (Windows のみ)
--silent サイレントモード
--skip-database 実行される操作からこのデータベースを除外
--socket 使用する Unix ソケットファイルまたは Windows 名前付きパイプ
--ssl-ca 信頼できる SSL 認証局のリストを含むファイル
--ssl-capath 信頼できる SSL 認証局の証明書ファイルを含むディレクトリ
--ssl-cert X.509 証明書を含むファイル
--ssl-cipher 接続の暗号化に許可される暗号
--ssl-crl 証明書失効リストを含むファイル
--ssl-crlpath 証明書失効リストファイルを含むディレクトリ
--ssl-fips-mode クライアント側で FIPS モードを有効にするかどうか
--ssl-key X.509 キーを含むファイル
--ssl-mode サーバーへの接続に必要なセキュリティ状態
--tables --databases オプションまたは -B オプションをオーバーライド
--tls-ciphersuites 暗号化された接続に許可される TLSv1.3 暗号スイート 8.0.16
--tls-version 暗号化された接続に許可される TLS プロトコル
--use-frm MyISAM テーブルの修復操作用
--user サーバーへの接続時に使用する MySQL ユーザー名
--verbose 冗長モード
--version バージョン情報を表示して終了
--write-binlog ANALYZE ステートメント、OPTIMIZE ステートメント、REPAIR ステートメントをバイナリログに記録。--skip-write-binlog は、NO_WRITE_TO_BINLOG をこれらのステートメントに追加します
--zstd-compression-level zstd 圧縮を使用するサーバーへの接続の圧縮レベル 8.0.18