無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

第7章 クライアントプログラムとユーティリティ プログラム

目次

7.1. クライアントプログラムとユーティリティ プログラムの概要
7.2. my_print_defaults — オプション ファイルから オプションを表示する
7.3. myisam_ftdump — フル テキスト インデックス情報を表示する
7.4. myisamchk — MyISAM テーブル メンテナンス ユーティリティ
7.4.1. myisamchk 一般的なオプション
7.4.2. myisamchk チェック オプション
7.4.3. myisamchk修復オプション
7.4.4. 他の myisamchk オプション
7.4.5. myisamchkメモリ使用量
7.5. myisamlog — Display MyISAM Log File Contents
7.6. myisampack — 圧縮された、読み取り専用MyISAM テーブルを作成する。
7.7. mysql — MySQL コマンド ライン ツール
7.7.1. mysql オプション
7.7.2. mysql Commands
7.7.3. mysqlサーバサイドヘルプ
7.7.4. テキストファイルからSQLステートメントを実行する
7.7.5. mysqlヒント
7.8. mysqlaccess — アクセス権限をチェックするクライアント
7.9. mysqladmin — MySQL サーバの管理を行うクライアント
7.10. mysqlbinlog — バイナリログファイルを処理するためのユーティリティ
7.11. mysqlcheck — テーブル メンテナンスと修復プログラム
7.12. mysqldump — データベースバックアッププログラム
7.13. mysqlhotcopy — データベースバックアッププログラム
7.14. mysqlimport — データインポートプログラム
7.15. mysqlshow — データベース、テーブル、カラム情報を表示します。
7.16. mysqlslap — クライアント負荷エミュレーション
7.17. mysql_zap — パターンとマッチする処理を消去します。
7.18. perror — エラーコードの説明
7.19. replace — 文字列置き換えユーティリティ

MySQL クライアント プログラムには、データベースをアクセスしたり管理タスクを実行するためにサーバに接続するものが多々あります。他のユーティリティも利用できます。これらはサーバとクライアントを接続するようなことはしませんが、MySQL関連のオペレーションを実行します。

この章ではこれらのプログラムを大きく分け概要を提供した上で、各プログラムの詳細を説明します。各プログラムの詳細説明は起動構文とそのプログラムによって理解されるオプションを示しています。プログラム オプションの指定と、プログラムの起動に関する一般的な情報は、章 3. MySQL プログラムの使用を参照してください。

7.1. クライアントプログラムとユーティリティ プログラムの概要

以下のリストに手短にMySQL クライアント プログラムとユーティリティ プログラムを記します。

MySQL AB は管理や MySQL サーバとの使用のためにいくつかの GUI ツールも提供しています。これらについての基本的な情報に関しては、章 3. MySQL プログラムの使用 を参照してください。

各MySQL プログラムが多くのさまざまなオプションを使用します。ほとんどの MySQL プログラムには --helpオプションがあり、このオプションを使用することにより、そのプログラムのすべてのオプションの説明を表示することができます。例えば、mysql --help を試してみてください。

MySQL クライアント・サーバ ライブラリを使用してサーバと交信する MySQL クライアント プログラムは以下の環境変数を使用しています。

MYSQL_UNIX_PORTlocalhostへの接続に使用される、デフォルト Unix ソケットファイル
MYSQL_TCP_PORTTCP/IP 接続に使用されるデフォルトのポート番号
MYSQL_PWDデフォルトパスワード
MYSQL_DEBUGデバッグ中にトレースオプションをデバッグ
TMPDIRテンポラリテーブルやテンポラリファイルが作成されるディレクトリ

MYSQL_PWD の使用は危険です。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

オプション ファイルやコマンド ラインでオプションを指定することで、全ての標準プログラムで指定される環境変数値やデフォルト オプション値を重ね処理することができます。項3.3. 「プログラム・オプションの指定」 を参照してください。

7.2. my_print_defaults — オプション ファイルから オプションを表示する

my_print_defaults オプション ファイルのオプション グループ内にあるオプションを表示します。出力は特定のオプション グループを読むプログラムに使用されるオプションを示します。例えば、mysqlcheck プログラムは [mysqlcheck][client] のオプショングループを読みます。標準オプション ファイル内のグループに存在するオプションを確認するには、my_print_defaults を以下のように起動してください。

shell> my_print_defaults mysqlcheck client
--user=myusername
--password=secret
--host=localhost

コマンドラインで特定されているフォーム通りに、1行につき1つのオプションによって、出力が構成されています。

my_print_defaults は以下のオプションを理解します。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --config-file=file_name, --defaults-file=file_name, -c file_name

    与えられたオプション ファイルのみ読みこみます。

  • --debug=debug_options, -# debug_options

    デバッグのログを書き込みます。debug_options 文字列は大抵 'd:t:o,file_name' になります。.デフォルトは 'd:t:o,/tmp/my_print_defaults.trace' になります。

  • --defaults-extra-file=file_name, --extra-file=file_name, -e file_name

    このオプション ファイルはグローバル オプション ファイルの後に、ただし(Unix では)ユーザ オプション ファイルの前に読み込んでください。

  • --defaults-group-suffix=suffix, -g suffix

    コマンド ラインで名づけられたグループのほかに、以下の接尾辞を与えられたグループを読み込んでください。

  • --no-defaults, -n

    殻の文字列を返してください。

  • --verbose, -v

    Verbose モードプログラムの動作についてさらに情報をプリントアウトする。

  • --version, -V

    バージョン情報を表示し、閉じます。

7.3. myisam_ftdump — フル テキスト インデックス情報を表示する

myisam_ftdumpMyISAM テーブル内の FULLTEXT インデックスに関する情報を表示します。MyISAM インデックス ファイルを直接読み込みますので、テーブルが存在しているサーバ ホストで起動しなければいけません。

myisam_ftdump は以下のように起動してください。

shell> myisam_ftdump [options] tbl_name index_num

tbl_name アーギュメントは MyISAM テーブルの名前であるべきです。インデックス ファイルに名前をつけることでテーブルを特定することができます。(.MYI 接尾辞のついたファイル)。テーブル ファイルが存在しているディレクトリ内で myisam_ftdump を起動しない場合、テーブル データベース ディレクトリへのパスを含んだファイル名が、テーブルかインデックス ファイルの名前より先行していなければいけません。インデックス ナンバーは0で始まります。

例:例えば test データベースに、以下の定義を持つ mytexttablel というテーブルが含まれるとします。

CREATE TABLE mytexttable
(
  id   INT NOT NULL,
  txt  TEXT NOT NULL,
  PRIMARY KEY (id),
  FULLTEXT (txt)
);

id のインデックスは0 であり、txtFULLTEXT インデックスは1になります。ワーキングディレクトリが test データベースディレクトリである場合、以下の様に myisam_ftdump を起動してください。

shell> myisam_ftdump mytexttable 1

test データベース ディレクトリへのパスを含んだファイル名が /usr/local/mysql/data/test の場合、そのパスを含んだファイル名を使用して、テーブル ネーム アーギュメントを特定することができます。これは、データベース ディレクトリ内で myisam_ftdump を起動しない場合役に立ちます。

shell> myisam_ftdump /usr/local/mysql/data/test/mytexttable 1

myisam_ftdump は以下のオプションを理解します。

  • --help, -h -?

    ヘルプ メッセージを表示し、閉じます。

  • --count, -c

    一語ごとの統計を計算します。(カウントとグローバル ウェイト)

  • --dump, -d

    データオフセットやワードウェイトを含むインデックスをダンプします。

  • --length, -l

    長さの分布をレポートします。

  • --stats, -s

    グローバル インデックス統計をレポートします。他にオペレーションが特定されていない場合、これがデフォルト オペレーションになります。

  • --verbose, -v

    Verbose モードプログラムの動作についてさらに出力をプリントアウトする。

7.4. myisamchk — MyISAM テーブル メンテナンス ユーティリティ

myisamchk ユーティリティはユーザのデータベース テーブルの情報を収集し、チェック、修復、もしくは最適化します。myisamchkMyISAM テーブルとともに作動します(データやインデックスを記憶するための .MYD.MYI テーブル)。

myisamchk は以下のように起動してください。

shell> myisamchk [options] tbl_name ...

optionsmyisamchk にどういった作業をさせたいか特定します。以下のセクションで説明されています。myisamchk --help を起動することでオプションのリストを取得することができます。

オプションがない場合、myisamchk をデフォルト オペレーションとして、ユーザのテーブルをチェックします。さらに情報を取得もしくは myisamchk に修復行動をとらせるには、以下のディスカッションで説明されているようにオプションを特定してください。

tbl_name はユーザがチェックもしくは修復したいデータテーブルになります。データベース ディレクトリ内以外で myisamchk を起動させた場合、必ずデータベース ディレクトリへのパスを特定しなければいけません。これは、myisamchk にはデータベース ディレクトリの場所がまったくわからないからです。.実際、myisamchk にとっては作業中のファイルがデータベース ディレクトリに含まれていようがいまいが、とくに関係ありません。データベース テーブルに応対するファイルは他の場所へコピーして、そこでリカバリ オペレーションをそれらファイルにかけることができます。

myisamchk コマンド ライン上の複数のテーブルに名前をつけることができます。インデックス ファイルに名前をつけることでテーブルを特定することができます。(.MYI 接尾辞のついたファイル)。*.MYI パターンを使用することによって、ディレクトリ内の全てのテーブルを特定することができるようになります。例えば、データベース ディレクトリ内にいるとき、以下の様にしてそのディレクトリ内の MyISAM テーブルをチェックすることができます。

shell> myisamchk *.MYI

データベース ディレクトリ内にいない場合、ディレクトリへのパスを特定することで全てのテーブルをチェックすることができます。

shell> myisamchk /path/to/database_dir/*.MYI

MySQL データ ディレクトリへのパスと共にワイルドカードを特定することで、全てのデータベースの全てのテーブルをチェックすることができます。

shell> myisamchk /path/to/datadir/*/*.MYI

全てのMyISAMテーブルをチェックするお勧めの方法は以下のとおりです。

shell> myisamchk --silent --fast /path/to/datadir/*/*.MYI

全ての MyISAM テーブルをチェックし、破壊されているものを修復したい場合、以下のコマンドを使用してください。

shell> myisamchk --silent --force --fast --update-state \
          --key_buffer_size=64M --sort_buffer_size=64M \
          --read_buffer_size=1M --write_buffer_size=1M \
          /path/to/datadir/*/*.MYI

このコマンドの使用は 64MB 以上がフリーであることが前提です。myisamchk とメモリのアロケーションについては、詳しくは 項7.4.5. 「myisamchkメモリ使用量」 を参照してください。

myisamchk を起動中に、他のプログラムがテーブルを使用していないことを確認してください。でなければ、myisamchk を起動したとき、以下のエラーが表示されます。

warning: clients are using or haven't closed the table properly

これはまだファイルが閉じられていない、もしくは閉じる前に破壊されてしまった他のプログラムによって、更新されたテーブルをチェック使用としていることを意味しています。(たとえば mysqld サーバ) 。

もし mysqld が起動している場合、FLUSH TABLES を使用して、メモリにバッファされている全てのテーブルに加えられた修正を、強制的に一挙に消去し鳴けレアいけません。myisamchk を起動中に、他のユーザがテーブルを使用していないことを確認してください。この問題を避けるには、テーブルのチェックには myisamchk の代わりに CHECK TABLE を使用してください。

7.4.1. myisamchk 一般的なオプション

このセクションで紹介されているオプションは myisamchk によって実行される全てのテーブル メンテナンス オペレーションに使用することができます。このセクション以降のセクションは特定のオペレーションに関するオプションのみを説明します。例えば、テーブルのチェックや修復。.

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --debug=debug_options, -# debug_options

    デバッグのログを書き込みます。debug_options 文字列は大抵 'd:t:o,file_name'になります。

  • --silent, -s

    サイレントモード。エラーが発生したときのみアウトプットを書き込みます。-smyisamchk を非常にサイレントにするため2回(-ss) 使用することができます。

  • --verbose, -v

    Verbose モードプログラムの動作についてさらに情報をプリントアウトする。これは -d-e と共に使用することができます。さらに出力を得るため、-v を複数回(-vv-vvv) 使用してください

  • --version, -V

    バージョン情報を表示し、閉じます。

  • --wait, -w

    テーブルがロックされている場合に、エラーとして消去するよりも、再開はテーブルがアンロックされるまで待ってください。外部ロックを無効の状態で mysqld を起動している場合、テーブルは myisamchk コマンドを使用することでのみ、ロックすることができます。

--var_name=value 構文を使用することで以下の構文をセットすることができます。

変数デフォルト値
decode_bits9
ft_max_word_lenversion-dependent
ft_min_word_len4
ft_stopword_filebuilt-in list
key_buffer_size523264
myisam_block_size1024
read_buffer_size262136
sort_buffer_size2097144
sort_key_blocks16
stats_methodnulls_unequal
write_buffer_size262136

可能な myisamchk 変数とデフォルト値は myisamchk --help で確認することができます。

sort_buffer_size はソートキーでキーが修復された場合に使用されます。これは --recover を使用した場合は普通です。

key_buffer_size--extend-check でテーブルをチェックするとき、もしくはテーブルに行ごとにキーを入力することでキーを修復する際に使用されます(普通にインサートする場合の様に)。キーバッファを通しての修復は以下の場合使用されます。

  • --safe-recover を使用する場合。

  • キーのソートに必要なテンポラリ ファイルは直接キーファイルを作成する際よりも、倍の大きさとなります。これは CHARVARCHAR、もしくは TEXT カラムに大きなキー値が与えられている場合によくあります。これは、進行するにつれてソート オペレーションは完全なキー値を記憶する必要があるからです。テンポラリ スペースに余裕があり、myisamchk を使用して強制的にソートすることで修復する場合、--sort-recover オプションを使用することができます。

キーバッファを使用して修復するのはソートよりもはるかにディスクの空き容量に余裕を持たせることができますが、速度も落ちます。

修復スピードを早くする場合、key_buffer_sizesort_buffer_size 変数を使用できるメモリの25%にセットしてください。同時に使用されることは無いので、双方の変数の値を大きくセットすることができます。

myisam_block_size はインデックス ブロックに使用されるサイズです。

stats_methodNULL 値が、--analyze オプションを与えられたときに、インデックス統計の集計の際にどう扱われるかに影響します。myisam_stats_method システム変数のような働きをします。詳しくは、in 項4.2.3. 「システム変数」項6.4.7. 「MyISAMインデックス統計コレクション」に含まれる myisam_stats_method の詳細を参照してください。

ft_min_word_lenft_max_word_lenFULLTEXT インデックスの最低と最高文字長を指します。 ft_stopword_file はストップワードファイルに名前をつけます。以下の状態でこれらをセットしなければいけません。

myisamchk を使用してテーブル インデックスを改良するオペレーションを実行する場合、(例えば分析や修復)他に特定されない場合、FULLTEXT インデックスはデフォルト フル テキスト パラメータ値を、最低・最高文字長とストップワードファイルを使用して再構築されます。これはクエリの失敗につながることがあります。

この問題は、パラメータがサーバのみに理解されていることにより発生します。MyISAM インデックスファイルには記憶されていません。サーバ内の最低・最高文字長もしくはストップワードファイルを改良した上で、問題を回避するには、ft_min_word_len, ft_max_word_lenft_stopword_file の値を mysqld で使用する myisamchk に特定してください。例えば、最低文字長を3にセットした場合、テーブルは myisamchk で以下の様に修復できます。

shell> myisamchk --recover --ft_min_word_len=3 tbl_name.MYI

myisamchk とサーバがフル テキスト パラメータに同じ値を確実に使用するには、それぞれオプションファイルの [mysqld][myisamchk] セクションに置いてください。

[mysqld]
ft_min_word_len=3

[myisamchk]
ft_min_word_len=3

myisamchk を使用する代わりに、REPAIR TABLEANALYZE TABLEOPTIMIZE TABLE、もしくは ALTER TABLE を使用することができます。これらのステートメントは、正しいフル テキスト パラメータ値を理解しているサーバによって実行されます。

7.4.2. myisamchk チェック オプション

myisamchk はテーブルチェックオペレーション用の以下のオプションをサポートしています。

  • --check, -c

    テーブルにエラーが無いかチェックします。明示的にオペレーションタイプを選択しない場合、これがデフォルトオペレーションとなります。

  • --check-only-changed, -C

    前チェックより変更されたテーブルのみをチェックする。

  • --extend-check, -e

    テーブル チェックを入念に行います。テーブルにインデックスが多数ある場合、この作業には時間がかかります。このオプションは極端な処置として使用するべきです。通常、myisamchkmyisamchk --medium-check を使用してテーブル内のエラーの有無を確認することができます。

    --extend-check を使用していてメモリ容量も十分な場合、key_buffer_size 値を大きくセットすれば、修復オペレーションのスピードを上げることができます。

  • --fast-F

    正しく閉じられていないテーブルのみをチェックする。

  • --force, -f

    myisamchk がエラーをテーブル内で発見した場合、自動的に修復オペレーションを実行する。修復タイプは --recover-r オプションで特定されたものと同一です。

  • --information, -i

    チェックされたテーブルの統計情報をプリントします。

  • --medium-check, -m

    --extend-check オペレーションよりも速いチェックを行います。これはエラーの99.99%をチェックし、ほとんどの場合において十分な成果を発揮します。

  • --read-only, -T

    テーブルをチェックされたものとして処理しません。myisamchk を使用して、ロックを使用しないアプリケーションによって使用されているテーブルをチェックする際に便利です。例えば、外部ロックを無効にした状態で mysqld が作動している場合。

  • --update-state, -U

    情報を .MYI ファイルに記憶し、いつテーブルがチェックされたか、そしてテーブルがクラッシュしているかをチェックします。.これを使用することによって --check-only-changed オプションの利便性を最大限に引き出すことができますが、mysqld サーバがテーブルを使用し、且つ外部ロックを無効にした状態で起動している場合、このオプションを使用しないでください。

7.4.3. myisamchk修復オプション

myisamchk はテーブル修復オペレーション用の以下のオプションをサポートしています。

  • --backup, -B

    .MYD ファイルのバックアップを file_name-time.BAK として作成する。

  • --character-sets-dir=path

    キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --correct-checksum

    テーブルのチェックサム情報を修正する。

  • --data-file-length=len, -D len

    データファイルの最高長さ(「full」 時データファイルを再作成する場合)。

  • --extend-check, -e

    データファイルから全ての行をリカバーする修復を試みる。これは通常、役に立たない行も取り込んでしまう。よほど切羽詰っていない限り、このオプションは使用しないでください。

  • --force, -f

    アボートする代わりに、古い中間ファイルをオーバーライトする(tbl_name.TMD などの名前を持つファイル)

  • --keys-used=val, -k val

    myisamchk では、オプション値はどのインデックスを更新すべきかを指し示す、ビット値です。オプション値の各バイナリ ビットは、最初のインデックスがビット0のところ、テーブル インデックスと対応しています。0のオプション値は全てのインデックスへの更新を無効にし、これによりインサートのスピードを上げることができます。無効化されたインデックスは myisamchk -r を使用して有効化することができます。

  • --max-record-length=len

    myisamchk が記憶するためのメモリを確保できない場合、ある一定の長さの行をスキップします。

  • --parallel-recover, -p

    -r-n 同じテクニックを使いますが、異なるスレッドを使用して全てのキーをパラレルで作成します。これはベータ級コードです。ユーザの責任で使用してください。

  • --quick, -q

    データファイルを改良しないことで、修復のスピードを上げられます。このオプションを2回指定することで、複製キーの場合 myisamchk を使用して強制的にオリジナルデータファイルを改良させることができます。

  • --recover, -r

    ユニークではなユニークキー以外のほぼ全ての問題を解決することのできる修復を実行します(MyISAM テーブルでこのエラーが発生する可能性は非常に低いです)。テーブルをリカバーしたい場合、このオプションを先に試してください。--safe-recoverは、myisamchk--recover を使用してもテーブルがリカバーできないと報告した場合のみ、試すべきです。(非常に稀ではありますが、--recover が失敗した場合、データファイルは無事なままです。)

    メモリ容量に余裕がある場合、sort_buffer_size の値を増やすことをお勧めします。

  • --safe-recover, -o

    発見した行に基づいて、全ての行を読みこみ全てのインデックス トリーを更新する古いリカバリ手段をとります。この方法は --recover よりも格段に遅くなりますが、--recover では対応できない稀なケースにも対応できます。このリカバリメソッドは --recover よりもはるかに少ないディスクスペースを使用します。通常、まず --recover を使用して修復を行い、--recover が失敗した場合、--safe-recover を使用してください。

    メモリ容量に余裕がある場合、key_buffer_size の値を増やすことをお勧めします。

  • --set-collation=name

    テーブル インデックスのソートに使用する照合順序を特定します。照合順序名の初めの部位がキャラクタセット名を示しています。

  • --sort-recover, -n

    テンポラリ ファイルのサイズが大きくなりますが、キーの解決に強制的に myisamchk にソートを使用させます。

  • --tmpdir=path, -t path

    テンポラリ ファイルのソートに使用されるディレクトリのパスです。これがセットされていない場合、myisamchkTMPDIR 環境変数の値を使用します。tmpdir はテンポラリファイルの作成のためラウンドロビン形式でディレクトリ パスのリストをセットするために用いられます。 ディレクトリ名の間にあるキャラクタは、ユニックス上ではコロン(‘:’)であり、ウィンドウズ、Netware、OS/2ではではセミコロン(‘;’) になります。

  • --unpack, -u

    myisampack でパックされたテーブルをアンパックします。

7.4.4. 他の myisamchk オプション

myisamchk はテーブルチェックや修復以外のアクションを行う、以下のオプションをサポートしています。

  • --analyze, -a

    キー値の分布を分析します。ジョインオプティマイザに、どのテーブルを結合し、どのインデックスを使用するかより効率的に選択させることで結合パフォーマンスを向上させます。To キー分布の情報を取得するためには、myisamchk --description --verbose tbl_name コマンドか SHOW INDEX FROM tbl_name ステートメントを使用してください。

  • --block-search=offset, -b offset

    ある特定のオフセットのブロックが属する記録を見つけなさい。

  • --description, -d

    テーブルの説明を含む情報をプリントします。

  • --set-auto-increment[=value], -A[value]

    AUTO_INCREMENT ナンバリングを強制して新しい行がある値で始まるようにします(あるいは、存在する行の AUTO_INCREMENT 値が大きい場合、さらに大きい値で始まるようにします。)もし が特定されていない場合、新しい行の AUTO_INCREMENT 数字は現在テーブル内の最も高い値+1になります。

  • --sort-index, -S

    高い順にインデックストリーブロックをソートします。これによりシークが最適化され、インデックスを使用するテーブルスキャンのスピードが上がります。

  • --sort-records=N, -R N

    特定のインデックスに基づいて行をソートします。これによりデータがさらにローカライズされ、このインデックスを使用する、レンジに基づくSELECTORDER BYオペレーションのスピードが上がります。(初めてテーブルをソートするのにこのオプションを使用する場合、かなり遅い場合があります。)テーブルのインデックス数字を決定するには、myisamchkが見た同じ順序でテーブルのインデックスを表示するSHOW INDEXを使用してください。インデックスは1から番号がふられます。

    キーがパックされていない場合、(PACK_KEYS=0))同じ長さになります。よって、myisamchkが行を移動もしくはソートするとき、インデックスの行オフセットを上書きします。キーがパックされている場合、(PACK_KEYS=1myisamchkはまずキーブロックをアンパックし、それからインデックスを再作成、キーブロックをパックしなければいけません。(この場合、各インデックスのオフセットを更新するよりも、インデックスを再作成するほうが早いです。)

7.4.5. myisamchkメモリ使用量

myisamchkを起動させるとき、メモリの割り当ては重要です。myisamchkはセットされたメモリ関連の変数以上のメモリを使用しません。myisamchkを大きなテーブルで使用する場合、まずどのくらいのメモリを使用するか決定しなければいけません。デフォルトで、修復には3MBくらいしか使用しないように設定されています。さらに大きな値を設定することで、myisamchkのオペレーション速度を上げることができます。例えば、32MB RAMよりも多くメモリがある場合、以下のオプション(他に特定したオプションのほかに)を使用することができます。

shell> myisamchk --sort_buffer_size=16M --key_buffer_size=16M \
           --read_buffer_size=1M --write_buffer_size=1M ...

--sort_buffer_size=16Mを使用すれば、ほとんどの場合ことたります。

myisamchkTMPDIR内でテンポラリファイルを使用することに注意してください。もしTMPDIRがメモリファイルシステムを指した場合、メモリエラーから簡単に脱出できます。これが起こった場合、スペースに余裕のあるファイルシステム上のディレクトリを指定するよう、myisamchk--tmpdir=pathオプションと使用してください。

修復時、myisamchkもディスクスペースを大量に必要とします。

  • データファイルの大きさを2倍にしてください(オリジナルファイルと複製を作成してください)。--quickで修復を行った場合スペースは必要ありません。この場合、再作成されるのはインデックスファイルのみです。このスペースはオリジナルのデータファイルと同じシステムで必要になります!(コピーはオリジナルと同じディレクトリで作成されます。)

  • 古いインデックスファイルの代わりとなる新しいインデックスファイルのスペース修復オペレーションの始めに古いインデックスファイルは切り捨てられるため、大抵はこのスペースは無視されます。このスペースはオリジナルのインデックスファイルと同じシステムで必要になります!

  • --recoverあるいは--sort-recoverを使用しているとき、 (しかし--safe-recoverは使用していないとき)ソートバッファのスペースが必要となります。以下の式は必要なスペースの量を生み出します。

    (largest_key + row_pointer_length) × number_of_rows × 2
    

    キーの長さとrow_pointer_lengthmyisamchk -dv tbl_nameでチェックすることができます。このスペースはテンポラリディレクトリにアロケートされています。(TMPDIR--tmpdir=pathによって特定されています)。

修復中、ディスクスペースが足りなくなった場合、--recoverの代わりに--safe-recoverを使用してみてください。

7.5. myisamlog — Display MyISAM Log File Contents

myisamlogMyISAMログファイルの内容を処理します。

myisamlogは以下のように起動してください。

shell> myisamlog [options] [log_file [tbl_name] ...]

デフォルトオペレーションは更新(-u)になります。リカバリが実行された場合、(-r), 全ての書き込み、そして更新や削除も実行され、エラーは数えられるだけとなります。デフォルトログファイル名は、log_fileアーギュメントが存在しない場合、myisam.logとなります。コマンドライン上でテーブルに名前が与えられた場合、そのテーブルのみが更新されます。

myisamlogは以下のオプションを理解します。

  • -?, -I

    ヘルプ メッセージを表示し、閉じます。

  • -c N

    Nコマンドのみ実行します。

  • -f N

    開かれているファイルの最大数を特定します。

  • -i

    閉じる前に余分な情報を表示します。

  • -o offset

    始まりのオフセットを特定します。

  • -p N

    パスからNコンポーネントを取り除きます。

  • -r

    リカバリオペレーションを実行します。

  • -R record_pos_file record_pos

    行ポジションファイルと行ポジションを特定します。

  • -u

    更新オペレーションを実行します。

  • -v

    Verbose モードプログラムの動作についてさらに出力をプリントアウトする。このオプションをさらに多くの出力を生成するために複数回提供することができます。

  • -w write_file

    書き込みファイルを特定します。

  • -V

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

7.6. myisampack — 圧縮された、読み取り専用MyISAM テーブルを作成する。

myisampackユーティリティはMyISAMテーブルを圧縮します。myisampackはテーブル内の各カラムを別個に圧縮することで作動します。通常、myisampackは40%-70%データファイルをパックします。

テーブルが後で使用される場合、カラムの解凍に必要な情報をサーバがメモリ内に読み込みます。これにより個別の行をアクセスする際のパフォーマンスが向上します。これは1つの行のみ解凍するだけでことたりるからです。

MySQLは圧縮されたテーブルでメモリのマッピングが可能な場合、mmap()を使用します。もしmmap()が使用できない場合、MySQLは普通のファイル読み込み・書き込みオペレーションを使用します。

以下の点に注意してください。

  • もしmysqldサーバが外部ロックが無効化された状態で起動された場合、パックの最中にテーブルが更新される可能性があるので、myisampackの起動はお勧めできません。サーバが停止している最中にテーブルを圧縮するのが安全です。

  • テーブルをパックした場合、読み取り専用となります。通常これは意図して行います(たとえばCD内のパックされたテーブルにアクセスする際)。パックされたテーブル内で書き込みを許容できるようにする予定はありますが、優先順位は高くありません。

  • myisampackBLOBあるいはTEXTカラムをパックできます。(ISAMテーブルの古いpack_isamプログラムにはこの機能はありませんでした。)

myisampackは以下のように起動してください。

shell> myisampack [options] file_name ...

各ファイル名アーギュメントはインデックスファイル(.MYI) 名であるべきです。ユーザがデータベースディレクトリにいない場合、ファイルへのパスネームを特定してください。.MYI拡張の省略は許容されています。

myisampackを使用してテーブルを圧縮した後、インデックスを再生するためmyisamchk -rqを使用してください。 項7.4. 「myisamchk — MyISAM テーブル メンテナンス ユーティリティ」.

myisampackは次のオプションをサポートします。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --backup, -b

    tbl_name.OLDを使用して各テーブルのデータファイルのバックアップを作成します。

  • --character-sets-dir=path

    キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

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

    デバッグのログを書き込みます。debug_options 文字列は大抵 'd:t:o,file_name'になります。

  • --force, -f

    元のテーブルより大きくなるか、以前のmyisampack起動からのインターミディートファイルが存在する場合も、パックされたテーブルを生成します。(myisampackは、テーブル圧縮時、tbl_name.TMDと名づけられたインターミディエートファイルをデータベースディレクトリ内に作成します。myisampackを抹消した場合、.TMDファイルは削除されていないかもしれません。)通常、myisampacktbl_name.TMDが存在する場合、エラーが発生し閉じます。--forceでは、myisampackはかまわずテーブルをパックします。

  • --join=big_tbl_name, -j big_tbl_name

    コマンドライン上の全テーブルを1つのテーブルbig_tbl_nameに結合します。結合されるテーブルは、必ず同一の構成でなければいけません(同一カラム名、型、同一インデックス等など)。

  • --packlength=len, -p len

    バイトで行長さ保存サイズを特定します。値は1、2、あるいは3であるべきです。 myisampackは全ての行を1、2、あるいは3バイトの長さポインタで記憶します。通常、myisampackはファイルのパックをはじめる前に正しい長さの値を割り出せますが、さらに短い長さを使用することができた場合でも、パック処理の最中に気づかない可能性がありあます。この場合、myisampackは次回同じファイルをパックする際、さらに短い行長さを使用することができることを示すノートをプリントします。

  • --silent, -s

    サイレントモード。エラーが発生したときのみアウトプットを書き込みます。

  • --test, -t

    実際にテーブルをパックせず、パックのテストを行います。

  • --tmpdir=path, -T path

    名づけられたディレクトリを、myisampackがテンポラリファイルを作成する場所に使用します。

  • --verbose, -v

    Verbose モードパックオペレーションの進捗具合と結果を示す情報を書き出します。

  • --version, -V

    バージョン情報を表示し、閉じます。

  • --wait, -w

    テーブルが使用中の場合、待ってから再度試みます。もしmysqldサーバが外部ロックが無効化された状態で起動された場合、パックの最中にテーブルが更新される可能性があるので、myisampackの起動はお勧めできません。

以下のコマンドシーケンスは典型的なテーブル圧縮セッションを表しています。

shell> ls -l station.*
-rw-rw-r--   1 monty    my         994128 Apr 17 19:00 station.MYD
-rw-rw-r--   1 monty    my          53248 Apr 17 19:00 station.MYI
-rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm

shell> myisamchk -dvv station

MyISAM file:     station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-02-02  3:06:43
Data records:              1192  Deleted blocks:              0
Datafile parts:            1192  Deleted data:                0
Datafile pointer (bytes):     2  Keyfile pointer (bytes):     2
Max datafile length:   54657023  Max keyfile length:   33554431
Recordlength:               834
Record format: Fixed length

table description:
Key Start Len Index   Type                 Root  Blocksize    Rec/key
1   2     4   unique  unsigned long        1024       1024          1
2   32    30  multip. text                10240       1024          1

Field Start Length Type
1     1     1
2     2     4
3     6     4
4     10    1
5     11    20
6     31    1
7     32    30
8     62    35
9     97    35
10    132   35
11    167   4
12    171   16
13    187   35
14    222   4
15    226   16
16    242   20
17    262   20
18    282   20
19    302   30
20    332   4
21    336   4
22    340   1
23    341   8
24    349   8
25    357   8
26    365   2
27    367   2
28    369   4
29    373   4
30    377   1
31    378   2
32    380   8
33    388   4
34    392   4
35    396   4
36    400   4
37    404   1
38    405   4
39    409   4
40    413   4
41    417   4
42    421   4
43    425   4
44    429   20
45    449   30
46    479   1
47    480   1
48    481   79
49    560   79
50    639   79
51    718   79
52    797   8
53    805   1
54    806   1
55    807   20
56    827   4
57    831   4

shell> myisampack station.MYI
Compressing station.MYI: (1192 records)
- Calculating statistics

normal:     20  empty-space:   16  empty-zero:     12  empty-fill:  11
pre-space:   0  end-space:     12  table-lookups:   5  zero:         7
Original trees:  57  After join: 17
- Compressing file
87.14%
Remember to run myisamchk -rq on compressed tables

shell> ls -l station.*
-rw-rw-r--   1 monty    my         127874 Apr 17 19:00 station.MYD
-rw-rw-r--   1 monty    my          55296 Apr 17 19:04 station.MYI
-rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm

shell> myisamchk -dvv station

MyISAM file:     station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-04-17 19:04:26
Data records:               1192  Deleted blocks:              0
Datafile parts:             1192  Deleted data:                0
Datafile pointer (bytes):      3  Keyfile pointer (bytes):     1
Max datafile length:    16777215  Max keyfile length:     131071
Recordlength:                834
Record format: Compressed

table description:
Key Start Len Index   Type                 Root  Blocksize    Rec/key
1   2     4   unique  unsigned long       10240       1024          1
2   32    30  multip. text                54272       1024          1

Field Start Length Type                         Huff tree  Bits
1     1     1      constant                             1     0
2     2     4      zerofill(1)                          2     9
3     6     4      no zeros, zerofill(1)                2     9
4     10    1                                           3     9
5     11    20     table-lookup                         4     0
6     31    1                                           3     9
7     32    30     no endspace, not_always              5     9
8     62    35     no endspace, not_always, no empty    6     9
9     97    35     no empty                             7     9
10    132   35     no endspace, not_always, no empty    6     9
11    167   4      zerofill(1)                          2     9
12    171   16     no endspace, not_always, no empty    5     9
13    187   35     no endspace, not_always, no empty    6     9
14    222   4      zerofill(1)                          2     9
15    226   16     no endspace, not_always, no empty    5     9
16    242   20     no endspace, not_always              8     9
17    262   20     no endspace, no empty                8     9
18    282   20     no endspace, no empty                5     9
19    302   30     no endspace, no empty                6     9
20    332   4      always zero                          2     9
21    336   4      always zero                          2     9
22    340   1                                           3     9
23    341   8      table-lookup                         9     0
24    349   8      table-lookup                        10     0
25    357   8      always zero                          2     9
26    365   2                                           2     9
27    367   2      no zeros, zerofill(1)                2     9
28    369   4      no zeros, zerofill(1)                2     9
29    373   4      table-lookup                        11     0
30    377   1                                           3     9
31    378   2      no zeros, zerofill(1)                2     9
32    380   8      no zeros                             2     9
33    388   4      always zero                          2     9
34    392   4      table-lookup                        12     0
35    396   4      no zeros, zerofill(1)               13     9
36    400   4      no zeros, zerofill(1)                2     9
37    404   1                                           2     9
38    405   4      no zeros                             2     9
39    409   4      always zero                          2     9
40    413   4      no zeros                             2     9
41    417   4      always zero                          2     9
42    421   4      no zeros                             2     9
43    425   4      always zero                          2     9
44    429   20     no empty                             3     9
45    449   30     no empty                             3     9
46    479   1                                          14     4
47    480   1                                          14     4
48    481   79     no endspace, no empty               15     9
49    560   79     no empty                             2     9
50    639   79     no empty                             2     9
51    718   79     no endspace                         16     9
52    797   8      no empty                             2     9
53    805   1                                          17     1
54    806   1                                           3     9
55    807   20     no empty                             3     9
56    827   4      no zeros, zerofill(2)                2     9
57    831   4      no zeros, zerofill(1)                2     9

myisampackは以下の種類の情報を表示します。

  • ノーマル

    余分なパックが使用されていないカラムの数。

  • empty-space

    スペースの値のみ含むカラムの数これらは1ビットの容量を占めています。

  • empty-zero

    バイナリゼロの値のみ含むカラムの数これらは1ビットの容量を占めています。

  • empty-fill

    それぞれの型のバイトレンジを全て占領しない整数カラムの数。これらは小さいタイプに変えられます。例えば、BIGINT カラム (8バイト)の全ての値が-128 から 127 の範囲内にある場合は、このカラムを TINYINT カラム(1バイト)として格納する事ができます。

  • pre-space

    リードスペースで記憶される小数点カラムの数。この場合、各値はリードスペースの数に対して数値を含んでいます。

  • end-space

    トレールスペースを多く含むカラムの数。この場合、各値はトレールスペースの数に対して数値を含んでいます。

  • table-lookup

    ハフマン圧縮の前にENUMに変換された、少量の異なる値が絡むにありました。

  • zero

    全ての値がゼロのカラムの数です。

  • オリジナルトリー

    もともとのハフマントリーの数です。

  • アフタージョイン(結合)

    ヘッダースペース温存のため、トリーの結合の後に残った明確なハフマントリーの数です。

テーブルが圧縮された後、myisamchk -dvvは各カラムの追加情報をプリントします。

  • タイプ

    データ型。この値は以下のどれかの記述子を含んでいます。

    • constant

      全ての行は同じ値を持っています。

    • no endspace

      エンドスペースを記憶しません。

    • no endspace, not_always

      エンドスペースを記憶せず、また全ての値にエンドスペース圧縮を行いません。

    • no endspace, no empty

      エンドスペースを記憶しません。空の値を記憶しません。

    • table-lookup

      カラムはENUMに変換されています。

    • zerofill(N)

      値の中の最も重要なNバイトは常に0であり、記憶されません。

    • no zeros

      ゼロを記憶しません。

    • always zero

      1ビットを使用してゼロ値が記憶されます。

  • Huff tree

    カラムに関連しているハフマントリーのナンバーです。

  • Bits

    ハフマントリーで使用されているビット数です。

myisampack起動後、インデックスを再作成するにはmyisamchkを起動しなければいけません。このとき、MySQLオプティマイザの作動効率化を図りたい場合、インデックスブロックのソートと統計の作成を行うことができます。

shell> myisamchk -rq --sort-index --analyze tbl_name.MYI

MySQLデータベースディレクトリにパックされたテーブルをインストールした後、mysqldに新しいテーブルの使用を強制するため、mysqladmin flush-tablesを実行してください。

パックされたテーブルをアンパックする場合、myisamchkに対して--unpackオプションを使用してください。

7.7. mysql — MySQL コマンド ライン ツール

mysqlは単純な(GNUreadline機能を装備した。)SQLシェルです。インタラクティブ・ノンインタラクティブ使用の両方をサポートします。インタラクティブの場合、ASCII-テーブルフォーマットでクエリの結果が提示されます。ノンインタラクティブの場合(例えばフィルターとして),、タブによって分けられたフォーマットで結果が提示されます。出力フォーマットはコマンドオプションを使用することで変更することができます。

大きな結果セット用のメモリが足りないことで問題が発生している場合、--quickオプションを使用してください。これにより、mysqlは全結果セットを取得、メモリ内でバッファ後表示といった一連の作業を一気にこなさず、サーバから1行ずつ結果を取得します。これは、mysql_store_result()よりも、クライアントサーバ内のmysql_use_result() C API ファンクションを使用して結果セットを返すことで実行できます。

mysqlの使用は簡単です。以下の様に、コマンドインタープリタのプロンプトから起動してください。

shell> mysql db_name

または

shell> mysql --user=user_name --password=your_password db_name

そこでSQLステートメントを書き、‘;’、\g、または\Gで終わらせEnterを押してください。

MySQL 5.1.10以降、コントロールC を押すことでmysqlに現在のステートメントの消去を命令します。これが実行できない場合、あるいはステートメントが消去される前にコントロールCが押された場合、mysqlは閉じます。以前では、コントロールCを押すとmysqlは全ての場合において閉じました。

SQLステートメントは以下の様に、スクリプトファイル(バッチファイル)形式で実行できます。

shell> mysql db_name < script.sql > output.tab

7.7.1. mysql オプション

mysql は次のオプションをサポートします。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --auto-rehash

    自動リハッシュを有効化します。このオプションはデフォルトではオンに設定されており、テーブル・カラム名の終了を可能にしています。リハッシュを無効化するには、--skip-auto-rehashを使用してください。これによりmysqlの起動が早くなりますが、テーブル・カラム名を終了させたい場合、rehashコマンドを発行しなければいけません。

  • --batch, -B

    タブとして、カラムセパレータを使用することで、各行が新しいライン上に配置されるように、結果をプリントします。このオプションでは、mysqlはヒストリファイルを使用しません。

  • --character-sets-dir=path

    キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --column-names

    結果にカラム名を記述します。

  • --compress, -C

    双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。

  • --database=db_name, -D db_name

    使用されるべきデータベースです。これは基本的には、オプションファイルで便利です。

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

    デバッグのログを書き込みます。debug_options 文字列は大抵 'd:t:o,file_name' になります。.'d:t:o,/tmp/mysql.trace'がデフォルトになります。

  • --debug-info, -T

    プログラムが閉じるときに、デバッグ情報をプリントします。

  • --default-character-set=charset_name

    charset_nameをデフォルトキャラクタセットとして使用します。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --delimiter=str

    ステートメントデリミタをセットします。デフォルトはセミコロン(‘;’)キャラクタになります。

  • --execute=statement, -e statement

    ステートメントを実行し、やめます。デフォルトの出力フォーマットは、--batchで生成されるものと類似しています。例については、項3.3.1. 「コマンドラインにおけるオプションの使用」 をご参照してください。

  • --force, -f

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

  • --host=host_name, -h host_name

    与えられたホスト上でMySQLサーバに接続します。

  • --html, -H

    HTML出力を生成します。

  • --ignore-spaces, -i

    ファンクション名の後のスペースを無視します。これの効果はIGNORE_SPACE SQLモード(項4.2.6. 「SQL モード」を参照してください)のディスカッションで記述されています。

  • --line-numbers

    エラーの際ライン番号を書き出します。--skip-line-numbersを使用することで無効化することができます。

  • --local-infile[={0|1}]

    LOAD DATA INFILE上でLOCAL能力を有効化・無効化する。値がない場合、オプションはLOCALを有効化します。オプションはLOCALを明示的に有効化・無効化するため、--local-infile=0--local-infile=1として提供されている場合があります。LOCALを有効化しても、サーバがサポートしていない場合、効果はありません。.

  • --named-commands, -G

    名をつけられているmysqlコマンドを有効化します。ショートフォーマットコマンドだけでなく、ロングフォーマットコマンドも許容されています。例えば、quit\qは両方認識されます。名前つきコマンドを無効化するには、--skip-named-commandsを使用してください。項7.7.2. 「mysql Commands」 を参照してください。

  • --no-auto-rehash, -A

    -skip-auto-rehashの反対のフォーム。--auto-rehashの説明を参照してください。

  • --no-beep, -b

    エラー音を発生させません。

  • --no-named-commands, -g

    名前のついたコマンドを無効化します。\*フォームか、名前のついたコマンドはセミコロン(‘;’)で終わる行の始めのみで使用してください。 mysqlはデフォルトでenabledこのオプションで起動します。ただし、このオプションを使用しても、ロングフォーマットコマンドは最初の行から効果を発揮します。項7.7.2. 「mysql Commands」 を参照してください。

  • --no-pager

    --skip-pagerの反対のフォーム。--pagerオプションを参照してください。

  • --no-tee

    アウトプットをファイルへコピーしません。項7.7.2. 「mysql Commands」, discusses tee files further.

  • --one-database, -o

    コマンドライン上で名づけられたデフォルトのデータベースのステートメント以外を無視します。これは他のバイナリログ内のデータベースの更新をスキップする場合に便利です。

  • --pager[=command]

    ページングクエリ出力にこのコマンドを使用してください。このコマンドが取り除かれている場合、ページングのデフォルトはPAGER環境変数の値となります。有効なページングはlessmorecat [> filename]等などです。このオプションはUnix上でしか作動しません。バッチモードでは作動しません。ページングを無効化するには、--skip-pagerを使用してください。項7.7.2. 「mysql Commands」, には出力ページングの詳細説明があります。

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

    サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。

    コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

  • --port=port_num, -P port_num

    コネクションに使用するTCP/IPポート番号です。

  • --prompt=format_str

    プロンプトを特定のフォーマットにセットします。そのデフォルトはmysql>です。プロンプト内で存在しえる特別なシーケンスは、項7.7.2. 「mysql Commands」で紹介されています。

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

    使用するべき接続プロトコルです。

  • --quick, -q

    各クエリ結果をキャッシュせず、受け取ったとおりに各行をプリントします。出力が遅延された場合、サーバのスピードを下げることがあります。このオプションでは、mysqlはヒストリファイルを使用しません。

  • --raw, -r

    エスケプ変換なしでカラム値を書きます。主に--batchオプションと併用されます。

  • --reconnect

    サーバとの接続が失われたとき、再接続を自動的に試みます。接続が失われるたびに一度再接続が試みられます。再接続行為を抑制するには、--skip-reconnectを使用してください。

  • --safe-updates, --i-am-a-dummy, -U

    キー値を使用してどの行を改良するか特定する、UPDATEDELETEステートメントを許容する。このオプションをオプションファイル内でセットした場合、--safe-updatesをコマンドライン上で使用することで重ね処理することができます。これらのオプションについては、項7.7.5. 「mysqlヒント」 をご参照してください。

  • --secure-auth

    古い(4.1.1以前)フォーマットでサーバへパスワードを送りません。接続を新しいパスワードフォーマットを使用するサーバに限定します。

  • --show-warnings

    警告が存在する場合、各ステートメント後に表示させます。このオプションはインタラクティブとバッチモードにのみ対応しています。

  • --sigint-ignore

    SIGINTシグナルを無視します(Control-Cを押すことで現れる主な結果)。

  • --silent, -s

    サイレントモード。出力生成を少なくします。このオプションをさらに少ない出力を生成するために複数回提供することができます。

  • --skip-column-names, -N

    結果にカラム名を記述しません。

  • --skip-line-numbers, -L

    エラーの際ライン番号を書き出しません。エラーメッセージを含む結果ファイルを比較したい場合に便利です。

  • --socket=path, -S path

    localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。

  • --ssl*

    --sslで始まるオプションは、SSLを介してサーバに接続し、SSL キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」 を参照してください。

  • --table, -t

    出力をテーブルフォーマットで評します。インタラクティブの場合これがデフォルトになりますが、テーブル出力をバッチモードで生成するのに使用することもできます。

  • --tee=file_name

    ファイル上で出力の複製をアペンドします。このオプションはバッチモードでは作動しません。項7.7.2. 「mysql Commands」でteeファイルの説明を記述しています。

  • --unbuffered, -n

    各クエリ後にバッファをフラッシュします。

  • --user=user_name, -u user_name

    サーバに接続する際使用するMySQLユーザ名です。

  • --verbose, -v

    Verbose モードプログラムの動作についてさらに出力を生成します。このオプションをさらに多くの出力を生成するために複数回提供することができます。(例えば、-v -v -vはバッチモードでもテーブル出力フォーマットを生成します。)

  • --version, -V

    バージョン情報を表示し、閉じます。

  • --vertical, -E

    クエリ出力行を縦にプリントします。(カラム値ごとに一行)。このオプションを使用しない場合、\Gで消去することで個々のステートメントの縦の出力を特定することができます。

  • --wait, -w

    接続ができない場合、アボートせずに休止してから再トライします。

  • --xml, -X

    XML出力を生成します。

    :MySQL 5.1.12以前では、カラム内にNULL値を含むカラムと文字列リテラルをカラム内に含む'NULL'では、出力に違いは在りませんでした。双方とも、以下のように表現されていました。

    <field name="column_name">NULL</field>
    

    MySQL 5.1.12に始まり、--xmlmysqlと使用されたときの出力はmysqldump --xmlの出力とマッチします。.マニュアルのセクションを参照してください。mysqldumpの詳細について、--xmlオプションが紹介されています。

--var_name=value 構文を使用することで以下の構文をセットすることができます。

  • connect_timeout

    接続タイムアウトまでの秒数。(そのデフォルトは0です。)

  • max_allowed_packet

    サーバから送・受信される最大パケット長。(そのデフォルト値はは16MBです。)

  • max_join_size

    自動的に設定される--safe-updates使用時の結合内にある行のリミットです。(そのデフォルト値は1,000,000です。)

  • net_buffer_length

    TCP/IPとソケット通信のバッファサイズ。(そのデフォルト値はは16KBです。)

  • select_limit

    自動的に設定される--safe-updates使用時のSELECTステートメントのリミットです。(そのデフォルト値は1,000です。)

--set-variable=var_name=value or -O var_name=value構文を使用することで、変数をセットすることも可能です。構文は反対語となっています。.

Unixでは、mysqlクライアントはヒストリファイルに実行されたステートメントのレコードを書きます。デフォルトによりそのヒストリファイルは.mysql_historyと名づけられており、ホームディレクトリ内で作成されます。異なるファイルを特定したい場合、MYSQL_HISTFILE環境変数値をセットしてください。

ヒストリファイルを保持したくない場合、まず.mysql_historyが存在する場合消去し、以下の手段を用いてください。

  • MYSQL_HISTFILE変数を/dev/nullにセットしてください。ログインするたびにこのセッティングが効果を表すようにするには、このセッティングをシェルのスタートアップファイルのいずれかに置いてください。

  • .mysql_history/dev/nullに対してのシンボリックリンクとして作成してください。

    shell> ln -s /dev/null $HOME/.mysql_history
    

    これは一度だけ実行すれば事足ります。

7.7.2. mysql Commands

mysqlは各SQLステートメントの実行のため、ユーザが発行するSQLステートメントをサーバに送ります。mysql自体が理解するコマンドもあります。これらコマンドのリストが必要な場合、mysql>プロンプトでhelpあるいは\hとタイプしてください。

mysql> help

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
charset   (\C) Switch to another charset. Might be needed for processing
               binlog with multi-byte charsets.
clear     (\c) Clear command.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as
               new delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given
               outfile.
use       (\u) Use another database. Takes database name as argument.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.

For server side help, type 'help contents'

各コマンドにはそれぞれロングとショートフォームがあります。ロングフォームは大文字小文字の区別をしませんが、ショートフォームは影響されます。ロングフォームはセミコロンによる終端器が後に続くこともありますが、ショートフォームではありません。

helpコマンドにアーギュメントを提供した場合、mysqlはMySQLリファレンスマニュアルの内容からサーバサイドヘルプをアクセスするための検索文字列としてアーギュメントを使用します。詳細は 項7.7.3. 「mysqlサーバサイドヘルプ」 をご覧ください。

charsetコマンドは、デフォルトキャラクタセットを変更しSET NAMESステートメントを発行します。これにより、mysqlが自動再接続が有効化された状態で作動中でも、クライアント・サーバ間のキャラクタセットがシンクロしている状態を保つことができるのは、変更されたキャラクタセットが再接続に使用されるからです(これは推奨されていません)。このコマンドはMySQL 5.1.12.で追加されました。

delimiterコマンドを使用する時、MySQLに対してエスケープキャラクタとなるので、バックスラッシュ (‘\’) キャラクターの使用を避けてください。

editnopagerpager、そしてsystemコマンドはUnix上でのみ機能します。

statusコマンドは、ユーザが使用している接続とサーバに関する情報を提供します。--safe-updatesモードで作動中の場合、statusはクエリに影響するmysql変数の値をプリントhします。

クエリとクエリの出力をログするには、teeコマンドを使用してください。画面上に表示されるデータは全てあるファイルにアペンドされます。これはデバッグを行う際も非常に便利です。この機能をコマンドライン上で有効化する場合は--teeオプションを使用するか、インタラクティブの場合はtee コマンドを使用してください。teeファイルはnoteeコマンドでインタラクティブに無効化することができます。teeを実行することでロギングを再有効化します。 パラメータがない場合、以前のファイルが使用されます。mysqlが次のプロンプトをプリントする前に、teeは各ステートメントの後にクエリの結果をフラッシュすることに注意してください。

--pagerオプションを使用することで、インタラクティブモードではクエリ結果をブラウズ、検索することがless, moreUnix、もしくは他の似たようなプログラムで可能です。オプションで値を特定しない場合、mysqlPAGER環境変数の値をチェックし、ページャーをその値にセットします。出力ページングはpagerコマンドでインタラクティブに有効化することができ、nopagerで無効化することができます。コマンドはオプショナルアーギュメントを採用します。与えられている場合、ページプロググラムはそれにセットされます。アーギュメントがない場合、ページャーはコマンドラインにセットされているものか、ページャーが特定されていない場合stdoutになります。

出力ページングはUnix上でしか作動しません。これはWindowsでは存在しないpopen()ファンクションを使用するからです。Windowsでは、クエリ出力を記憶するのにteeオプションが使用できますが、これは場合によってはブラウジング出力用のpagerほど便利ではありません。

pagerコマンドのヒントを以下に記します。

  • これを使用してファイルに書き込み、結果はファイルにのみ送られます。

    mysql> pager cat > /tmp/log.txt
    

    ユーザのページャーとして使用したいプログラムのオプションをパスすることができます。

    mysql> pager less -n -i -S
    
  • 前の例の、-Sオプションに注目してください。幅広いクエリ結果のブラウズの際便利です。スクリーン上であまりにも幅広い結果セットは読みにくい場合があります。lessに対する-Sオプションは、左右の方向キーを使用して横にスクロールすることができますので、結果セットを読みやすくします。-Sless内で、横向きブラウズモードをオン・オフする際にインタラクティブに使用することができます。追加情報に関しては、lessマニュアルのページを参照してください。

    shell> man less
    
  • クエリアウトプットの取り扱いに関する複雑なページャーコマンドを特定することができます。

    mysql> pager cat | tee /dr1/tmp/res.txt \
              | tee /dr2/tmp/res2.txt | less -n -i -S
    

    この例では、クエリ結果を/dr1/dr2上の2つの異なるファイルシステム、ディレクトリ、そしてファイルに送信しますが、lessを介して結果を画面に表示します。

teepagerファンクションも合わせる事ができます。teeファイルを有効化し、pagerlessにセットしてあれば、lessプログラムを使い結果をブラウズしつつ、同時に全てをファイルにアペンドすることができます。pagerコマンドと一緒に使用されたUnix teemysqlビルトインteeコマンドの違いは、teeはUnix teeが提供されていない場合でも作動します。ビルトインteeはスクリーンにプリントされているもの全てをログしますが、pagerと一緒に使用されるUnix teeはそこまでログしません。さらに、teeファイルロギングはmysql内からインタラクティブにオン・オフすることができます。これは一部のクエリだけファイルにログしたいときに有効です。

デフォルトmysql>プロンプトは再コンフィギャ可能です。プロンプトを定義する文字列は以下の特別なシーケンスを含んでいる場合があります。

オプション説明
\vサーババージョン
\dデフォルトデータベース
\hサーバホスト
\p現TCP/IPポートかソケットファイル
\uユーザネーム
\Uフルのuser_name@host_nameアカウント名
\\リテラル‘\’バックスラッシュキャラクタ
\nニューラインキャラクタ
\tタブキャラクタ
スペース(バックスラッシュの後のスペース)
\_スペース
\R現時刻、軍隊表記(0-23)
\r現時刻、標準表記(1-12)
\m現時刻の分
\y現年、2桁
\Y現年、4桁
\D日付(フルで)
\s現時刻の秒
\w曜日名を頭3文字で(Mon, Tue, …)
\Pam/pm
\o月名を数字で
\O月明を頭3文字で(Jan, Feb, …)
\c発行されたステートメントごとに増加するカウンター
\l現デリミタ(5.1.12で新規追加)
\Sセミコロン
\'シングルクオート
\"ダブルクオート

\’他の文字が後続する場合、文字はその後続する文字に変わります。

アーギュメント無しでpromptコマンドを特定した場合、mysqlはプロンプトをmysql>のデフォルトにセットします。

プロンプトはいくつかの方法でセットできます。

  • 環境変数を使用してください。MYSQL_PS1環境変数をプロンプト文字列にセットすることができます。例:

    shell> export MYSQL_PS1="(\u@\h) [\d]> "
    
  • コマンドラインオプションを使用してください。 コマンドライン上の--promptオプションをmysqlにセットすることができます。例:

    shell> mysql --prompt="(\u@\h) [\d]> "
    (user@host) [database]>
    
  • オプションファイルを使用してください。 どのMySQLオプションファイルの[mysql]グループにも、promptオプションをセットすることができます。例えば、ホームディレクトリにある/etc/my.cnf or the .my.cnfファイル。例:

    [mysql]
    prompt=(\\u@\\h) [\\d]>\\_
    

    この例では、バックスラッシュが2つあることに注意してください。オプションファイルでpromptオプションを使用してプロンプトをセットした場合、特別なプロンプトオプションを使用するときはバックスラッシュをダブルで使用することをお勧めします。オプションファイルに認識される、許容可能なプロンプトオプションと特別なエスケプシーケンスのセットには、重複部分があります。(これらシーケンスは項3.3.2. 「オプションファイルの使用」で記されたいます。)シングルのバックスラッシュのみを使用している場合、重複は問題となる可能性があります。例えば、\sは現秒値としてよりも、スペースとして解釈されます。以下の例ではオプションファイルを使用してプロンプトを定義することで、HH:MM:SS>フォーマットで現時刻を含む方法を示しています。

    [mysql]
    prompt="\\r:\\m:\\s> "
    
  • インタラクティブでプロンプトをセットしてください。prompt (あるいは\R)コマンドを使用することでインタラクティブにプロンプトを変更することができます。例:

    mysql> prompt (\u@\h) [\d]>\_
    PROMPT set to '(\u@\h) [\d]>\_'
    (user@host) [database]>
    (user@host) [database]> prompt
    Returning to default PROMPT of mysql>
    mysql>
    

7.7.3. mysqlサーバサイドヘルプ

mysql> help search_string

helpコマンドにアーギュメントを提供した場合、mysqlはMySQLリファレンスマニュアルの内容からサーバサイドヘルプをアクセスするための検索文字列としてアーギュメントを使用します。このコマンドの正当なオペレーションはmysqlデータベース内のヘルプテーブルがヘルプトピック情報で初期化されていることを要求します(項4.2.8. 「サーバ サイド ヘルプ」を参照してください)。

検索文字列にマッチがない場合、検索は失敗に終わります。

mysql> help me

Nothing found
Please try to run 'help contents' for a list of all accessible topics

ヘルプカテゴリのリストを閲覧するにはhelp contentsを使用してください。

mysql> help contents
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the
following categories:
   Account Management
   Administration
   Data Definition
   Data Manipulation
   Data Types
   Functions
   Functions and Modifiers for Use with GROUP BY
   Geographic Features
   Language Structure
   Plugins
   Storage Engines
   Stored Routines
   Table Maintenance
   Transactions
   Triggers

検索文字列にマッチが多数ある場合は、mysqlはマッチするトピックのリストを表示します。

mysql> help logs
Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following topics:
   SHOW
   SHOW BINARY LOGS
   SHOW ENGINE
   SHOW LOGS

トピックのヘルプ情報を閲覧するには、トピックを検索文字列として使用してください。

mysql> help show binary logs
Name: 'SHOW BINARY LOGS'
Description:
Syntax:
SHOW BINARY LOGS
SHOW MASTER LOGS

Lists the binary log files on the server. This statement is used as
part of the procedure described in [purge-master-logs], that shows how
to determine which logs can be purged.

mysql> SHOW BINARY LOGS;
+---------------+-----------+
| Log_name      | File_size |
+---------------+-----------+
| binlog.000015 |    724935 |
| binlog.000016 |    733481 |
+---------------+-----------+

7.7.4. テキストファイルからSQLステートメントを実行する

mysqlクライアントは、以下の様にインタラクティブに使用されます。

shell> mysql db_name

しかし、SQLステートメントをファイルに入れ、mysqlにはそのインプットをフィあるから読み取るように指示することも可能です。そうすることで、実行したいステートメントを含むtext_fileを作成することができます。それから、以下で示されるようにmysqlを起動してください。

shell> mysql db_name < text_file

ファイルの最初のステートメントとしてUSE db_nameステートメントを置いた場合、コマンドライン上でデータベース名の特定は不必要になります。

shell> mysql < text_file

すでにmysqlが作動中の場合は、source\. command:を使用してSQLスクリプトを実行することができます。

mysql> source file_name
mysql> \. file_name

ユーザに進行状況を表示するスクリプトを使用したい場合があります。以下のようなステートメントを使用してください。

SELECT '<info_to_display>' AS ' ';

表示されたステートメントは<info_to_display>を出力します。

バッチモードの詳細についてはUsing mysql in Batch Modeを参照してください。

7.7.5. mysqlヒント

このセクションではmysqlをさらに効果的に使用するテクニックを紹介します。

7.7.5.1. クエリ結果を縦に表示する

クエリ結果の中にはたて表示のほうが、横テーブルフォーマットよりも読みやすいものがあります。セミコロンの代わりに\Gがついたクエリを消去することで、クエリは縦に表示できます。例えば、新しい行を含む長いテキスト値は立て表示のほうがはるかに読みやすいです。

mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\G
*************************** 1. row ***************************
  msg_nro: 3068
     date: 2000-03-01 23:29:50
time_zone: +0200
mail_from: Monty
    reply: monty@no.spam.com
  mail_to: "Thimble Smith" <tim@no.spam.com>
      sbj: UTF-8
      txt: >>>>> "Thimble" == Thimble Smith writes:

Thimble> Hi.  I think this is a good idea.  Is anyone familiar
Thimble> with UTF-8 or Unicode? Otherwise, I'll put this on my
Thimble> TODO list and see what happens.

Yes, please do that.

Regards,
Monty
     file: inbox-jani-1
     hash: 190402944
1 row in set (0.09 sec)

7.7.5.2. --safe-updatesオプションを使用する

初心者にとって、使いやすいスタートアップオプションは--safe-updates (あるいは同じ効果のある--i-am-a-dummy)です。これはDELETE FROM tbl_nameステートメントを発行したが、WHERE節を忘れてしまった場合に便利です。通常、このようなステートメントはテーブルから全ての行を消去します。--safe-updatesでは、行を表すキー値をとくていすることで飲み、行を消去することができます。これにより、間違いや事故を予防します。

--safe-updatesオプションを使用するとき、mysqlはMySQLサーバに接続した際以下のステートメントを 発行します。

SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=1000, SQL_MAX_JOIN_SIZE=1000000;

詳しくはこちらをを参照してください項12.5.3. 「SET 構文」

SETステートメントには以下の効果があります。

  • UPDATEDELETEステートメントは、WHERE節内でキー制限を特定するか、LIMIT節を提供するか(あるいは両方)しないかぎり、実行は許容されません。例:

    UPDATE tbl_name SET not_key_column=val WHERE key_column=val;
    
    UPDATE tbl_name SET not_key_column=val LIMIT 1;
    
  • サーバは全ての大きいSELECT結果を1,000行に限定します。ただし、ステートメントにLIMIT節が含まれていない場合にのみです。

  • サーバは、1,000,000の行コンビネーションをチェックしかなければいけない、複数テーブルSELECTステートメントをアボートします。

1,000 と1,000,000以外の制限を特定するには、--select_limit--max_join_sizeオプションを使用することでデフォルトを重ね処理することができあます。

shell> mysql --safe-updates --select_limit=500 --max_join_size=10000

7.7.5.3. mysql自動再接続の無効化

もしmysqlクライアントが、ステートメントの送信中にサーバとの接続が遮断された場合、直ちに自動的に再接続し、ステートメントの送信を再度試みます。ただし、mysqlが再接続に成功しても、最初の接続が遮断された時点で前セッションオブジェクトと設定は失われています。この中には、テンポラリテーブル、オートコミットモード、ユーザによって定義された変数やセッション変数も含まれています。加えて、現トランザクションロールバックも。この動作は危険な場合があります。例えば、以下の例ではサーバはユーザの了解なしに、最初のステートメントと二番目のステートメントの間に終了し、リスタートさせられています。

mysql> SET @a=1;
Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO t VALUES(@a);
ERROR 2006: MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    1
Current database: test

Query OK, 1 row affected (1.30 sec)

mysql> SELECT * FROM t;
+------+
| a    |
+------+
| NULL |
+------+
1 row in set (0.05 sec)

@aユーザ変数は接続と共に失われ、再接続語は定義されていません。接続が失われた際に、mysqlがエラーで終了することが望ましい場合、mysqlクライアントを--skip-reconnectオプションでスタートさせることができます。

自動再接続と再接続時の状態と効果に関する追加情報は、項23.2.13. 「自動再接続挙動の管理」を参照してください。

7.8. mysqlaccess — アクセス権限をチェックするクライアント

mysqlaccessはMySQL分布のために、Yves Carlierが提供した診断ツールです。ホスト名、ユーザ名、そしてデータベースコンビネーションのアクセス権限をチェックします。mysqlaccessはアクセスをチェックする際、userdb、そしてhostテーブルのみを使用します。tables_privcolumns_priv、そしてprocs_priv テーブルで特定されるテーブル、カラム、そしてルーチン権限はチェックしません。

mysqlaccessは以下のように起動してください。

shell> mysqlaccess [host_name [user_name [db_name]]] [options]

mysqlaccessは以下のオプションを理解します。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --brief, -b

    シングル・ライン・タブフォーマットでレポートを生成します。

  • --commit

    テンポラリテーブルから元のグラントテーブルへ新しいアクセス権限をコピーします。新しい権限が発動するには、グラントテーブルはフラッシュされなければいけません。(例えば、mysqladmin reloadコマンドを実行してください。)

  • --copy

    オリジナルから、テンポラリグランとテーブルを再ロードします。

  • --db=db_name, -d db_name

    データベース名を特定します。

  • --debug=N

    デバッグレベルを特定します。Nは0から3までの整数になります。

  • --host=host_name, -h host_name

    アクセス権限で使用されるホスト名です。

  • --howto

    mysqlaccessの使用方法を示す例を表示します。

  • --old_server

    サーバが、WHERE節の取り扱い方を完全に理解していない、古い(MySQL 3.21以前) MySQLサーバであると仮定します。

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

    サーバに接続する際使用するパスワードです。コマンドライン上で--password あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。

    コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

  • --plan

    未来のリリースのためのアイデアや提案を表示する。

  • --preview

    テンポラリグラントテーブルに変更を加えた後、権限の差異を表示します。

  • --relnotes

    リリースノートを表示します。

  • --rhost=host_name, -H host_name

    与えられたホスト上でMySQLサーバに接続します。

  • --rollback

    テンポラリグラントテーブルへの最も最近の変更を戻します。

  • --spassword[=password], -P[password]

    サーバに接続する際、スーパーユーザとして使用するパスワードです。コマンドライン上で--password あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。

    コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

  • --superuser=user_name, -U user_name

    スーぱユーザとして接続する際のユーザ名を特定します。

  • --table, -t

    テーブルフォーマットでレポートを生成します。

  • --user=user_name, -u user_name

    アクセス権限で使用されるユーザ名です。

  • --version, -v

    バージョン情報を表示し、閉じます。

ユーザのMySQLディストリビューションが通常とは違うロケーションにインストールされている場合、mysqlaccessmysqlクライアントを発見できる場所を変更する必要があります。mysqlaccess スクリプトを行18で編集してください。以下のような行を探してください。

$MYSQL     = '/usr/local/bin/mysql';    # path to mysql executable

ロケーションを示すように、パスを変更してください。mysqlは実際にユーザのシステムに記憶されています。これをしなければ、mysqlaccessを起動したときにBroken pipeエラーが発生します。

7.9. mysqladmin — MySQL サーバの管理を行うクライアント

mysqladminは管理オペレーションを実行するためのクライアントです。サーバコンフィグや現在ステータスのチェックのほか、データベースの作成・破棄、他にもさまざまな用途があります。

mysqladminは以下のように起動してください。

shell> mysqladmin [options] command [command-arg] [command [command-arg]] ...

mysqladminは以下のリストで紹介されているコマンドをサポートしています。コマンドの中にはコマンド名の後にアーギュメントが続きます。

  • create db_name

    db_nameという名前の新しいデータベースを作成します。

  • debug

    エラーログにデバッグ情報を書き込むようにサーバに知らせます。

    MySQL 5.1.12に始まり、イベントスケジューラーの情報も含まれています。 項19.4. 「Event Scheduler Status」 を参照してください。

  • drop db_name

    db_nameという名前のデータベースとそのテーブルを全て削除します。

  • extended-status

    サーバステータス変数とその値を表示します。

  • flush-hosts

    ホストキャッシュ内の情報を全てフラッシュします。

  • flush-logs

    ログを全てフラッシュします。

  • flush-privileges

    グラントテーブルを再ロードします(reloadと同じ)。

  • flush-status

    ステータス変数をクリアします。

  • flush-tables

    テーブルを全てフラッシュします。

  • flush-threads

    スレッドキャッシュをフラッシュします。

  • kill id,id,...

    サーバスレッドを消去します。複数スレッドID値が提供されている場合、リストにはスペースが存在しないことになります。

  • old-password new-password

    これはpasswordコマンドと似ていますが、古い(4.1以前)パスワードハッシュフォーマットを使用してパスワードを記憶します。(詳しくは項4.7.9. 「MySQL 4.1 のパスワードハッシュ」をご確認ください。)

  • password new-password

    新しいパスワードをセットします。これによりサーバへの接続に使うmysqladminのアカウントパスワードをnew-passwordに変更します。よって、同じアカウントを使用してmysqladmin (あるいは他のクライアントプログラム) を起動するとき、新しいパスワードを指定しなければいけません。

    もしnew-password 値がスペースやコマンドインタープリタにとって特別なキャラクタを含んでいる場合、クオートで囲まなければいけません。Windowsでは、シングルクオートではなくダブルで囲むようにしてください。シングルクオートはパスワードの一部として認識されてしまいます。例:

    shell> mysqladmin password "my new password"
    
  • ping

    サーバが作動しているかをチェックします。サーバが作動している場合mysqladminのリターンステータスは 0 になり、作動していない場合1になります。Access deniedのようなエラーの場合でも0となります。これは、サーバは作動しているが接続を拒否した形になり、サーバが作動していない状態とは異なるからです。

  • processlist

    アクティブなサーバスレッドのリスト表示します。これはSHOW PROCESSLISTステートメントの出力に似ています。--verboseオプションが提供されている場合、出力はSHOW FULL PROCESSLISTと似ています。(詳しくは項12.5.4.24. 「SHOW PROCESSLIST 構文」をご確認ください。)

  • reload

    グラントテーブルを再ロードします。

  • refresh

    全テーブルをフラッシュし、ログファイルを閉じて、開きます。

  • shutdown

    サーバを停止させます。

  • start-slave

    スレーブサーバの複製を開始します。

  • status

    短いサーバステータスメッセージを表示します。

  • stop-slave

    スレーブサーバの複製を停止します。

  • variables

    サーバシステム変数とその値を表示します。

  • version

    サーバよりバージョン情報を表示します。

全てのコマンドは独特のプリフィックスで省略できます。例:

shell> mysqladmin proc stat
+----+-------+-----------+----+---------+------+-------+------------------+
| Id | User  | Host      | db | Command | Time | State | Info             |
+----+-------+-----------+----+---------+------+-------+------------------+
| 51 | monty | localhost |    | Query   | 0    |       | show processlist |
+----+-------+-----------+----+---------+------+-------+------------------+
Uptime: 1473624  Threads: 1  Questions: 39487
Slow queries: 0  Opens: 541  Flush tables: 1
Open tables: 19  Queries per second avg: 0.0268

mysqladmin statusコマンド結果は以下の値を表示します。

  • Uptime

    MySQLサーバが作動している秒数です。

  • Threads

    アクティブスレッド(クライアント)の数です。

  • Questions

    サーバが起動して以来クライアントからよせられた質問(クエリ)の数です。

  • Slow queries

    long_query_time秒よりも時間を要したクエリの数です。項4.11.5. 「スロー クエリ ログ」 を参照してください。

  • Opens

    サーバによって開かれていないテーブルの数です。

  • Flush tables

    サーバが実行したflush-*refresh、そしてreloadコマンドの数です。

  • オープンテーブル

    現在開いているテーブルの数です。

  • Memory in use

    mysqldによって直接割り当てられたメモリの量です。この値は、MySQLが--with-debug=fullでコンパイルされたときのみ表示されます。

  • maximum memory used

    mysqldによって直接割り当てられたメモリの最大量です。この値は、MySQLが--with-debug=fullでコンパイルされたときのみ表示されます。

Unixソケットファイルを使用してローカルサーバに接続する際mysqladmin shutdownを実行した場合、mysqladminはサーバのプロセスIDが取り除かれるまで待ちます。これはサーバが正しく停止したことを確認するためです。

mysqladminは次のオプションをサポートします。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --character-sets-dir=path

    キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --compress, -C

    双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。

  • --count=N, -c N

    コマンドの実行反復回数。これは--sleepオプションでのみ作動します。

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

    デバッグのログを書き込みます。debug_options 文字列は大抵 'd:t:o,file_name' になります。.'d:t:o,/tmp/mysqladmin.trace'がデフォルトになります。

  • --default-character-set=charset_name

    charset_nameをデフォルトキャラクタセットとして使用します。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --force, -f

    drop db_nameコマンドの確認を要求しません。複数のコマンドでは、エラーが発生しても続けます。

  • --host=host_name, -h host_name

    与えられたホスト上でMySQLサーバに接続します。

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

    サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。

    コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

  • --port=port_num, -P port_num

    コネクションに使用するTCP/IPポート番号です。

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

    使用するべき接続プロトコルです。

  • --relative, -r

    --sleepオプションと使用された場合の現在値と以前の値の差異を表します。現時点では、このオプションはextended-statusコマンドのみと併用できます。

  • --silent, -s

    サーバとの接続が確立できないときは閉じてください。

  • --sleep=delay, -i delay

    コマンドは反復実行、delay秒間スリープしてください。--countオプションは反復回数を決定します。

  • --socket=path, -S path

    localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。

  • --ssl*

    --sslで始まるオプションは、SSLを介してサーバに接続し、SSL キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」 を参照してください。

  • --user=user_name, -u user_name

    サーバに接続する際使用するMySQLユーザ名です。

  • --verbose, -v

    Verbose モードプログラムの動作についてさらに情報をプリントアウトする。

  • --version, -V

    バージョン情報を表示し、閉じます。

  • --vertical, -E

    縦に出力をプリントします。これは--relativeに似ていますが、出力が縦にプリントされます。

  • --wait[=count], -w[count]

    接続が確立できない場合、アボートせずに休止してから再トライします。count値が提供されている場合、再トライ回数を表しています。デフォルトは1回です。

--var_name=value 構文を使用することで以下の構文をセットすることができます。

  • connect_timeout

    接続タイムアウトまでの最大秒数。デフォルトは43200秒 (12時間)。

  • shutdown_timeout

    サーバがシャットダウンするまで待つ最大秒数。デフォルトは3600秒 (1時間)です。

--set-variable=var_name=value or -O var_name=value構文を使用することで、変数をセットすることも可能です。構文は反対語となっています。.

7.10. mysqlbinlog — バイナリログファイルを処理するためのユーティリティ

サーバが生成するバイナリログファイルはバイナリフォーマットで書かれています。これらのファイルをテキストフォーマットで確認するには、mysqlbinlogユーティリティを使用してください。それに加えて、複製セットアップ内のスレーブサーバによって書き出されたリレイログファイルを読み取るのにmysqlbinlogを使用することもできます。リレイログはバイナリログファイルと同じフォーマットです。

mysqlbinlogは以下のように起動してください。

shell> mysqlbinlog [options] log_file ...

例えば、binlog.000003と名づけられたバイナリログファイルの内容を表示するにはこのコマンドを使用してください。

shell> mysqlbinlog binlog.0000003

出力にはbinlog.000003内の全てのイベントが含まれています。イベント情報は実行されたステートメント、実行に必要な時間、発行したクライアントのスレッドID、実行時のタイムスタンプ等が含まれています。

ログ内にステートメントを再付加するためにmysqlbinlogの出力は再実行することができます(例えば、mysqlの入力として使用することで)。これはサーバがクラッシュした再のリカバリオペレーションとして便利にです。他の使用例は、後にこのセクションに登場するディスカッションを参照してください。

通常、バイナリログファイルを直接読み取りにmysqlbinlog使用し、ローカルMySQLサーバに付加します。--read-from-remote-serverオプションを使用してリモートサーバからバイナリログを読み取ることも可能です。リモートバイナリログを読み取る場合、接続パラメータオプションを提供することでどのようにしてサーバと接続すればよいか示しています。これらのオプションは--host--password--port--protocol, --socket、と--userになります。--read-from-remote-serverオプションを使用した場合以外では、無視されます。

バイナリログやリレイログは項4.11.4. 「バイナリ ログ」項5.5.5. 「レプリケーション リレーとステータス ファイル」でさらに詳細を参照することができます。

mysqlbinlogは次のオプションをサポートします。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --base64-output

    ベース64 エンコードを使用して全てのバイナリログエントリをプリントします。.これはデバッグ専用です。このオプションを使用して生成したログはプロダクションシステムには付加すべきではありません。このオプションはMySQL 5.1.5.で追加されました。

  • --character-sets-dir=path

    キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --database=db_name, -d db_name

    このデータベース(ローカルログのみ)のエントリをリストします。このオプションを使用することで1つのデータベースのみを指定することができます。複数の--databaseオプションを指定した場合、最後のオプションのみ使用されます。このオプションはmysqlbinlogに、デフォルトデータベースの場所からバイナリログのエントリを出力するよう強制します。(つまり、USEに選択された)db_name。これによって、異なるデータベースやデータベース自体を選択せずとも、UPDATE some_db.some_table SET foo='bar'といったクロスデータベースステートメントを複製しません。

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

    デバッグのログを書き込みます。debug_options文字列は大抵'd:t:o,file_name'になります。

  • --disable-log-bin, -D

    バイナリロギングを無効化します。これは、--to-last-logオプションを使用して同じMySQLサーバに対して出力を送信している場合、エンドレスループを回避するのに便利です。このオプションは、クラッシュ後、すでにログ下ステートメントの複製を生成するのを回避するのに便利です。

    このオプションはSUPER権限を保持していることを要求します。残りの出力のバイナリロギングを無効化するため、mysqlbinlog出力にSET SQL_LOG_BIN=0ステートメントを含ませます。SETステートメントは、SUPER権限がない場合向こうです。

  • --force-read, -f

    このオプションでは、mysqlbinlogが認識でき名いバイナリログイベントを読み込んだ場合、警告をプリント、イベントを無視し続行します。このオプションなしでは、mysqlbinlogはそのようなイベントを読み込んだ時点で停止します。

  • --hexdump, -H

    コメントでログの16進法ダンプを表示します。この出力は複製デバッグの際に便利です。16進法ダンプフォーマットは後ほどこのセクションで説明されています。このオプションはMySQL 5.1.2.で追加されました。

  • --host=host_name, -h host_name

    あるホストでMySQLサーバからバイナリログを取得する。

  • --local-load=path, -l path

    特定のディレクトリ内からLOAD DATA INFILEのローカルテンポラリファイルを準備する。

  • --offset=N, -o N

    ログの最初のNエントリをスキップする。

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

    サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。

    コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

  • --port=port_num, -P port_num

    リモートサーバ接続時に使用するTCP/IPポート番号です。

  • --position=N, -j N

    Deprecated.代わりに--start-positionを使用してください。

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

    使用するべき接続プロトコルです。

  • --read-from-remote-server, -R

    バイナリログをローカルファイルから読み取らずにMySQLサーバから読み取ります。このオプションも提供されていない限りどの接続パラメータオプションも無視されます。これらのオプションは--host--password--port--protocol--socket、そして--userになります。

  • --result-file=name, -r name

    提供されているファイルに出力を導きます。

  • --server-id=id

    特定のサーバIDを持つサーバによってのみ作成されたイベントだけを抽出します。このオプションはMySQL 5.1.4.以降から提供されています。

  • --set-charset=charset_name

    ログファイルの処理のために使用する文字列を特定するため、出力にSET NAMES charset_name ステートメントを追加してください。このオプションはMySQL 5.1.12.で追加されました。

  • --short-form, -s

    ログに含まれるステートメントのみを表示します。

  • --socket=path, -S path

    localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。

  • --start-datetime=datetime

    datetimeアーギュメントと等価、もしくは遅いタイムスタンプを持つ最初のイベントからバイナリログの読み取りを始めます。datetime値はmysqlbinlogを作動させた場合、ローカルタイムゾーンに相対的です。値はDATETIMETIMESTAMPデータ型に受け付けられるフォーマットでなければいけません。例:

    shell> mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
    

    このオプションはpoint-in-timeリカバリを使用する際便利です。項4.9.2. 「バックアップとリカバリ手法の例示」 を参照してください。

  • --stop-datetime=datetime

    datetimeアーギュメントと等価、もしくは遅いタイムスタンプを持つ最初のイベントからバイナリログの読み取りを停止します。このオプションはpoint-in-timeリカバリを使用する際便利です。datetime値に関する詳細については--start-datetimeオプションの説明を参照してください。

  • --start-position=N

    Nアーギュメントと等価、もしくは遅いタイムスタンプを持つ最初のイベントからバイナリログの読み取りを始めます。このオプションはコマンドライン上で最初に名づけられるログファイルに対してのみ適用されます。

  • --stop-position=N

    Nアーギュメントと等価、もしくは遅いタイムスタンプを持つ最初のイベントからバイナリログの読み取りを停止します。このオプションはコマンドライン上で最後に名づけられるログファイルに対してのみ適用されます。

  • --to-last-log, -t

    MySQLサーバから要求されるバイナリログの後部で終了せず、最後のバイナリログまで続けてプリントします。同じMySQLサーバに出力を送信した場合、エンドレスループになる場合があります。このオプションは--read-from-remote-serverを要求します。

  • --user=user_name, -u user_name

    リモートサーバに接続する際使用するMySQLユーザ名です。

  • --version, -V

    バージョン情報を表示し、閉じます。

--var_name=value 構文を使用することで以下の構文をセットすることができます。

  • open_files_limit

    リザーブするオープンファイルディスクリプタの数を特定します。

--set-variable=var_name=value or -O var_name=value構文を使用することで、変数をセットすることも可能です。構文は反対語となっています。.

mysqlbinlogの出力をmysqlクライアントにパイプすることができます。 これはバイナリログに含まれるステートメントを実行するために行います。バックアップが古い(項4.9.1. 「データベースのバックアップ」を参照してください)場合、クラッシュからのリカバーに使用します。例:

shell> mysqlbinlog binlog.000001 | mysql

または

shell> mysqlbinlog binlog.[0-9]* | mysql

mysqlbinlogの出力をテキストファイルにリダイレクトすることもできます。これは、先にステートメントログを改良する必要がある場合に行います。(例えば、実行したくないステートメントを取り除かなければいけないときに)。ファイル編集後、mysqlプログラムの入力として使用することで含まれているステートメントを実行してください。

mysqlbinlogには--start-positionオプションがあります。ある特定のポジションよりも等価もしくは大きいオフセットを持つ、バイナリログ内のステートメントのみをプリントします(そのポジションは1つのイベントのスタートをマッチしなければいけません)。それはある特定の日付と時刻を与えられているイベントをスタート・ストップさせるオプションも有しています。これにより、--stop-datetimeオプションを使用してpoint in timeリカバリの実行を有効化します(例えば、「データベースを10:30分現在の状態まで巻き戻す」といったことが可能になります)。

MySQLサーバ上で1つ以上のバイナリログを実行しなければいけない場合、サーバに対して1つの接続で処理するのが安全です。以下に危険な例を示します。

shell> mysqlbinlog binlog.000001 | mysql # DANGER!!
shell> mysqlbinlog binlog.000002 | mysql # DANGER!!

最初のログファイルにCREATE TEMPORARY TABLEステートメントが含まれており、2番目のログにはテンポラリテーブルを使用するステートメントが含まれている場合、サーバに対して異なる接続を使用してバイナリログを処理すると問題が発生します。最初のmysql処理が停止したとき、サーバはテンポラリテーブルをドロップします。2番目のmysql処理でテーブルの使用を試みると、サーバは「認識されていないテーブル」として報告します。

このような問題を回避するには、処理したいバイナリログの内容を実行するために1つの接続を使用してください。以下に1例を示します。

shell> mysqlbinlog binlog.000001 binlog.000002 | mysql

また、ログを全て1つのファイルに書き込み、ファイルを処理するのも手です。

shell> mysqlbinlog binlog.000001 >  /tmp/statements.sql
shell> mysqlbinlog binlog.000002 >> /tmp/statements.sql
shell> mysql -e "source /tmp/statements.sql"

mysqlbinlogはオリジナルデータファイルなしでLOAD DATA INFILEオペレーションを再生する出力を生成することができます。mysqlbinlogはデータをテンポラリファイルにコピーし、ファイルに関連するLOAD DATA LOCAL INFILEステートメントを書きます。これらのファイルが書かれているディレクトリ内のデフォルトロケーションはシステムごとに異なります。ディレクトリを明示的に指定したい場合は、--local-loadオプションを使用してください。

mysqlbinlogLOAD DATA INFILEステートメントをLOAD DATA LOCAL INFILE ステートメントに変換するため、(つまり、LOCALを追加する)ステートメントの処理に使用するクライアントとサーバ双方がLOCAL機能を許容するようにコンフィギャされていなければいけません。項4.6.4. 「LOAD DATA LOCAL のセキュリティ関連事項」 を参照してください。

警告:LOAD DATA LOCALステートメント用に作成されたテンポラリファイルは、自動的には消去されません。これは、それらステートメントを実際に実行するまで必要になるからです。ステートメントログが必要なくなった時点でユーザがテンポラリファイルを消去する必要があります。これらのファイルはテンポラリファイルディレクトリに存在し、original_file_name-#-#といった名前がついています。

--hexdumpオプションはコメント内にログ内容の16進性ダンプを生成します。

shell> mysqlbinlog --hexdump master-bin.000001

上記のコマンドを使用すれば、出力は以下の様になります。

/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
# at 4
#051024 17:24:13 server id 1  end_log_pos 98
# Position  Timestamp   Type   Master ID        Size      Master Pos    Flags
# 00000004 9d fc 5c 43   0f   01 00 00 00   5e 00 00 00   62 00 00 00   00 00
# 00000017 04 00 35 2e 30 2e 31 35  2d 64 65 62 75 67 2d 6c |..5.0.15.debug.l|
# 00000027 6f 67 00 00 00 00 00 00  00 00 00 00 00 00 00 00 |og..............|
# 00000037 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 |................|
# 00000047 00 00 00 00 9d fc 5c 43  13 38 0d 00 08 00 12 00 |.......C.8......|
# 00000057 04 04 04 04 12 00 00 4b  00 04 1a                |.......K...|
#       Start: binlog v 4, server v 5.0.15-debug-log created 051024 17:24:13
#       at startup
ROLLBACK;

16進性ダンプ出力は、現在以下のエレメントを含んでいます。このフォーマットは将来変更される可能性があります。

  • ポジション:ログファイル内のバイトポジション。

  • Timestamp:イベントのタイムスタンプ以下の例では、'9d fc 5c 43''051024 17:24:13'を16進変換で表します。

  • Type:ログイベントのタイプ以下の例では、'0f'は例のイベントがFORMAT_DESCRIPTION_EVENTであることを意味しています。以下のテーブルが可能なタイプをリストします。

    タイプ意味
    00UNKNOWN_EVENTこのイベントはログ内に存在してはいけません。
    01START_EVENT_V3MySQL 4より前のバージョンによって書き出されたログファイルの始めを示しています。
    02QUERY_EVENT最も一般的なイベントのタイプです。これらはマスタで実行されるステートメントを含んでいます。
    03STOP_EVENTマスタが停止したことを示しています。
    04ROTATE_EVENTマスタが新しいログファイルにスイッチした際に書き出されます。
    05INTVAR_EVENT一般的に、AUTO_INCREMENT 値に対して使用されます。これは、LAST_INSERT_ID()関数がステートメントで使用されているときです。
    06LOAD_EVENTMySQL3.23でLOAD DATA INFILE用に使用されます。
    07SLAVE_EVENT将来の使用のため保存されます。
    08CREATE_FILE_EVENTLOAD DATA INFILE ステートメントに使用されます。これはそのようなステートメントの実行の始まりを示しています。スレーブ上でテンポラリファイルが作成されます。MySQL 4でのみ使用されています。
    09APPEND_BLOCK_EVENTLOAD DATA INFILE ステートメントで使用されるデータを含んでいます。スレーブ上でデータがテンポラリファイル内に記憶されます。
    0aEXEC_LOAD_EVENTLOAD DATA INFILE ステートメントに使用されます。スレーブ上のテーブルにテンポラリファイルの内容が記憶されます。MySQL 4でのみ使用されています。
    0bDELETE_FILE_EVENTLOAD DATA INFILE ステートメントのロールバックです。テンポラリファイルはスレーブ上で消去されます。
    0cNEW_LOAD_EVENTLOAD DATA INFILEMySQL 4以前のバージョンで使用されます。
    0dRAND_EVENTRAND()関数がステートメントで使用されている場合、ランダム値の情報を送信するのに使用されます。
    0eUSER_VAR_EVENTユーバ変数の複製に使用されます。
    0fFORMAT_DESCRIPTION_EVENTMySQL 5かそれ以降のバージョンで書き出されたログファイルの始まりを示しています。
    10XID_EVENTXAトランザクションのコミットを示すイベントです。
    11BEGIN_LOAD_QUERY_EVENTMySQL 5以降のバージョンでLOAD DATA INFILEステートメントに使用されます。
    12EXECUTE_LOAD_QUERY_EVENTMySQL 5以降のバージョンでLOAD DATA INFILEステートメントに使用されます。
    13TABLE_MAP_EVENTテーブル定義の情報です。MySQL 5.1以降使用されています。
    14WRITE_ROWS_EVENT作成されるはずのシングルテーブルの行データです。MySQL 5.1以降使用されています。
    15UPDATE_ROWS_EVENT更新されるはずのシングルテーブルの行データです。MySQL 5.1以降使用されています。
    16DELETE_ROWS_EVENT消去されるはずのシングルテーブルの行データです。MySQL 5.1以降使用されています。
  • Master ID:イベントを作成したマスタのサーバIDです。

  • Size:イベントのサイズをバイトで表しています。

  • Master Pos:オリジナルマスタログファイル内のイベントのポジションです。.

  • Flags:16 フラッグ現在、以下のフラッグが使用されています。他のフラグは将来に向けて保存されています。

    フラグ意味
    01LOG_EVENT_BINLOG_IN_USE_Fログファイルは完全に閉じています。(FORMAT_DESCRIPTION_EVENTでのみ使用されています。)このフラグがセットされている場合(例えば、フラグがFORMAT_DESCRIPTION_EVENT内で'01 00'の場合) ログファイルは完全には閉じられていません。マスタがクラッシュしたことによる場合が最も可能性が高いです(例えば、停電などにより)。
    02 将来使用するために保存されています。
    04LOG_EVENT_THREAD_SPECIFIC_Fイベントが実行されたときの接続に依存している場合セットしてください(例えば、'04 00')。例えば、イベントがテンポラリテーブルを使用している場合。
    08LOG_EVENT_SUPPRESS_USE_Fイベントがデフォルトデータベースに対して依存していないケースではセットされることがあります。

    他のフラグは将来使用するために保存されています。

7.11. mysqlcheck — テーブル メンテナンスと修復プログラム

mysqlcheckクライアントはテーブルのチェック、修復、最適化、そして分析を行います。

mysqlcheckのファンクションはmyisamchkと似ていますが、作動方法が異なります。実質的な作動方法の違いは、mysqlcheckmysqldサーバが作動中の時に使用されなければいけません。myisamchkはこのサーバが作動していない時に使用品kればいけません。mysqlcheckを使用することの利点は、テーブルのチェックや修復時にサーバを停止させなくてすむことです。

mysqlcheckはSQLステートメントCHECK TABLEREPAIR TABLEANALYZE TABLE、そしてOPTIMIZE TABLEをユーザにとって便利な方法で使用します。実行したいオペレーションに対してどのステートメントを使用するか決定し、実行のためサーバにステートメントを送信します。各ステートメントがどのストレージエンジンと作動するかは、ステートメントの説明を章 12. SQL ステートメント構文で参照してください。

MyISAMストレージエンジンは全4ステートメントをサポートしています。よって、mysqlcheckMyISAMテーブル上で全4オペレーションを実行することができます。他のストレージエンジンは必ずしも全てのオペレーションをサポートしているとは限りません。そのような場合、エラーメッセージが表示されます。例えば、test.tMEMORYテーブルの場合、チェックしようとすれば以下の結果が生成されます。

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は次のオプションをサポートします。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --all-databases, -A

    データベース内のテーブルを全てチェックします。これは--databasesオプションを使用してコマンドライン上のデータベース全てに名前をつけることと同じです。

  • --all-in-1, -1

    各テーブルのためにステートメントを発行する代わりに、データベースから処理されるテーブルの名前を記載しているデータベースごとにシングルステートメントを実行します。

  • --analyze, -a

    テーブルを分析します。

  • --auto-repair

    チェックされたテーブルが破壊されていた場合、自動的に修復します。必要な修復は全てのテーブルがチェックされた後に実行されます。

  • --character-sets-dir=path

    キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --check, -c

    テーブルにエラーが無いかチェックします。これがデフォルトオペレーションになります。

  • --check-only-changed, -C

    最後に行われたチェックより変更されたテーブル、もしくはしっかり閉じられていないテーブルをチェックします。

  • --check-upgrade, -g

    CHECK TABLEFOR UPGRADEオプションと共に起動し、現サーババージョンとの互換性の無いテーブルがあるかチェックします。これにより--fix-db-names--fix-table-namesオプションを自動的に有効化します。--check-upgradeはMySQL 5.1.7.で追加されました。

  • --compress

    双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。

  • --databases, -B

    名づけられたデータベース内のテーブルを全て処理します。通常、mysqlcheckはコマンドライン上の最初のアーギュメント名とそれに続く名をテーブル名として認識します。このオプションを使用sるうことで、名前のついたアーギュメントを全てデータベース名として認識します。

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

    デバッグのログを書き込みます。debug_options文字列は大抵'd:t:o,file_name'になります。

  • --default-character-set=charset_name

    charset_nameをデフォルトキャラクタセットとして使用します。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --extended, -e

    テーブルをチェックするのにこのオプションを試用している場合、100%適合していることを保証しますが、時間がかかります。

    このオプションを使用してテーブルを修復している場合、修復作業に時間がかかる上、必要な無い無駄な行を生成することもあります。!

  • --fast-F

    正しく閉じられていないテーブルのみをチェックする。

  • --fix-db-names

    データベース名を5.1フォーマットに変換します。特別な文字を含むデータベース名のみ影響を受けます。このオプションはMySQL 5.1.7.加されました。

  • --fix-table-names

    データベース名を5.1フォーマットに変換します。特別な文字を含むテーブル名のみ影響を受けます。このオプションはMySQL 5.1.7.加されました。

  • --force, -f

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

  • --host=host_name, -h host_name

    与えられたホスト上でMySQLサーバに接続します。

  • --medium-check, -m

    --extendedオペレーションよりも速いチェックを行います。これはエラーの99.99%をチェックし、ほとんどの場合において十分な成果を発揮します。

  • --optimize, -o

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

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

    サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。

    コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

  • --port=port_num, -P port_num

    コネクションに使用するTCP/IPポート番号です。

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

    使用するべき接続プロトコルです。

  • --quick, -q

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

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

  • --repair, -r

    ユニークではないユニークキー以外の全てを修復できるリペアを実行します。

  • --silent, -s

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

  • --socket=path, -S path

    localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。

  • --ssl*

    --sslで始まるオプションは、SSLを介してサーバに接続し、SSL キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」 を参照してください。

  • --tables

    --databases-Bオプションを重ね処理します。オプションに続く全てのネームアーギュメントはテーブル名として認識されます。

  • --use-frm

    MyISAMの修復オペレーションでは、.frmファイルからテーブルストラクチャを取得することで.MYIヘッダが破壊されていてもテーブルが修復できます。

  • --user=user_name, -u user_name

    サーバに接続する際使用するMySQLユーザ名です。

  • --verbose, -v

    Verbose モードプログラムオペレーションのあらゆるステージの情報をプリントします。

  • --version, -V

    バージョン情報を表示し、閉じます。

7.12. mysqldump — データベースバックアッププログラム

mysqldumpクライアントは元はIgor Romanenkoによって書かれたバックアッププログラムです。バックアップや他のSQLサーバ(MySQLサーバに限りません)への転送のためにデータベースやデータベースのコレクションのダンプに役立ちます。ダンプには一般に、テーブルの作成やそこでのデータ配置、の片方または両方のSQLステートメントが含まれています。また、mysqldumpはCSVや他の区切り文字のテキスト、あるいはXMLフォーマットでファイルを生成させるために利用することもできます。

もしあなたがサーバのバックアップをしていて、かつテーブルがすべてMyISAMテーブルの場合、代わりにmysqlhotcopyの使用をお勧めします。これは、バックアップやリストアのスピードが速くなるからです。項7.13. 「mysqlhotcopy — データベースバックアッププログラム」 を参照してください。

mysqldumpを起動する主な方法は3つあります。

shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] --databases db_name1 [db_name2 db_name3...]
shell> mysqldump [options] --all-databases

db_nameの後ろにテーブル名を指定しない場合、もしくは--databases--all-databasesオプションを使用した場合、データベース全体がダンプされます。

使用中のバージョンのmysqldumpがサポートするオプションのリストを取得するには、mysqldump --helpを実行してください。

mysqldumpの中には他オプションをグループ化した略記法となっているものがあります。--opt--compactはこれに分類されるものです。例えば、--optを使用することは--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charsetを指定したのと同じことです。MySQL 5.1以降、--optが表すオプションは全てデフォルトで有効化されています。これは、--optがデフォルトで有効なためです。

グループオプションの効果を逆転させる場合、オプションの--skip-xxx の形式(--skip-opt--skip-compactなど)を使用してください。グループオプションに続いて特定の機能を有効化・無効化するオプションをつけることで、グループオプションの効果の一部だけを選択することが可能です。以下に例を示します。

  • いくつかの機能を除いて --optの効果を選択したい場合、除きたい各機能に対して--skipオプションを選択してください。例えば、メモリバッファと拡張インサートを無効化するには、--opt --skip-extended-insert --skip-quickを使用してください。(MySQL 5.1では、--skip-extended-insert --skip-quickで十分です。これは--optがデフォルトで有効になっているためです。)

  • インデックス無効化とテーブルロック機能を生かして 他の--optの機能を無効化したい場合、--skip-opt --disable-keys --lock-tablesを使用してください。

グループオプションの一部を選択して効果を有効化・無効化する場合、オプションは前から後ろへの順で処理されるため、記述する順番が重要になります。例えば、--disable-keys --lock-tables --skip-optは意図している効果を生みません。単一では--skip-optと同じになります。

mysqldumpはテーブル内容を一行ずつ取得してダンプするか、テーブルから全ての内容を取得しダンプする前にメモリでバッファすることができます。大きなテーブルをダンプしている場合、メモリへのバッファが問題になる場合があります。一行ずつテーブルをダンプする場合、--quickオプションを使用してください(もしくは--optを指定すれば--quickが含まれています)。--opt (故に--quickも) はMySQL 5.1以降デフォルトで有効化されています。メモリバッファを有効化するには、--skip-quickを使用してください。

最新のmysqldumpを使用してダンプしたものを非常に古いMySQLサーバに再ロードしたい場合、--optまたは--extended-insertオプションの使用は避けてください。代わりに--skip-optを使用してください。

mysqldumpは次のオプションをサポートします。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --add-drop-database

    DROP DATABASEステートメントをCREATE DATABASEステートメントの前に追加します。

  • --add-drop-table

    DROP TABLEステートメントをCREATE TABLEステートメントの前に追加します。

  • --add-locks

    LOCK TABLESUNLOCK TABLESステートメントで各テーブルダンプを囲みます。ダンプファイルを再ロードする際のインサートの速度が向上します。項6.2.16. 「INSERTステートメントの速度」 を参照してください。

  • --all-databases, -A

    すべてのデータベース内のすべてのテーブルをダンプします。これは--databasesオプションを使用してコマンドラインですべてのデータベース名を指定するのと同じです。

  • --all-tablespaces, -Y

    テーブルダンプに、NDB Clusterテーブルに使用されるテーブルスペース作成に必要なSQLステートメントを追加します。でなければ、この情報はmysqldumpの出力には含まれていません。このオプションは、現在MySQLクラスタテーブルに対してのみ有効です。

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

  • --allow-keywords

    キーワードであるカラム名の作成を許容します。これは各カラム名のプリフィクスにテーブル名を用いることで可能になります。

  • --character-sets-dir=path

    キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --comments, -i

    プログラムバージョン、サーババージョンやホストといった追加情報をダンプファイルに書き込みます。このオプションはデフォルトで有効となっています。追加情報を抑制するには、--skip-commentsを使用してください。

  • --compact

    verbose生成を少なくします。このオプションはコメントを抑制し、--skip-add-drop-table--no-set-names--skip-disable-keys、そして--skip-add-locksオプションを有効化します。

  • --compatible=name

    古いMySQLサーバや他のデータベースシステムと互換性のある出力を生成します。nameの値はansimysql323mysql40postgresqloraclemssqldb2maxdbno_key_optionsno_table_options、あるいはno_field_optionsとなります。複数の値を使用する場合カンマで離してください。これらの値はサーバSQLモードの設定用の対応しているオプションと同じ意味を持っています。項4.2.6. 「SQL モード」 を参照してください。

    このオプションは他のサーバとの互換性を保証するものではありません。現在提供されている、ダンプ出力の互換性を挙げるためのSQLモード値を有効化するだけです。例えば、--compatible=oracleはデータタイプをOracleタイプにマップしたり、Oracleコメント構文を使用したりしません。

  • --complete-insert, -c

    カラム名を含んだ、完全なINSERTステートメントを使用します。

  • --compress, -C

    双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。

  • --create-options

    MySQL独特のオプションをCREATE TABLEステートメントに含みます。

  • --databases, -B

    複数のデータベースをダンプします。通常、mysqldumpはコマンドライン上の最初のアーギュメント名とそれに続く名をテーブル名として認識します。このオプションを使用するうことで、名前のついたアーギュメントを全てデータベース名として認識します。CREATE DATABASEUSEステートメントは新しいデータベースの前の出力に含まれています。

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

    デバッグのログを書き込みます。debug_options文字列は大抵'd:t:o,file_name'になります。.'d:t:o,/tmp/mysqladmin.trace'がデフォルトになります。

  • --default-character-set=charset_name

    charset_nameをデフォルトキャラクタセットとして使用します。項4.10.1. 「データおよびソート用キャラクタ セット」を参照してください。文字列が特定されていない場合、mysqldumputf8を使用します。

  • --delayed-insert

    INSERTステートメントよりもINSERT DELAYEDステートメントを書き出します。

  • --delete-master-logs

    マスタ複製サーバで、ダンプを実行後バイナリログを消去します。このオプションは自動的に--master-dataを有効化します。

  • --disable-keys, -K

    各テーブルごとに、INSERTステートメントを/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;ステートメントで囲んでください。行が全て挿入された後にインデックスが作成されるため、ダンプファイルのロードが早くなります。このオプションはMyISAMテーブルに対してのみ効果的です。

  • --events, -E

    ダンプされたデータベースからイベントをダンプします。このオプションはMySQL 5.1.8.で追加されました。

  • --extended-insert, -e

    複数のVALUESリストを含む、複数行INSERT構文を使用してください。これにより、ダンプファイルサイズを小さくし、ファイルが再ロードされる際の挿入スピードがあがります。

  • --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...

    これらのオプションは-Tオプションと共に使用され、LOAD DATA INFILEに対応する節と同じ意味があります。項12.2.5. 「LOAD DATA INFILE 構文」 を参照してください。

  • --first-slave, -x

    Deprecated.現在は--lock-all-tablesと名づけられています。

  • --flush-logs, -F

    ダンプを始める前にMySQLサーバログファイルをフラッシュします。このオプションはRELOAD権限を要求します。このオプションを--all-databases (あるいは-A) オプションと併用した場合、ログはダンプされたデータベースごとにフラッシュされます。例外は、--lock-all-tablesまたは--master-dataを使用しているときです。この場合、ログは全てのテーブルがロックされた瞬間に一度だけフラッシュされます。ログのフラッシュとダンプを同時に行いたい場合、--flush-logs--lock-all-tables--master-dataと併用してください。

  • --flush-privileges

    mysqlデータベースのダンプ後、.FLUSH PRIVILEGESステートメントを発行してください。このオプションはダンプにmysqlデータベースが含まれている場合と、正しいリストアのためにmysqlデータベース内に含まれているデータに依存するデータベースが含まれている場合に使用するべきです。このオプションはMySQL 5.1.12.で追加されました。

  • --force, -f

    テーブルダンプの最中にSQLエラーが発生しても続行します。

    このオプションの使用例を挙げると、mysqldumpに無効となったビューに遭遇しても続けて実行させることです。これは、定義が消去されたテーブルを参照するものだからです。--forceなしでは、mysqldumpはエラーメッセージを発し閉じます。--forceを使用した場合、mysqldumpエラーメッセージをプリントしますが、ダンプ出力のビュー定義を含むSQLコメントを書き出し、実行を続けます。

  • --host=host_name, -h host_name

    与えられたホスト上でMySQLサーバからデータをダンプします。デフォルト設定では、localhostがホストになります。

  • --hex-blob

    16進変換表記法を使用しているバイナリカラムをダンプします(例えば、'abc'0x616263となります)。影響を受けるデータタイプはBINARYVARBINARYBLOB、そしてBITになります。

  • --ignore-table=db_name.tbl_name

    データベースとテーブル名の両方を使用して特定されなければいけないテーブルをダンプしないでください。複数テーブルを無視するには、このオプションを複数回使用してください。

  • --insert-ignore

    INSERTステートメントをIGNOREオプションで書いてください。

  • --lines-terminated-by=...

    これらのオプションは-Tオプションと共に使用され、LOAD DATA INFILEに対応する節と同じ意味があります。項12.2.5. 「LOAD DATA INFILE 構文」 を参照してください。

  • --lock-all-tables, -x

    データベース内のテーブルを全てロックします。これは全ダンプの期間、グローバルリードロックを取得することで達成されます。このオプションは自動的に--single-transaction--lock-tablesをオフにします。

  • --lock-tables, -l

    ダンプする前に全てのテーブルをロックします。テーブルはREAD LOCALでロックされ、これによりMyISAMテーブルの場合同時インサートが許容されます。InnoDBといったトランザクションテーブルには、--single-transactionはテーブルをロックする必要が無いため、はるかにいいオプションです。

    複数データベースをダンプする際は、--lock-tablesは各データベースのテーブルを個別にロックします。よって、このオプションはダンプファイル内のテーブルがデータベース間で矛盾していないことを保証するわけではありません。異なるデータベース内のテーブルは完全に異なるステートでダンプされることがあります。

  • --master-data[=value]

    出力にバイナリログファイル名とポジションを書きます。このオプションはRELOAD権限を要求し、バイナリログが有効化されていなければいけません。オプション値が1と等価の場合、ポジションとファイル名はダンプ出力に書き出され、CHANGE MASTERステートメントのフォームを取ります。ダンプがマスタサーバから行われ、それを利用してスレーブサーバをセットアップする場合、CHANGE MASTERステートメントはスレーブを、マスタのバイナリログ内の正しいポジションからスタートするようにします。オプション値が2と等価の場合、CHANGE MASTERステートメントはSQLコメントとして書かれます。(が省かれていた場合のデフォルトアクションになります。)

    --master-dataオプションは自動的に--lock-tablesをオフにします。--single-transactionも指定されていなければ、--lock-all-tablesをオンにもします(この場合、global read lockがダンプの最初に短い間、取得されています)。--single-transactionの説明も参照してください。どの場合でも、ログに対するアクションは全てダンプと同時に発生します。

  • --no-autocommit

    各ダンプされたテーブルごとにINSERTステートメントをSET AUTOCOMMIT=0COMMIT ステートメントで囲みます。

  • --no-create-db, -n

    このオプションは--databases--all-databasesオプションが提供されていた場合出力に含まれるCREATE DATABASEステートメントを抑制します。

  • --no-create-info, -t

    各ダンプされたテーブルを再作成するCREATE TABLEステートメントを書かないでください。

  • --no-data, -d

    テーブル行情報を書かないでください(つまりテーブル内容をダンプしないでください)。これはテーブルのCREATE TABLEステートメントのみをダンプしたい場合に非常に便利です。

  • --opt

    このオプションはショートハンドです。--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charsetを特定することと同じことです。速いダンプオプレーションを提供し、MySQLサーバにすばやく再ロードできるダンプファイルを生成します。

    --optオプションはデフォルトで有効化されています。無効化するには--skip-optを使用してください。--optによって影響されるオプションの部分の一部を有効化・無効化する情報に関しては、このセクションの始めのディスカッションを参照してください。

  • --order-by-primary

    各テーブルの行をプライマリキーか、存在する場合、最初のユニークインデックスでソートします。これは、InnoDBテーブルにロードするMyISAMテーブルをダンプしているときに便利ですが、ダンプに要する時間がかなり伸びます。

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

    サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。

    コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

  • --port=port_num, -P port_num

    コネクションに使用するTCP/IPポート番号です。

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

    使用するべき接続プロトコルです。

  • --quick, -q

    このオプションは大きなテーブルのダンプに便利です。これにより、mysqldumpは全結果セットを取得、メモリ内でバッファ後表示といった一連の作業を一気にこなさず、サーバから1行ずつ結果を取得します。

  • --quote-names, -Q

    `’文字でデータベース、テーブル、そしてカラム名をクオートします。ANSI_QUOTESSQLモードが有効化されている場合、名前は‘"’キャラクタでクオートされます。このオプションはデフォルトで有効となっています。--skip-quote-namesで無効化することもできますが、このオプションは--compatibleのような--quote-namesを有効化するオプションの後に与えられるべきです。

  • --replace

    INSERTステートメントよりもREPLACEステートメントを書き出します。MySQL 5.1.3.より提供されています。

  • --result-file=file, -r file

    提供されているファイルに出力を導きます。このオプションはWindows上で‘\n’ニューライン文字が‘\r\n’carriage return/newlineシーケンスに変換されるのを阻止するために使用します。ダンプ生成中にエラーが発生しても、結果ファイルは作成され、内容は上書きされます。以前の内容は失われます。

  • --routines, -R

    記憶されたルーチンを(関数とプロシージャ) ダンプされたデータベースからダンプします。.このオプションの使用はmysql.procテーブルのためのSELECT権限を要求します。--routinesを使用して生成された出力はルーチンの再作成のため、CREATE PROCEDURECREATE FUNCTIONステートメントを含んでいます。ただし、これらのステートメントはルーチン作成や改良タイムスタンプといった属性を含んでいません。つまりルーチンが再ロードされたとき、再ロードに要した時間と等価のタイムスタンプで作成されます。

    ルーチンを元のタイムスタンプ属性で再作成しなければいけない場合、--routinesを使用しないでください。代わりに、mysqlデータベースの正しい権限を持っているMySQLアカウントを使用してmysql.procテーブルの内容を直接ダンプ、再ロードしてください。

    このオプションはMySQL 5.1.2.で追加されました。これ以前では、記憶されたルーチンはダンプされませんでした。ルーチンDEFINER値はMySQL 5.1.8.までダンプされませんでした。つまり、5.1.8,以前でルーチンが再ロードされた場合、再ロードユーザにセットされたデファイナで作成されます。元のデファイナでルーチンを再作成しなければいけない場合、mysql.procテーブルの内容を、以前説明したとおりに、直接ダンプしロードしてください。

  • --set-charset

    出力にSET NAMES default_character_setを追加してください。このオプションはデフォルトで有効となっています。SET NAMESステートメントを抑制するには、--skip-set-charsetを使用してください。

  • --single-transaction

    このオプションはサーバからデータをダンプする前にBEGIN SQLステートメントを発行します。InnoDBといったトランザクションテーブルに対してのみ便利です。なぜなら、アプリケーションをブロックせずに、BEGINが発行された当時のデータベースの状態をダンプするからです。

    このオプションを使用しているときは、一定の状態でダンプされるのはInnoDBテーブルのみだということを留意してください。例えば、このオプションを使用中にダンプされたMyISAMMEMORYテーブルは状態が変化する可能性があります。

    このオプションはMySQLクラスタテーブルではサポートされていません。NDBClusterストレージエンジンがREAD_COMMITTEDtransaction isolation levelのみをサポートするため、結果が一定である保証がありません。代わりに必ずNDBバックアップを使用し、リストアしてください。

    --single-transactionオプションと--lock-tablesは互いに関連していません。これは、LOCK TABLESが待機中のトランザクションを必然的にコミットさせるからです。

    大きなテーブルをダンプするには、このオプションを--quickと併用してください。

  • --skip-opt

    --optオプションの詳細を参照してください。

  • --socket=path, -S path

    localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。

  • --skip-comments

    --commentsオプションの詳細を参照してください。

  • --ssl*

    --sslで始まるオプションは、SSLを介してサーバに接続し、SSL キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」 を参照してください。

  • --tab=path, -T path

    タブによって分けられたデータファイルを生成します。各ダンプされたテーブルごとに、mysqldumpはテーブルを作成するCREATE TABLEステートメントを含むtbl_name.sqlファイルと、そのデータを含むtbl_name.txtファイルを作成します。オプション値はファイルを書き込むディレクトリです。

    デフォルトで、.txtデータファイルはカラム値と、各行の最後で新しいラインの間にタブキャラクタを使用してフォーマットされます。このフォーマットは明示的に--fields-xxx--lines-terminated-byオプションを使用することで特定することができます。

    :このオプションはmysqldumpmysqldサーバと同一のマシンで作動している場合のみ使用されるべきです。FILE権限を保持しており、サーバはユーザの指定してアファイルをディレクトリ内に書き込む権限を与えられていなければいけません。

  • --tables

    --databasesあるいは-Bオプションをオーバーライドしてください。mysqldumpはオプションに続く名前アーギュメントをテーブル名として認識しています。

  • --triggers

    ダンプされたテーブルごとにトリガをダンプします。このオプションはデフォルトで有効化されています。--skip-triggersを使用して無効化してください。

  • --tz-utc

    ダンプファイルにSET TIME_ZONE='+00:00'を追加してください。これにより、TIMESTAMPカラムは異なるタイムゾーンにあるサーバ間でダンプ・再ロードされます。このオプションなしでは、TIMESTAMPカラムはソースとデスティネーションサーバのタイムゾーンにダンプ・再ロードされ、値が変わる場合があります。--tz-utcはサマータイムによる時間の変更に対してもプロテクトします。--tz-utcはデフォルトで有効化されています。無効化するには、--skip-tz-utcを使用してください。このオプションはMySQL 5.1.2.で追加されました。

  • --user=user_name, -u user_name

    サーバに接続する際使用するMySQLユーザ名です。

  • --verbose, -v

    Verbose モードプログラムの動作についてさらに情報をプリントアウトする。

  • --version, -V

    バージョン情報を表示し、閉じます。

  • --where='where_condition', -w 'where_condition'

    あるWHERE状態に選択された行のみダンプします。ユーザのコマンドインタープリタにとって特別なキャラクタ、もしくはスペースを含んでいる場合、状態の周りをクオートで囲まなければいけません。

    例:

    --where="user='jimf'"
    -w"userid>1"
    -w"userid<1"
    
  • --xml, -X

    ダンプ出力と、well-formed XMLも書き出します。

    NULL, 'NULL', and Empty Values:column_nameと名づけられたカラム、NULL値、空の文字列、文字値'NULL'はこのオプションによって生成された出力では以下の様に差別化します。

    :XML Representation:
    NULL (unknown value)<field name="column_name" xsi:nil="true" />
    '' (empty string)<field name="column_name"></field>
    'NULL' (string value)<field name="column_name">NULL</field>

    MySQL 5.1.12に始まり、--xmlオプションを使用しているときのmysqlクライアントもこれらのルールを守ります。(詳しくは項7.7.1. 「mysql オプション」をご確認ください。)

--var_name=value 構文を使用することで以下の構文をセットすることができます。

  • max_allowed_packet

    クライアント・サーバ通信のバッファの最大サイズ最大は1GBです。

  • net_buffer_length

    クライアント・サーバ通信のバッファの初期サイズ複数・行・挿入ステートメントを作成する際(--extended-insert--optオプションを使用するとき)、mysqldumpnet_buffer_length長さの新しい行を作成します。この変数を増やした場合、MySQLサーバ内のnet_buffer_length変数も最低同じ大きさでなければいけません。

--set-variable=var_name=value or -O var_name=value構文を使用することで、変数をセットすることも可能です。構文は反対語となっています。.

mysqldumpの最も一般的な用途は、データベース全体のバックアップの作成です。

shell> mysqldump db_name > backup-file.sql

ダンプファイルをサーバに戻し読みすることが可能です。

shell> mysql db_name < backup-file.sql

また、次のようにもできます。

shell> mysql -e "source /path-to-backup/backup-file.sql" db_name

mysqldumpは1つのMySQLサーバからデータをコピーすることでデータベースのpopulatingに便利です。

shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name

1つのコマンドで複数のデータベースをダンプすることが可能です。

shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql

全てのデータベースをダンプするには、--all-databasesオプションを使用してください。

shell> mysqldump --all-databases > all_databases.sql

InnoDBテーブルに関して、mysqldumpはオンラインバックアップの作成方法を提供しています。

shell> mysqldump --all-databases --single-transaction > all_databases.sql

このバックアップはグローバルリードロックをダンプの最初に、全テーブルで取得することだけが必要です(FLUSH TABLES WITH READ LOCKを使用して)。このロックが取得されれば、バイナリログの座標は読まれ、ロックが開放されます。FLUSHステートメントが発行されている際、1つの長い更新ステートメントが作動している場合にのみ、MySQLサーバはその長いステートメントが終了するまでストールすれば、ダンプがロックフリーとなります。MySQLサーバが受ける更新ステートメントが短い場合(実行時間を指す)、更新の数が多くても最初のロック期間はさほど気にならないはずです。

point-in-timeリカバリは、(もしくは「roll-forward」ーこれは古いバックアップをリストア、そのバックアップが行われてから発生した変更を再生する場合)、バイナリログを回転する、もしくはダンプが対応しているバイナリログの座標だけでも知っているとと便利な場合があります(項4.11.4. 「バイナリ ログ」を参照して下さい)。

shell> mysqldump --all-databases --master-data=2 > all_databases.sql

または

shell> mysqldump --all-databases --flush-logs --master-data=2
              > all_databases.sql

--master-data--single-transactionオプションは同時に使用することができ、テーブルがInnoDBストレージエンジンを使用して記憶されている場合、point in timeリカバリに合うオンラインバックアップを作成する便利な方法を提供しています。

バックアップ作成の追加情報に関しては、項4.9.1. 「データベースのバックアップ」項4.9.2. 「バックアップとリカバリ手法の例示」を参照してください。

ビューのバックアップの際問題が発生した場合、ビューに対する制限を含むセクションを参照してください。権限が不足している事によって失敗した場合の、ビューバックアップ解決策を記しています。項D.4. 「ビューの規制」 を参照してください。

7.13. mysqlhotcopy — データベースバックアッププログラム

mysqlhotcopyは元々Tim Bunceによって書かれ、提供されたPerlスクリプトです。データベースバックアップを速やかに作成するため、LOCK TABLESFLUSH TABLEScpあるいはscpを使用します。データベースやシングルテーブルのバックアップを作成する最速の方法ですが、データベースディレクトリが存在する同じマシン上でしか作動しません。mysqlhotcopyMyISAMARCHIVEテーブルのバックアップのためのみ作動します。UnixとNetWareで作動します。

shell> mysqlhotcopy db_name [/path/to/new_directory]
shell> mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory

あるデータベース内で通常の表現とマッチするテーブルをバックアップする。

shell> mysqlhotcopy db_name./regex/

波線符号をプリフィクスにつけることでテーブル名の通常の表現を取り消すことができます(‘~’):

shell> mysqlhotcopy db_name./~regex/

mysqlhotcopyは次のオプションをサポートします。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --addtodest

    ターゲットディレクトリに名前をつけなおさず、(存在する場合)ただファイルを追加します。

  • --allowold

    ターゲットが存在する場合アボートせず、_oldサフィクスを追加することでリネームします。

  • --checkpoint=db_name.tbl_name

    特定のデータベースdb_nameとテーブルtbl_nameにチェックポイントエントリを挿入します。

  • --chroot=path

    mysqldがオペレートするchrootジェイルのベースディレクトリ。path値はmysqldオプションに与えられる--chrootオプションとマッチしなければいけません。

  • --debug

    デバッグ出力を有効化します。

  • --dryrun, -n

    実行せずにアクションを報告します。

  • --flushlog

    全てのテーブルがロックされたあとログをフラッシュします。

  • --host=host_name, -h host_name

    ローカルサーバへのTCP/IP接続を作成するためのローカルホストのホスト名です。デフォルトで、接続はUnixソケットファイルを使用してlocalhostに作成されます。

  • --keepold

    終了後に以前の(リネームされた)ターゲットを消去しません。

  • --method=command

    ファイルの複製メソッド(cpあるいはscp)。

  • --noindices

    バックアップにフルインデックスファイルを含みません。これによりバックアップを小さく、早くすることができます。再ロードされたテーブルのインデックスは後ほどmyisamchk -rqを使用して再構築することができます。

  • --password=password, -ppassword

    サーバに接続する際使用するパスワードです。他のMySQLプログラムと違って、このオプションにとってパスワード値は選択できません。コマンドライン上でパスワード提供を回避するためにオプションファイルを使用することができます。

    コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

  • --port=port_num, -P port_num

    ローカルサーバ接続時に使用するTCP/IPポート番号です。

  • --quiet, -q

    エラー発生時以外音を発しません。

  • --record_log_pos=db_name.tbl_name

    特定のデータベースdb_nameとテーブルtbl_nameにマスタとスレーブステータスを報告します。

  • --regexp=expr

    与えられた通常の表現とマッチする名前のあるデータベースを全て複製します。

  • --resetmaster

    テーブルを全てロックした後バイナリログをリセットします。

  • --resetslave

    テーブルを全てロックした後master.infoファイルをリセットします。

  • --socket=path, -S path

    接続に使用するUnixソケットファイルです。

  • --suffix=str

    複製されたデータベースのサフィックスの名前です。

  • --tmpdir=path

    テンポラリディレクトリ。そのデフォルトは/tmpです。

  • --user=user_name, -u user_name

    サーバに接続する際使用するMySQLユーザ名です。

mysqlhotcopyはオプションファイルから[client][mysqlhotcopy]オプショングループを読み取ります。

mysqlhotcopyを実行するには、バックアップしているテーブルのファイルへのアクセス権、SELECTテーブルの権限、RELOAD権限(FLUSH TABLESの実行のため)そしてLOCK TABLES権限(それらのテーブルをロックするため)を所持していなければいけません。

追加のmysqlhotcopyドキュメンテーションに関しては、perldocを使用してください。これは--checkpoint--record_log_posオプションに必要なテーブルの構成に関する情報についても、同様です。

shell> perldoc mysqlhotcopy

7.14. mysqlimport — データインポートプログラム

mysqlimportクライアントはLOAD DATA INFILESQLステートメントにコマンドラインインターフェースを提供します。 mysqlimportに対する殆どのオプションはLOAD DATA INFILE構文の節に直接対応しています。項12.2.5. 「LOAD DATA INFILE 構文」 を参照してください。

mysqlimportは以下のように起動してください。

shell> mysqlimport [options] db_name textfile1 [textfile2 ...]

コマンドラインで名づけられた各テキストファイルごとに、mysqlimportはファイルネームの拡張を取り除き、結果をファイルの内容をインポートするテーブルの名前を決定します。例えば、patient.txtpatient.text、そしてpatientと名づけられたファイルは全てpatientと名づけられたファイルにインポートされます。

mysqlimportは次のオプションをサポートします。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --character-sets-dir=path

    キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --columns=column_list, -c column_list

    このオプションはカンマによって分けられたカラム名のリストを値とします。カラム名の順序は、データファイルカラムとテーブルカラムをどのようにマッチするか示しています。

  • --compress, -C

    双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。

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

    デバッグのログを書き込みます。debug_options 文字列は大抵 'd:t:o,file_name'になります。

  • --default-character-set=charset_name

    charset_nameをデフォルトキャラクタセットとして使用します。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --delete, -D

    テキストファイルをインポートする前にテーブルを空にします。

  • --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...

    これらのオプションはLOAD DATA INFILEに対応する節と同じ意味を持っています。項12.2.5. 「LOAD DATA INFILE 構文」 を参照してください。

  • --force, -f

    エラーを無視します。例えば、テキストファイルのテーブルが存在しない場合、残ったファイルの処理を続行します。--forceなしでは、テーブルが存在しない場合mysqlimportは抜けます。

  • --host=host_name, -h host_name

    与えられたホスト上でMySQLサーバからデータをインポートします。デフォルト設定では、localhostがホストになります。

  • --ignore, -i

    --replaceオプションの詳細を参照してください。

  • --ignore-lines=N

    データファイルの最初のNラインを無視します。

  • --lines-terminated-by=...

    これらのオプションはLOAD DATA INFILEに対応する節と同じ意味を持っています。例えば、carriage return/linefeed pairsでラインを消去されたWindowsファイルをインポートする場合、--lines-terminated-by="\r\n"を使用してください。(コマンドインタープリタのエスケプコンベンションによってはバックスラッシュを二つ加えなければいけない場合があります。)項12.2.5. 「LOAD DATA INFILE 構文」 を参照してください。

  • --local, -L

    クライアントホストからインプットファイルをローカルで読み込む。

  • --lock-tables, -l

    テキストファイルを処理する前に、全てのテーブルをロックします。これにより、全てのテーブルがサーバ上でシンクロしていることを保証します。

  • --low-priority

    テーブルロード時にLOW_PRIORITYを使用してください。

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

    サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。

    コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

  • --port=port_num, -P port_num

    コネクションに使用するTCP/IPポート番号です。

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

    使用するべき接続プロトコルです。

  • --replace, -r

    --replace--ignoreオプションは、ユニークキー上に存在する行を複製するインプット行のハンドリングをコントロールします。--replaceを特定した場合、同じユニークキー値を持つ現存の行は新しい行に取ってかわられます。--ignoreを特定した場合、ユニークキー値上に存在する行を複製するインプット行はスキップされます。どちらのオプションも特定しなかった場合、複製キー値が発見されたときエラーが発生し、残りのテキストファイルは無視されます。

  • --silent, -s

    サイレントモード。エラーが発生したときのみアウトプットを生成します。

  • --socket=path, -S path

    localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。

  • --ssl*

    --sslで始まるオプションは、SSLを介してサーバに接続し、SSL キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」 を参照してください。

  • --user=user_name, -u user_name

    サーバに接続する際使用するMySQLユーザ名です。

  • --verbose, -v

    Verbose モードプログラムの動作についてさらに情報をプリントアウトする。

  • --version, -V

    バージョン情報を表示し、閉じます。

mysqlimportの使用方法を表すサンプルセッションを以下に記します。

shell> mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
shell> ed
a
100     Max Sydow
101     Count Dracula
.
w imptest.txt
32
q
shell> od -c imptest.txt
0000000   1   0   0  \t   M   a   x       S   y   d   o   w  \n   1   0
0000020   1  \t   C   o   u   n   t       D   r   a   c   u   l   a  \n
0000040
shell> mysqlimport --local test imptest.txt
test.imptest: Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
shell> mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id   | n             |
+------+---------------+
|  100 | Max Sydow     |
|  101 | Count Dracula |
+------+---------------+

7.15. mysqlshow — データベース、テーブル、カラム情報を表示します。

mysqlshowクライアントは、どのデータベース、そのテーブル、あるいはテーブルカラムのインデックスが存在するか確認するために速やかに使用できます。

mysqlshowは複数のSQL SHOWステートメントに対してコマンドラインインターフェースを提供します。項12.5.4. 「SHOW 構文」を参照してください。それらステートメントを直接使用することで同じ情報を得ることができます。例えば、mysqlクライアントプログラムから発行することができます。

mysqlshowは以下のように起動してください。

shell> mysqlshow [options] [db_name [tbl_name [col_name]]]
  • データベースが提供されていない場合、データベース名のリストが表示されます。

  • テーブルが提供されていない場合、データベース内の全てのマッチするテーブルが表示されます。

  • カラムが提供されていない場合、テーブル内の全てのマッチするカラムとカラムタイプが表示されます。

出力は、ユーザがいくつかの権限を所持しているデータベース、テーブル、あるいはカラムの名前のみを表示します。

最後のアーギュメントがシェル、もしくはSQLワイルドキャラクタを含んでいる場合(‘*’、‘?’、‘%’、あるいは‘_’)、ワイルドカードとマッチする名前のみ表示されます。データベース名にアンダースコアが含まれる場合、正しいテーブルやカラムのリストを取得できるように、それらはバックスラッシュで(Unixシェルによっては2つ)エスケープされるべきです。‘*’と‘?’キャラクタはSQL ‘%’と‘_’ ワイルドカードキャラクタに変換されます。これはテーブル名に‘_’を含むカラムを表示しようとした際に問題を引き起こす場合があります。なぜなら、mysqlshowはパターンにマッチするテーブル名のみを表示するからです。別々のアーギュメントとして‘%’をコマンドライン上で追加することで簡単に修正できます。

mysqlshowは次のオプションをサポートします。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --character-sets-dir=path

    キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --compress, -C

    双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。

  • --count

    テーブルごとの行の数を表示します。これはMyISAMテーブルで無ければ、遅い場合があります。

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

    デバッグのログを書き込みます。debug_options 文字列は大抵 'd:t:o,file_name'になります。

  • --default-character-set=charset_name

    charset_nameをデフォルトキャラクタセットとして使用します。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。

  • --host=host_name, -h host_name

    与えられたホスト上でMySQLサーバに接続します。

  • --keys, -k

    テーブルインデックスを表示します。

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

    サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。

    コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

  • --port=port_num, -P port_num

    コネクションに使用するTCP/IPポート番号です。

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

    使用するべき接続プロトコルです。

  • --show-table-type, -t

    テーブルタイプを示すカラムを表示します、例えばSHOW FULL TABLES。このタイプはBASE TABLEもしくはVIEWになります。

  • --socket=path, -S path

    localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。

  • --ssl*

    --sslで始まるオプションは、SSLを介してサーバに接続し、SSL キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」 を参照してください。

  • --status, -i

    各テーブルの追加情報を表示します。

  • --user=user_name, -u user_name

    サーバに接続する際使用するMySQLユーザ名です。

  • --verbose, -v

    Verbose モードプログラムの動作についてさらに情報をプリントアウトする。このオプションは情報量を増加させるために複数回使用することができます。

  • --version, -V

    バージョン情報を表示し、閉じます。

7.16. mysqlslap — クライアント負荷エミュレーション

mysqlslapはMySQLサーバのクライアント負荷をエミュレートし、各ステージのタイミングを報告する診断プログラムです。サーバにたいして複数のクライアントがアクセスしているかのように作動します。mysqlslapはMySQL 5.1.4.から提供されています。

mysqlslapは以下のように起動してください。

shell> mysqlslap [options]

--create--queryといったオプションはSQLステートメントを含む文字列やステートメントを含むファイルの特定を許容します。ファイルを特定した場合、デフォルトで各行ごとにステートメントを含んでいなければいけません。(つまり、暗示的なステートメントデリミタはニューラインキャラクタになります。)異なるデリミタを特定するのに--delimiterを使用してください。これにより、複数行にわたってステートメントの特定、もしくは1つのライン上で複数のステートメントを置くことができます。ファイルにコメントを含むことはできません。mysqlslapはそれらを理解しません。

mysqlslapは次のオプションをサポートします。

  • --help, -?

    ヘルプ メッセージを表示し、閉じます。

  • --auto-generate-sql, -a

    ファイルやコマンドオプションを介して提供されていない場合、SQLステートメントを自動的に生成します。

  • --compress, -C

    双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。

  • --concurrency=N, -c N

    SELECTステートメントを発行している際、シミュレートするクライアントの数。

  • --create=value

    テーブル作成の際使用するファイルか文字列。

  • --create-schema=value

    テストを実行するスキーマ。このオプションはMySQL 5.1.5.で追加されました。

  • --csv[=file]

    カンマによって分けられた値のフォーマットで出力を生成します。出力は名づけられたファイルか、ファイルが提供されていない場合標準出力に向かいます。このオプションはMySQL 5.1.5.で追加されました。

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

    デバッグのログを書き込みます。debug_options 文字列は大抵 'd:t:o,file_name'になります。

  • --delimiter=str, -F str

    ファイルかコマンドオプションを介して提供されたSQLステートメントで使用するデリミタです。

  • --engine=engine_name, -e engine_name

    テーブル作成の際使用するストレージエンジン。

  • --host=host_name, -h host_name

    与えられたホスト上でMySQLサーバに接続します。

  • --iterations=N, -i N

    実行するテストの回数。

  • --lock-directory=path

    ロックの保存に使用するディレクトリです。このオプションはMySQL 5.1.5.で追加されました。

  • --number-char-cols=N, -x N

    使用するVARCHARカラムの数 --auto-generate-sqlが特定されている場合。

  • --number-int-cols=N, -y N

    使用するINTカラムの数 --auto-generate-sqlが特定されている場合。

  • --number-of-queries=N

    各クライアントをこのクエリの数に限定します。このオプションはMySQL 5.1.5.で追加されました。

  • --only-print

    データベースに接続しないでください。mysqlslapは実行されるべきであったことだけプリントします。このオプションはMySQL 5.1.5.で追加されました。

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

    サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできませんpassword値を --passwordあるいは-pオプションをコマンドライン上で省いた場合、ここで求められます。

    コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。

  • --port=port_num, -P port_num

    コネクションに使用するTCP/IPポート番号です。

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

    使用するべき接続プロトコルです。

  • --preserve-schema

    mysqlslapの実行からスキーマを保存します。このオプションはMySQL 5.1.5.で追加されました。

  • --query=value, -q value

    データ回収のため使用するSELECTステートメントを含むファイルか文字列。

  • --silent, -s

    サイレントモード。出力はありません。

  • --skip-query, -Q

    SELECTを実行しないでください。

  • --slave

    他のmysqlslapクライアントに対してマスタロックをフォローしてください。1つのマスタサーバのまわりでシンクロを試みている場合このオプションを --lock-directoryとNFS。このオプションはMySQL 5.1.5.で追加されました。

  • --socket=path, -S path

    localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。

  • --ssl*

    --sslで始まるオプションは、SSLを介してサーバに接続し、SSL キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」 を参照してください。

  • --use-threads

    Unixでは、デフォルトではfork()を使用します。このオプションを使用することで、代わりにpthreadコールが使用されます。Windowsでは、デフォルトはpthreadコールを使用し、オプションは効果がありません。このオプションはMySQL 5.1.6.で加されました。

  • --user=user_name, -u user_name

    サーバに接続する際使用するMySQLユーザ名です。

  • --verbose, -v

    Verbose モードプログラムの動作についてさらに情報をプリントアウトする。

  • --version, -V

    バージョン情報を表示し、閉じます。

7.17. mysql_zap — パターンとマッチする処理を消去します。

mysql_zapはパターンとマッチする処理を消去します。psコマンドとUnixシグナルを使用しますので、UnixやUnixと似たシステムで作動します。

mysql_zapは以下のように起動してください。

shell> mysql_zap [-signal] [-?Ift] pattern

処理はpsコマンドにパターンが含まれている場合に、出力ラインとマッチします。デフォルトで、mysql_zap各処理の確認を要求します。.処理を消去するにはy、閉じるにはqmysql_zapとしてください。たのレスポンスに関しては、mysql_zapは処理の消去を試みません。

-signalオプションが提供されている場合、各処理に送信するシグナルか番号の名前を特定します。でなければ、mysql_zapはまずTERM (シグナル15)、そしてKILL (シグナル9)を使用します。

mysql_zapは以下のオプションを理解します。

  • --help, -?, -I

    ヘルプ メッセージを表示し、閉じます。

  • -f

    フォースモード。mysql_zapは確認なしで各処理の消去を試みます。

  • -t

    テストモード各処理の情報を表示しますが、消去はしません。

7.18. perror — エラーコードの説明

殆どのシステムエラーでは、内部テキストメッセージに加えて、MySQLは以下のスタイルでシステムエラーコードを表示します。

message ... (errno: #)
message ... (Errcode: #)

システムのドキュメンテーションを確認するか、perrorユーティリティを使用することでエラーコードの意味を割り出すことができます。

perrorはストレージエンジン(テーブルハンドラ)エラーコードかシステムエラーコードの説明をプリントします。

perrorは以下のように起動してください。

shell> perror [options] errorcode ...

例:

shell> perror 13 64
Error code  13:  Permission denied
Error code  64:  Machine is not on the network

MySQLクラスタエラーコードのエラーメッセージを取得するためには、perror--ndbオプションと起動してください。

shell> perror --ndb errorcode

システムエラーメッセージの意味はユーザのOSによって異なる場合があります。エラーコードの意味は異なるOSでは違う意味である場合があります。

perrorは次のオプションをサポートします。

  • --help, --info, -I, -?

    ヘルプ メッセージを表示し、閉じます。

  • --ndb

    MySQLクラスタエラーコードのエラーメッセージをプリントします。

  • --silent, -s

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

  • --verbose, -v

    Verbose モードエラーコードとメッセージをプリントします。これがデフォルトになります。

  • --version, -V

    バージョン情報を表示し、閉じます。

7.19. replace — 文字列置き換えユーティリティ

replaceユーティリティプログラムはファイル上、もしくは標準インプットの文字列を変更します。

replaceは以下の様に起動してください。

shell> replace from to [from to] ... -- file [file] ...
shell> replace from to [from to] ... < file

fromは探す文字列を表し、toはその代わりを表しています。文字列は1つ以上ありえます。

--オプションを使用して文字列置き換えリストが終わる場所と、ファイル名が始まる場所を特定してください。この場合、コマンドライン上で名づけられたファイルはその場で改良されるので、変換する前にオリジナルの複製を作成をしたほうがいいかもしれません。 replaceは実際にどのインプットファイルを改良したかを示すメッセージをプリントします。

--オプションが与えられていない場合、replaceは標準インプットを読み、標準出力に書き出します。

replaceはfinite state machine を使用して長い文字列から先にマッチします。文字列の交換に使用できます。例えば、以下のコマンドはabをファイルfile1file2で交換します。

shell> replace a b b a -- file1 file2 ...

replaceプログラムはmsql2mysqlに使用されています。項23.9.1. 「msql2mysql — MySQLと一緒に使うため、mSQLプログラムを変換してください。」 を参照してください。

replaceは次のオプションをサポートします。

  • -?, -I

    ヘルプ メッセージを表示し、閉じます。

  • -# debug_options

    デバッグのログを書き込みます。debug_options 文字列は大抵 'd:t:o,file_name'になります。

  • -s

    サイレントモード。プログラムの動作について、情報を少なくプリントアウトする。

  • -v

    Verbose モードプログラムの動作についてさらに情報をプリントアウトする。

  • -V

    バージョン情報を表示し、閉じます。


powered by SEO.CUG.NET