Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


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

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

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

各テーブルは処理中にロックされるため、ほかのセッションでは利用できません。ただし、検査操作ではテーブルは READ ロックでのみロックされます (READ ロックおよび WRITE ロックの詳細は、セクション13.3.5「LOCK TABLES および UNLOCK TABLES 構文」を参照してください)。テーブルの保守処理は、特に大きなテーブルでは長い時間を要する可能性があります。--databases オプションまたは --all-databases オプションを使用して 1 つまたは複数のデータベースに含まれるすべてのテーブルを処理する場合は、mysqlcheck の呼び出しに長い時間がかかる可能性があります。(mysql_upgrade についても同じことが言えますが、これはこのプログラムが mysqlcheck を呼び出してすべてのテーブルを検査し、必要に応じて修復するからです。)

mysqlcheck の機能は myisamchk と同様ですが、作動方法が異なります。主な作動方法の違いは、mysqlcheckmysqld サーバーが稼働中のときに使用されなければならないのに対し、myisamchk はこのサーバーが稼働していないときに使用されるべきであるという点です。mysqlcheck を使用することの利点は、テーブルの保守を行うためにサーバーを停止する必要がないことです。

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

MyISAM ストレージエンジンでは 4 つの保守処理をすべてサポートしているため、mysqlcheck を使用すると、MyISAM テーブルに対してそれらのどの保守処理も実行できます。ほかのストレージエンジンは必ずしもすべての操作をサポートしているとはかぎりません。そのような場合、エラーメッセージが表示されます。たとえば、test.tMEMORY テーブルの場合、検査しようとすると次の結果が生成されます。

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

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

注意

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

一般的に、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.6「オプションファイルの使用」を参照してください。

表 4.7 mysqlcheck のオプション

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

  • --help, -?

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

  • --all-databases, -A

    データベース内のテーブルをすべて検査します。これは、INFORMATION_SCHEMA データベースおよび performace_schema データベースがダンプされない点を除き、l--databases オプションを使用してコマンド行にすべてのデータベースを指定するのと同じです。これらは、--databases オプションで明示的に指名することでダンプできます。

  • --all-in-1, -1

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

  • --analyze, -a

    テーブルを分析します。

  • --auto-repair

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

  • --bind-address=ip_address

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

    このオプションは MySQL 5.6.1 からサポートされています。

  • --character-sets-dir=path

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

  • --check, -c

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

  • --check-only-changed, -C

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

  • --check-upgrade, -g

    CHECK TABLEFOR UPGRADE オプションで呼び出し、サーバーの現在のバージョンとの互換性のないテーブルがあるか検査します。このオプションにより、--fix-db-names オプションおよび --fix-table-names オプションが自動的に有効になります。

  • --compress

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --databases, -B

    指定されたデータベース内のテーブルをすべて処理します。通常、mysqlcheck はコマンド行の最初の名前引数をデータベース名として、それに続く名前をテーブル名として処理します。このオプションを使用すると、名前引数をすべてデータベース名として処理します。

    このオプションは、INFORMATION_SCHEMA データベースおよび performace_schema データベースのダンプに使用できます。これらは通常、--all-databases オプションを指定してもダンプされません。(--skip-lock-tables オプションも使用してください。)

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

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

  • --debug-check

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

  • --debug-info

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

  • --default-character-set=charset_name

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

  • --defaults-extra-file=file_name

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

  • --defaults-file=file_name

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

  • --defaults-group-suffix=str

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

  • --extended, -e

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

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

  • --default-auth=plugin

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

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

  • --fast, -F

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

  • --fix-db-names

    データベース名を 5.1 形式に変換します。特殊文字を含むデータベース名のみ影響を受けます。

  • --fix-table-names

    テーブル名を 5.1 形式に変換します。特殊文字を含むテーブル名のみ影響を受けます。このオプションはビューにも適用されます。

  • --force, -f

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

  • --host=host_name, -h host_name

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

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --medium-check, -m

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

  • --no-defaults

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

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

  • --optimize, -o

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

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

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysqlcheck はそれを要求します。

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

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysqlcheck がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

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

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --print-defaults

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

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

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --quick, -q

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

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

  • --repair, -r

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

  • --secure-auth

    古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。このオプションはデフォルトで有効です。無効にするには --skip-secure-auth を使用します。このオプションは MySQL 5.6.17 で追加されました。

    注記

    4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。

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

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

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --silent, -s

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

  • --skip-database=db_name

    指名されたデータベース (大文字小文字は区別されます) を、mysqlcheck が実行する操作に含めません。このオプションは MySQL 5.6.11 で追加されました。

  • --socket=path, -S path

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

  • --ssl*

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

  • --tables

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

  • --use-frm

    MyISAM テーブルの修復操作で、.frm ファイルからテーブル構造を取得することで .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 を使用します。


User Comments
Sign Up Login You must be logged in to post a comment.