MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  mysqlcheck — テーブル保守プログラム

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

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --all-databases, -A

    データベース内のテーブルをすべて検査します。 これは、INFORMATION_SCHEMA および performance_schema データベースがチェックされないことを除き、--databases オプションを使用し、コマンドラインですべてのデータベースに名前を付けることと同じです。 これらは、--databases オプションを使用して明示的に名前を付けることでチェックできます。

  • --all-in-1, -1

    各テーブルに対してステートメントを発行する代わりに、各データベースに対して、そのデータベースから処理されるすべてのテーブルを指名する単一のステートメントを実行します。

  • --analyze, -a

    テーブルを分析します。

  • --auto-repair

    確認されたテーブルが壊れていた場合、自動的に修復します。 必要な修復はすべてのテーブルが確認されたあとに実行されます。

  • --bind-address=ip_address

    複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。

  • --character-sets-dir=dir_name

    文字セットがインストールされているディレクトリ。 セクション10.15「文字セットの構成」を参照してください。

  • --check, -c

    テーブルにエラーがないか確認します。 これはデフォルトの動作です。

  • --check-only-changed, -C

    最後に行われた検査以降に変更されたテーブル、または適切に閉じられなかったテーブルのみを検査します。

  • --check-upgrade, -g

    CHECK TABLEFOR UPGRADE オプションで呼び出し、サーバーの現在のバージョンとの互換性のないテーブルがあるか検査します。

  • --compress

    可能であれば、クライアントとサーバーの間で送信されるすべての情報を圧縮します。 セクション4.2.8「接続圧縮制御」を参照してください。

    MySQL 8.0.18 では、このオプションは非推奨です。 MySQL の将来のバージョンで削除されることが予想されます。 レガシー接続圧縮の構成を参照してください。

  • --compression-algorithms=value

    サーバーへの接続に許可される圧縮アルゴリズム。 使用可能なアルゴリズムは、protocol_compression_algorithms システム変数の場合と同じです。 デフォルト値は uncompressed です。

    詳細は、セクション4.2.8「接続圧縮制御」を参照してください。

    このオプションは MySQL 8.0.18 で追加されました。

  • --databases, -B

    指定されたデータベース内のテーブルをすべて処理します。 通常、mysqlcheck では、コマンドラインの名引数はデータベース名として扱われ、後続の名前はテーブル名として扱われます。 このオプションを使用すると、名前引数をすべてデータベース名として処理します。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。 一般的な debug_options 文字列は d:t:o,file_name です。 デフォルトは d:t:o です。

    このオプションは、MySQL が WITH_DEBUG を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

    このオプションは、MySQL が WITH_DEBUG を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。

  • --debug-info

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

    このオプションは、MySQL が WITH_DEBUG を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。

  • --default-character-set=charset_name

    charset_name をデフォルト文字セットとして使用します。 セクション10.15「文字セットの構成」を参照してください。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。 ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。 ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

    例外: --defaults-file でも、クライアントプログラムは .mylogin.cnf を読み取ります。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。 たとえば、mysqlcheck は通常 [client] グループおよび [mysqlcheck] グループを読み取ります。 --defaults-group-suffix=_other オプションを指定した場合、mysqlcheck[client_other] グループおよび [mysqlcheck_other] グループも読み取ります。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --extended, -e

    テーブルの検査にこのオプションを使用している場合、100% 整合性があることが保証されますが、時間がかかります。

    このオプションを使用してテーブルを修復している場合、修復作業に時間がかかるだけでなく、大量のガベージ行を生成することもあります。

  • --default-auth=plugin

    使用するクライアント側認証プラグインに関するヒント。 セクション6.2.17「プラガブル認証」を参照してください。

  • --enable-cleartext-plugin

    mysql_clear_password 平文認証プラグインを有効にします。 (セクション6.4.1.4「クライアント側クリアテキストプラガブル認証」を参照してください。)

  • --fast, -F

    正しく閉じられていないテーブルのみを検査します。

  • --force, -f

    SQL エラーが発生しても続行します。

  • --get-server-public-key

    RSA キーペアベースのパスワード交換に必要な公開キーをサーバーにリクエストします。 このオプションは、caching_sha2_password 認証プラグインで認証されるクライアントに適用されます。 そのプラグインの場合、サーバーは要求されないかぎり公開鍵を送信しません。 このオプションは、そのプラグインで認証されないアカウントでは無視されます。 クライアントがセキュアな接続を使用してサーバーに接続する場合と同様に、RSA ベースのパスワード交換を使用しない場合も無視されます。

    --server-public-key-path=file_name が指定され、有効な公開キーファイルが指定されている場合は、--get-server-public-key よりも優先されます。

    caching_sha2_password プラグインの詳細は、セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を参照してください。

  • --host=host_name, -h host_name

    指定されたホストの MySQL サーバーに接続します。

  • --login-path=name

    .mylogin.cnf ログインパスファイルの指定されたログインパスからオプションを読み取ります。 「ログインパス」は、接続先の MySQL サーバーおよび認証に使用するアカウントを指定するオプションを含むオプショングループです。 ログインパスファイルを作成または変更するには、mysql_config_editor ユーティリティを使用します。 セクション4.6.7「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --medium-check, -m

    --extended 操作よりも高速な検査を実行します。 これはすべてのエラーの 99.99% のみを確認し、ほとんどの場合はこれで十分でしょう。

  • --no-defaults

    オプションファイルを読み取りません。 オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにできます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。 これにより、--no-defaults が使用された場合にも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。 セクション4.6.7「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --optimize, -o

    テーブルを最適化します。

  • --password[=password], -p[password]

    サーバーへの接続に使用される MySQL アカウントのパスワード。 パスワード値はオプションです。 指定しない場合、mysqlcheck によってプロンプトが表示されます。 指定する場合は、--password= または -p とそれに続くパスワードの間にスペースなしが存在する必要があります。 パスワードオプションを指定しない場合、デフォルトではパスワードは送信されません。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。 コマンド行でパスワードを指定しないようにするには、オプションファイルを使用します。 セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。

    パスワードがなく、mysqlcheck でパスワードの入力を求められないように明示的に指定するには、--skip-password オプションを使用します。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。 このオプションは、ネームパイプ接続をサポートするために named_pipe システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 また、接続を行うユーザーは、named_pipe_full_access_group システム変数で指定された Windows グループのメンバーである必要があります。

  • --plugin-dir=dir_name

    プラグインを検索するディレクトリ。 このオプションは、--default-auth オプションを使用して認証プラグインを指定しても、mysqlcheck がそれを検出しない場合に指定します。 セクション6.2.17「プラガブル認証」を参照してください。

  • --port=port_num, -P port_num

    TCP/IP 接続の場合、使用するポート番号。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用するトランスポートプロトコル。 これは、他の接続パラメータが通常、必要なプロトコル以外のプロトコルを使用する場合に便利です。 許可される値の詳細は、セクション4.2.7「接続トランスポートプロトコル」を参照してください。

  • --quick, -q

    このオプションを使用してテーブルを検査している場合、正しくないリンクを検査するために行のスキャンを行いません。 これが最速の検査方法です。

    このオプションを使用してテーブルを修復している場合、インデックスツリーのみの修復を試みます。 これが最速の修復方法です。

  • --repair, -r

    一意ではないユニークキー以外のすべてを修正できる修復を実行します。

  • --server-public-key-path=file_name

    RSA キーペアベースのパスワード交換のためにサーバーが必要とする公開キーのクライアント側コピーを含む、PEM 形式のファイルへのパス名。 このオプションは、sha256_password または caching_sha2_password 認証プラグインで認証されるクライアントに適用されます。 これらのプラグインのいずれかで認証されないアカウントでは、このオプションは無視されます。 クライアントがセキュアな接続を使用してサーバーに接続する場合と同様に、RSA ベースのパスワード交換を使用しない場合も無視されます。

    --server-public-key-path=file_name が指定され、有効な公開キーファイルが指定されている場合は、--get-server-public-key よりも優先されます。

    sha256_password の場合、このオプションは、MySQL が OpenSSL を使用して構築された場合にのみ適用されます。

    sha256_password および caching_sha2_password プラグインの詳細は、セクション6.4.1.3「SHA-256 プラガブル認証」 および セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を参照してください。

  • --shared-memory-base-name=name

    Windows の場合、共有メモリを使用してローカルサーバに接続するために使用する共有メモリ名。 デフォルト値は MYSQL です。 共有メモリー名では大文字と小文字が区別されます。

    このオプションは、共有メモリー接続をサポートするために shared_memory システム変数を有効にしてサーバーを起動した場合にのみ適用されます。

  • --silent, -s

    サイレントモード。 エラーメッセージのみを出力します。

  • --skip-database=db_name

    mysqlcheck によって実行される操作には、名前付きデータベース (大/小文字を区別) を含めないでください。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

    Windows では、このオプションは、名前付きパイプ接続をサポートするために named_pipe システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 また、接続を行うユーザーは、named_pipe_full_access_group システム変数で指定された Windows グループのメンバーである必要があります。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。 暗号化接続のコマンドオプションを参照してください。

  • --ssl-fips-mode={OFF|ON|STRICT}

    クライアント側で FIPS モードを有効にするかどうかを制御します。 --ssl-fips-mode オプションは、暗号化された接続の確立には使用されず、許可する暗号化操作に影響する点で、他の --ssl-xxx オプションとは異なります。 セクション6.8「FIPS のサポート」を参照してください。

    次の --ssl-fips-mode 値を使用できます:

    • OFF: FIPS モードを無効にします。

    • ON: FIPS モードを有効にします。

    • STRICT: strict FIPS モードを有効にします。

    注記

    OpenSSL FIPS オブジェクトモジュールが使用できない場合、--ssl-fips-mode に許可される値は OFF のみです。 この場合、--ssl-fips-modeON または STRICT に設定すると、クライアントは起動時に警告を生成し、FIPS 以外のモードで動作します。

  • --tables

    --databases オプションまたは -B オプションをおオーバーライドします。 オプションに続くすべての名前引数はテーブル名とみなされます。

  • --tls-ciphersuites=ciphersuite_list

    TLSv1.3 を使用する暗号化された接続に許可される暗号スイート。 値は、コロンで区切られた 1 つ以上の暗号スイート名のリストです。 このオプションに指定できる暗号スイートは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」を参照してください。

    このオプションは MySQL 8.0.16 で追加されました。

  • --tls-version=protocol_list

    暗号化された接続に許可される TLS プロトコル。 値は、1 つまたは複数のコンマ区切りプロトコル名のリストです。 このオプションに指定できるプロトコルは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」を参照してください。

  • --use-frm

    MyISAM テーブルに対する修復操作の場合は、.MYI ヘッダーが破損していてもテーブルを修復できるように、データディクショナリからテーブル構造を取得します。

  • --user=user_name, -u user_name

    サーバーへの接続に使用する MySQL アカウントのユーザー名。

  • --verbose, -v

    冗長モード。 プログラム処理のさまざまな段階についての情報を出力します。

  • --version, -V

    バージョン情報を表示して終了します。

  • --write-binlog

    このオプションはデフォルトで有効で、mysqlcheck によって生成される ANALYZE TABLEOPTIMIZE TABLE、および REPAIR TABLE の各ステートメントがバイナリログに書き込まれます。 --skip-write-binlog を使用すると、ステートメントに NO_WRITE_TO_BINLOG が追加され、ログに記録されなくなります。 これらのステートメントをレプリカに送信したり、バイナリログをバックアップからの回復に使用するときに実行したりしない場合は、--skip-write-binlog を使用します。

  • --zstd-compression-level=level

    zstd 圧縮アルゴリズムを使用するサーバーへの接続に使用する圧縮レベル。 許可されるレベルは 1 から 22 で、大きい値は圧縮レベルの増加を示します。 デフォルトの zstd 圧縮レベルは 3 です。 圧縮レベルの設定は、zstd 圧縮を使用しない接続には影響しません。

    詳細は、セクション4.2.8「接続圧縮制御」を参照してください。

    このオプションは MySQL 8.0.18 で追加されました。


関連キーワード:  テーブル, 接続, サーバー, mysqlcheck, 参照, プログラム, セクション, 修復, 認証, 圧縮