目次
MySQL クライアント プログラムには、データベースをアクセスしたり管理タスクを実行するためにサーバに接続するものが多々あります。他のユーティリティも利用できます。これらはサーバとクライアントを接続するようなことはしませんが、MySQL関連のオペレーションを実行します。
この章ではこれらのプログラムを大きく分け概要を提供した上で、各プログラムの詳細を説明します。各プログラムの詳細説明は起動構文とそのプログラムによって理解されるオプションを示しています。プログラム オプションの指定と、プログラムの起動に関する一般的な情報は、章?3. MySQL プログラムの使用を参照してください。
以下のリストに手短にMySQL クライアント プログラムとユーティリティ プログラムを記します。
オプション ファイルのオプション グループに存在するユーティリティです。項7.2. 「my_print_defaults ? オプション ファイルから オプションを表示する」 を参照してください。
MyISAMテーブル内のフルテキスト
インデックスの情報を表示するユーティリティです。項7.3. 「myisam_ftdump ? フル テキスト インデックス情報を表示する」
を参照してください。
MyISAMテーブルを修理、最適化、チェック、そして説明するユーティリティです。項7.4. 「myisamchk ? MyISAM テーブル メンテナンス ユーティリティ」
を参照してください。
MyISAMログ
ファイルの内容を処理するユーティリティです。項7.5. 「myisamlog ? Display MyISAM Log File Contents」
を参照してください。
読み取り専用の小型テーブルを生成するためにMyISAM
テーブルを圧縮するユーティリティです。項7.6. 「myisampack ? 圧縮された、読み取り専用MyISAM テーブルを作成する。」
を参照してください。
インタラクティブにSQL ステートメントを書き込む、もしくはバッチモード内のファイルを使用してステートメントを実行するためのコマンド ライン ツールです。項7.7. 「mysql ? MySQL コマンド ライン ツール」 を参照してください。
ホスト名、ユーザ名、そしてデータベース コンビネーションのアクセス権限をチェックするスクリプトです。項7.8. 「mysqlaccess ? アクセス権限をチェックするクライアント」 を参照してください。
データベースの作成や削除、グラント テーブルのリロード、ディスクへのテーブルのフラッシュ、そしてログ ファイルの再オープンなどの管理オペレーションを実行するクライアント。mysqladminはサーバからバージョン、処理、そしてステータス情報の取得ができます。項7.9. 「mysqladmin ? MySQL サーバの管理を行うクライアント」 を参照してください。
バイナリ ログからステートメントを読み取るためのユーティリティ。.クラッシュ状態からリカバーするために、バイナリ ログ ファイルに含まれる実行ステートメントのログを使用することができます。項7.10. 「mysqlbinlog ? バイナリログファイルを処理するためのユーティリティ」 を参照してください。
テーブルのチェック、修理、分析、そして最適化を行うテーブル メンテナンスのクライアント。項7.11. 「mysqlcheck ? テーブル メンテナンスと修復プログラム」 を参照してください。
MySQL データベースをSQL、テキスト、もしくは XML としてダンプするクライアント。項7.12. 「mysqldump ? データベースバックアッププログラム」 を参照してください。
サーバ作動中に MyISAM
テーブルのバックアップを作成するユーティリティ。項7.13. 「mysqlhotcopy ? データベースバックアッププログラム」
を参照してください。
LOAD DATA
INFILEを使用してそれぞれのテーブルにテキスト
ファイルをインポートするクライアント。項7.14. 「mysqlimport ? データインポートプログラム」
を参照してください。
データベース、カラム、そしてインデックスの情報を表示するクライアント。項7.15. 「mysqlshow ? データベース、テーブル、カラム情報を表示します。」 を参照してください。
MySQL サーバのクライアント負荷をエミュレートし、各ステージのタイミングを報告するクライアント。複数のクライアントがサーバにアクセスしているかのように作動します。
パターンと合致するプロセスを抹消するユーティリティです。 項7.17. 「mysql_zap ? パターンとマッチする処理を消去します。」.
システムあるいはMySQL エラー コードの意味を表示するユーティリティです。項7.18. 「perror ? エラーコードの説明」 を参照してください。
インプット テキストで文字列を置換するユーティリティ プログラムです。項7.19. 「replace ? 文字列置き換えユーティリティ」 を参照してください。
MySQL AB は管理や MySQL サーバとの使用のためにいくつかの GUI ツールも提供しています。これらについての基本的な情報に関しては、章?3. MySQL プログラムの使用 を参照してください。
各MySQL
プログラムが多くのさまざまなオプションを使用します。ほとんどの
MySQL プログラムには
--helpオプションがあり、このオプションを使用することにより、そのプログラムのすべてのオプションの説明を表示することができます。例えば、mysql
--help を試してみてください。
MySQL クライアント・サーバ ライブラリを使用してサーバと交信する MySQL クライアント プログラムは以下の環境変数を使用しています。
MYSQL_UNIX_PORT | localhostへの接続に使用される、デフォルト
Unix ソケットファイル |
MYSQL_TCP_PORT | TCP/IP 接続に使用されるデフォルトのポート番号 |
MYSQL_PWD | デフォルトパスワード |
MYSQL_DEBUG | デバッグ中にトレースオプションをデバッグ |
TMPDIR | テンポラリテーブルやテンポラリファイルが作成されるディレクトリ |
MYSQL_PWD
の使用は危険です。項4.8.6. 「パスワードのセキュリティ」
を参照してください。
オプション ファイルやコマンド ラインでオプションを指定することで、全ての標準プログラムで指定される環境変数値やデフォルト オプション値を重ね処理することができます。項3.3. 「プログラム・オプションの指定」 を参照してください。
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
は以下のオプションを理解します。
ヘルプ メッセージを表示し、閉じます。
--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
コマンド ラインで名づけられたグループのほかに、以下の接尾辞を与えられたグループを読み込んでください。
殻の文字列を返してください。
Verbose モードプログラムの動作についてさらに情報をプリントアウトする。
バージョン情報を表示し、閉じます。
myisam_ftdump は MyISAM
テーブル内の 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
であり、txt の
FULLTEXT
インデックスは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 は以下のオプションを理解します。
myisamchk
ユーティリティはユーザのデータベース
テーブルの情報を収集し、チェック、修復、もしくは最適化します。myisamchk
は MyISAM
テーブルとともに作動します(データやインデックスを記憶するための
.MYD や .MYI
テーブル)。
myisamchk は以下のように起動してください。
shell> myisamchk [options] tbl_name ...
options は
myisamchk
にどういった作業をさせたいか特定します。以下のセクションで説明されています。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 を使用してください。
このセクションで紹介されているオプションは myisamchk によって実行される全てのテーブル メンテナンス オペレーションに使用することができます。このセクション以降のセクションは特定のオペレーションに関するオプションのみを説明します。例えば、テーブルのチェックや修復。.
ヘルプ メッセージを表示し、閉じます。
--debug=
debug_options,
-# debug_options
デバッグのログを書き込みます。debug_options
文字列は大抵
'd:t:o,になります。
file_name'
サイレントモード。エラーが発生したときのみアウトプットを書き込みます。-s
は myisamchk
を非常にサイレントにするため2回(-ss)
使用することができます。
Verbose
モードプログラムの動作についてさらに情報をプリントアウトする。これは
-d と -e
と共に使用することができます。さらに出力を得るため、-v
を複数回(-vv、-vvv)
使用してください
バージョン情報を表示し、閉じます。
テーブルがロックされている場合に、エラーとして消去するよりも、再開はテーブルがアンロックされるまで待ってください。外部ロックを無効の状態で mysqld を起動している場合、テーブルは myisamchk コマンドを使用することでのみ、ロックすることができます。
--
構文を使用することで以下の構文をセットすることができます。
var_name=value
| 変数 | デフォルト値 |
decode_bits | 9 |
ft_max_word_len | version-dependent |
ft_min_word_len | 4 |
ft_stopword_file | built-in list |
key_buffer_size | 523264 |
myisam_block_size | 1024 |
read_buffer_size | 262136 |
sort_buffer_size | 2097144 |
sort_key_blocks | 16 |
stats_method | nulls_unequal |
write_buffer_size | 262136 |
可能な myisamchk 変数とデフォルト値は myisamchk --help で確認することができます。
sort_buffer_size
はソートキーでキーが修復された場合に使用されます。これは
--recover
を使用した場合は普通です。
key_buffer_size は
--extend-check
でテーブルをチェックするとき、もしくはテーブルに行ごとにキーを入力することでキーを修復する際に使用されます(普通にインサートする場合の様に)。キーバッファを通しての修復は以下の場合使用されます。
--safe-recover を使用する場合。
キーのソートに必要なテンポラリ
ファイルは直接キーファイルを作成する際よりも、倍の大きさとなります。これは
CHAR、VARCHAR、もしくは
TEXT
カラムに大きなキー値が与えられている場合によくあります。これは、進行するにつれてソート
オペレーションは完全なキー値を記憶する必要があるからです。テンポラリ
スペースに余裕があり、myisamchk
を使用して強制的にソートすることで修復する場合、--sort-recover
オプションを使用することができます。
キーバッファを使用して修復するのはソートよりもはるかにディスクの空き容量に余裕を持たせることができますが、速度も落ちます。
修復スピードを早くする場合、key_buffer_size
と sort_buffer_size
変数を使用できるメモリの25%にセットしてください。同時に使用されることは無いので、双方の変数の値を大きくセットすることができます。
myisam_block_size はインデックス
ブロックに使用されるサイズです。
stats_method は NULL
値が、--analyze
オプションを与えられたときに、インデックス統計の集計の際にどう扱われるかに影響します。myisam_stats_method
システム変数のような働きをします。詳しくは、in
項4.2.3. 「システム変数」 と
項6.4.7. 「MyISAMインデックス統計コレクション」に含まれる
myisam_stats_method
の詳細を参照してください。
ft_min_word_len と
ft_max_word_len は
FULLTEXT
インデックスの最低と最高文字長を指します。
ft_stopword_file
はストップワードファイルに名前をつけます。以下の状態でこれらをセットしなければいけません。
myisamchk を使用してテーブル
インデックスを改良するオペレーションを実行する場合、(例えば分析や修復)他に特定されない場合、FULLTEXT
インデックスはデフォルト フル テキスト
パラメータ値を、最低・最高文字長とストップワードファイルを使用して再構築されます。これはクエリの失敗につながることがあります。
この問題は、パラメータがサーバのみに理解されていることにより発生します。MyISAM
インデックスファイルには記憶されていません。サーバ内の最低・最高文字長もしくはストップワードファイルを改良した上で、問題を回避するには、ft_min_word_len,
ft_max_word_lenとft_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
TABLE、ANALYZE
TABLE、OPTIMIZE
TABLE、もしくは ALTER TABLE
を使用することができます。これらのステートメントは、正しいフル
テキスト
パラメータ値を理解しているサーバによって実行されます。
myisamchk はテーブルチェックオペレーション用の以下のオプションをサポートしています。
テーブルにエラーが無いかチェックします。明示的にオペレーションタイプを選択しない場合、これがデフォルトオペレーションとなります。
前チェックより変更されたテーブルのみをチェックする。
テーブル チェックを入念に行います。テーブルにインデックスが多数ある場合、この作業には時間がかかります。このオプションは極端な処置として使用するべきです。通常、myisamchk と myisamchk --medium-check を使用してテーブル内のエラーの有無を確認することができます。
--extend-check
を使用していてメモリ容量も十分な場合、key_buffer_size
値を大きくセットすれば、修復オペレーションのスピードを上げることができます。
正しく閉じられていないテーブルのみをチェックする。
myisamchk
がエラーをテーブル内で発見した場合、自動的に修復オペレーションを実行する。修復タイプは
--recover や -r
オプションで特定されたものと同一です。
チェックされたテーブルの統計情報をプリントします。
--extend-check
オペレーションよりも速いチェックを行います。これはエラーの99.99%をチェックし、ほとんどの場合において十分な成果を発揮します。
テーブルをチェックされたものとして処理しません。myisamchk を使用して、ロックを使用しないアプリケーションによって使用されているテーブルをチェックする際に便利です。例えば、外部ロックを無効にした状態で mysqld が作動している場合。
情報を .MYI
ファイルに記憶し、いつテーブルがチェックされたか、そしてテーブルがクラッシュしているかをチェックします。.これを使用することによって
--check-only-changed
オプションの利便性を最大限に引き出すことができますが、mysqld
サーバがテーブルを使用し、且つ外部ロックを無効にした状態で起動している場合、このオプションを使用しないでください。
myisamchk はテーブル修復オペレーション用の以下のオプションをサポートしています。
.MYD
ファイルのバックアップを
として作成する。
file_name-time.BAK
キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。
テーブルのチェックサム情報を修正する。
--data-file-length=
len,
-D len
データファイルの最高長さ(「full」 時データファイルを再作成する場合)。
データファイルから全ての行をリカバーする修復を試みる。これは通常、役に立たない行も取り込んでしまう。よほど切羽詰っていない限り、このオプションは使用しないでください。
アボートする代わりに、古い中間ファイルをオーバーライトする(
などの名前を持つファイル)
tbl_name.TMD
myisamchk では、オプション値はどのインデックスを更新すべきかを指し示す、ビット値です。オプション値の各バイナリ ビットは、最初のインデックスがビット0のところ、テーブル インデックスと対応しています。0のオプション値は全てのインデックスへの更新を無効にし、これによりインサートのスピードを上げることができます。無効化されたインデックスは myisamchk -r を使用して有効化することができます。
myisamchk が記憶するためのメモリを確保できない場合、ある一定の長さの行をスキップします。
-r と -n
同じテクニックを使いますが、異なるスレッドを使用して全てのキーをパラレルで作成します。これはベータ級コードです。ユーザの責任で使用してください。
データファイルを改良しないことで、修復のスピードを上げられます。このオプションを2回指定することで、複製キーの場合 myisamchk を使用して強制的にオリジナルデータファイルを改良させることができます。
ユニークではなユニークキー以外のほぼ全ての問題を解決することのできる修復を実行します(MyISAM
テーブルでこのエラーが発生する可能性は非常に低いです)。テーブルをリカバーしたい場合、このオプションを先に試してください。--safe-recoverは、myisamchk
が --recover
を使用してもテーブルがリカバーできないと報告した場合のみ、試すべきです。(非常に稀ではありますが、--recover
が失敗した場合、データファイルは無事なままです。)
メモリ容量に余裕がある場合、sort_buffer_size
の値を増やすことをお勧めします。
発見した行に基づいて、全ての行を読みこみ全てのインデックス
トリーを更新する古いリカバリ手段をとります。この方法は
--recover
よりも格段に遅くなりますが、--recover
では対応できない稀なケースにも対応できます。このリカバリメソッドは
--recover
よりもはるかに少ないディスクスペースを使用します。通常、まず
--recover
を使用して修復を行い、--recover
が失敗した場合、--safe-recover
を使用してください。
メモリ容量に余裕がある場合、key_buffer_size
の値を増やすことをお勧めします。
テーブル インデックスのソートに使用する照合順序を特定します。照合順序名の初めの部位がキャラクタセット名を示しています。
テンポラリ ファイルのサイズが大きくなりますが、キーの解決に強制的に myisamchk にソートを使用させます。
テンポラリ
ファイルのソートに使用されるディレクトリのパスです。これがセットされていない場合、myisamchk
は TMPDIR
環境変数の値を使用します。tmpdir
はテンポラリファイルの作成のためラウンドロビン形式でディレクトリ
パスのリストをセットするために用いられます。
ディレクトリ名の間にあるキャラクタは、ユニックス上ではコロン(‘:’)であり、ウィンドウズ、Netware、OS/2ではではセミコロン(‘;’)
になります。
myisampack でパックされたテーブルをアンパックします。
myisamchk はテーブルチェックや修復以外のアクションを行う、以下のオプションをサポートしています。
キー値の分布を分析します。ジョインオプティマイザに、どのテーブルを結合し、どのインデックスを使用するかより効率的に選択させることで結合パフォーマンスを向上させます。To
キー分布の情報を取得するためには、myisamchk
--description --verbose
tbl_name
コマンドか SHOW INDEX FROM
ステートメントを使用してください。
tbl_name
--block-search=,
offset-b
offset
ある特定のオフセットのブロックが属する記録を見つけなさい。
テーブルの説明を含む情報をプリントします。
--set-auto-increment[=,
value]-A[
value]
AUTO_INCREMENT
ナンバリングを強制して新しい行がある値で始まるようにします(あるいは、存在する行の
AUTO_INCREMENT
値が大きい場合、さらに大きい値で始まるようにします。)もし
値
が特定されていない場合、新しい行の
AUTO_INCREMENT
数字は現在テーブル内の最も高い値+1になります。
高い順にインデックストリーブロックをソートします。これによりシークが最適化され、インデックスを使用するテーブルスキャンのスピードが上がります。
特定のインデックスに基づいて行をソートします。これによりデータがさらにローカライズされ、このインデックスを使用する、レンジに基づくSELECTやORDER
BYオペレーションのスピードが上がります。(初めてテーブルをソートするのにこのオプションを使用する場合、かなり遅い場合があります。)テーブルのインデックス数字を決定するには、myisamchkが見た同じ順序でテーブルのインデックスを表示するSHOW
INDEXを使用してください。インデックスは1から番号がふられます。
キーがパックされていない場合、(PACK_KEYS=0))同じ長さになります。よって、myisamchkが行を移動もしくはソートするとき、インデックスの行オフセットを上書きします。キーがパックされている場合、(PACK_KEYS=1)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を使用すれば、ほとんどの場合ことたります。
myisamchkはTMPDIR内でテンポラリファイルを使用することに注意してください。もしTMPDIRがメモリファイルシステムを指した場合、メモリエラーから簡単に脱出できます。これが起こった場合、スペースに余裕のあるファイルシステム上のディレクトリを指定するよう、myisamchkを--tmpdir=オプションと使用してください。
path
修復時、myisamchkもディスクスペースを大量に必要とします。
データファイルの大きさを2倍にしてください(オリジナルファイルと複製を作成してください)。--quickで修復を行った場合スペースは必要ありません。この場合、再作成されるのはインデックスファイルのみです。このスペースはオリジナルのデータファイルと同じシステムで必要になります!(コピーはオリジナルと同じディレクトリで作成されます。)
古いインデックスファイルの代わりとなる新しいインデックスファイルのスペース修復オペレーションの始めに古いインデックスファイルは切り捨てられるため、大抵はこのスペースは無視されます。このスペースはオリジナルのインデックスファイルと同じシステムで必要になります!
--recoverあるいは--sort-recoverを使用しているとき、
(しかし--safe-recoverは使用していないとき)ソートバッファのスペースが必要となります。以下の式は必要なスペースの量を生み出します。
(largest_key+row_pointer_length) ×number_of_rows× 2
キーの長さとrow_pointer_lengthをmyisamchk
-dv
tbl_nameでチェックすることができます。このスペースはテンポラリディレクトリにアロケートされています。(TMPDIRか--tmpdir=によって特定されています)。
path
修復中、ディスクスペースが足りなくなった場合、--recoverの代わりに--safe-recoverを使用してみてください。
myisamlogはMyISAMログファイルの内容を処理します。
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
バージョン情報を表示します。
myisampackユーティリティはMyISAMテーブルを圧縮します。myisampackはテーブル内の各カラムを別個に圧縮することで作動します。通常、myisampackは40%-70%データファイルをパックします。
テーブルが後で使用される場合、カラムの解凍に必要な情報をサーバがメモリ内に読み込みます。これにより個別の行をアクセスする際のパフォーマンスが向上します。これは1つの行のみ解凍するだけでことたりるからです。
MySQLは圧縮されたテーブルでメモリのマッピングが可能な場合、mmap()を使用します。もしmmap()が使用できない場合、MySQLは普通のファイル読み込み・書き込みオペレーションを使用します。
以下の点に注意してください。
もしmysqldサーバが外部ロックが無効化された状態で起動された場合、パックの最中にテーブルが更新される可能性があるので、myisampackの起動はお勧めできません。サーバが停止している最中にテーブルを圧縮するのが安全です。
テーブルをパックした場合、読み取り専用となります。通常これは意図して行います(たとえばCD内のパックされたテーブルにアクセスする際)。パックされたテーブル内で書き込みを許容できるようにする予定はありますが、優先順位は高くありません。
myisampackはBLOBあるいはTEXTカラムをパックできます。(ISAMテーブルの古いpack_isamプログラムにはこの機能はありませんでした。)
myisampackは以下のように起動してください。
shell> myisampack [options] file_name ...
各ファイル名アーギュメントはインデックスファイル(.MYI)
名であるべきです。ユーザがデータベースディレクトリにいない場合、ファイルへのパスネームを特定してください。.MYI拡張の省略は許容されています。
myisampackを使用してテーブルを圧縮した後、インデックスを再生するためmyisamchk -rqを使用してください。 項7.4. 「myisamchk ? MyISAM テーブル メンテナンス ユーティリティ」.
myisampackは次のオプションをサポートします。
ヘルプ メッセージを表示し、閉じます。
を使用して各テーブルのデータファイルのバックアップを作成します。
tbl_name.OLD
キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。
--debug[=,
debug_options]-#
[
debug_options]
デバッグのログを書き込みます。debug_options
文字列は大抵
'd:t:o,になります。
file_name'
元のテーブルより大きくなるか、以前のmyisampack起動からのインターミディートファイルが存在する場合も、パックされたテーブルを生成します。(myisampackは、テーブル圧縮時、と名づけられたインターミディエートファイルをデータベースディレクトリ内に作成します。myisampackを抹消した場合、tbl_name.TMD.TMDファイルは削除されていないかもしれません。)通常、myisampackはが存在する場合、エラーが発生し閉じます。tbl_name.TMD--forceでは、myisampackはかまわずテーブルをパックします。
--join=,
big_tbl_name-j
big_tbl_name
コマンドライン上の全テーブルを1つのテーブルbig_tbl_nameに結合します。結合されるテーブルは、必ず同一の構成でなければいけません(同一カラム名、型、同一インデックス等など)。
バイトで行長さ保存サイズを特定します。値は1、2、あるいは3であるべきです。 myisampackは全ての行を1、2、あるいは3バイトの長さポインタで記憶します。通常、myisampackはファイルのパックをはじめる前に正しい長さの値を割り出せますが、さらに短い長さを使用することができた場合でも、パック処理の最中に気づかない可能性がありあます。この場合、myisampackは次回同じファイルをパックする際、さらに短い行長さを使用することができることを示すノートをプリントします。
サイレントモード。エラーが発生したときのみアウトプットを書き込みます。
実際にテーブルをパックせず、パックのテストを行います。
名づけられたディレクトリを、myisampackがテンポラリファイルを作成する場所に使用します。
Verbose モードパックオペレーションの進捗具合と結果を示す情報を書き出します。
バージョン情報を表示し、閉じます。
テーブルが使用中の場合、待ってから再度試みます。もし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 stationMyISAM 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.MYICompressing 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 stationMyISAM 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オプションを使用してください。
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
mysql は次のオプションをサポートします。
ヘルプ メッセージを表示し、閉じます。
自動リハッシュを有効化します。このオプションはデフォルトではオンに設定されており、テーブル・カラム名の終了を可能にしています。リハッシュを無効化するには、--skip-auto-rehashを使用してください。これによりmysqlの起動が早くなりますが、テーブル・カラム名を終了させたい場合、rehashコマンドを発行しなければいけません。
タブとして、カラムセパレータを使用することで、各行が新しいライン上に配置されるように、結果をプリントします。このオプションでは、mysqlはヒストリファイルを使用しません。
キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。
結果にカラム名を記述します。
双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。
--database=,
db_name-D
db_name
使用されるべきデータベースです。これは基本的には、オプションファイルで便利です。
--debug[=,
debug_options]-#
[
debug_options]
デバッグのログを書き込みます。debug_options
文字列は大抵
'd:t:o,.file_name'
になります。'd:t:o,/tmp/mysql.trace'がデフォルトになります。
プログラムが閉じるときに、デバッグ情報をプリントします。
--default-character-set=
charset_name
charset_nameをデフォルトキャラクタセットとして使用します。項4.10.1. 「データおよびソート用キャラクタ セット」
を参照してください。
ステートメントデリミタをセットします。デフォルトはセミコロン(‘;’)キャラクタになります。
--execute=,
statement-e
statement
ステートメントを実行し、やめます。デフォルトの出力フォーマットは、--batchで生成されるものと類似しています。例については、項3.3.1. 「コマンドラインにおけるオプションの使用」
をご参照してください。
SQLエラーが発生しても続けます。
--host=,
host_name-h
host_name
与えられたホスト上でMySQLサーバに接続します。
HTML出力を生成します。
ファンクション名の後のスペースを無視します。これの効果はIGNORE_SPACE
SQLモード(項4.2.6. 「SQL モード」を参照してください)のディスカッションで記述されています。
エラーの際ライン番号を書き出します。--skip-line-numbersを使用することで無効化することができます。
LOAD DATA
INFILE上でLOCAL能力を有効化・無効化する。値がない場合、オプションはLOCALを有効化します。オプションはLOCALを明示的に有効化・無効化するため、--local-infile=0か--local-infile=1として提供されている場合があります。LOCALを有効化しても、サーバがサポートしていない場合、効果はありません。.
名をつけられているmysqlコマンドを有効化します。ショートフォーマットコマンドだけでなく、ロングフォーマットコマンドも許容されています。例えば、quitと\qは両方認識されます。名前つきコマンドを無効化するには、--skip-named-commandsを使用してください。項7.7.2. 「mysql Commands」
を参照してください。
-skip-auto-rehashの反対のフォーム。--auto-rehashの説明を参照してください。
エラー音を発生させません。
名前のついたコマンドを無効化します。\*フォームか、名前のついたコマンドはセミコロン(‘;’)で終わる行の始めのみで使用してください。
mysqlはデフォルトでenabledこのオプションで起動します。ただし、このオプションを使用しても、ロングフォーマットコマンドは最初の行から効果を発揮します。項7.7.2. 「mysql Commands」
を参照してください。
--skip-pagerの反対のフォーム。--pagerオプションを参照してください。
アウトプットをファイルへコピーしません。項7.7.2. 「mysql Commands」, discusses tee files further.
コマンドライン上で名づけられたデフォルトのデータベースのステートメント以外を無視します。これは他のバイナリログ内のデータベースの更新をスキップする場合に便利です。
ページングクエリ出力にこのコマンドを使用してください。このコマンドが取り除かれている場合、ページングのデフォルトはPAGER環境変数の値となります。有効なページングはless、more、cat
[>
filename]等などです。このオプションはUnix上でしか作動しません。バッチモードでは作動しません。ページングを無効化するには、--skip-pagerを使用してください。項7.7.2. 「mysql Commands」,
には出力ページングの詳細説明があります。
--password[=,
password]-p[
password]
サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password
あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。
コネクションに使用するTCP/IPポート番号です。
プロンプトを特定のフォーマットにセットします。そのデフォルトはmysql>です。プロンプト内で存在しえる特別なシーケンスは、項7.7.2. 「mysql Commands」で紹介されています。
--protocol={TCP|SOCKET|PIPE|MEMORY}
使用するべき接続プロトコルです。
各クエリ結果をキャッシュせず、受け取ったとおりに各行をプリントします。出力が遅延された場合、サーバのスピードを下げることがあります。このオプションでは、mysqlはヒストリファイルを使用しません。
エスケプ変換なしでカラム値を書きます。主に--batchオプションと併用されます。
サーバとの接続が失われたとき、再接続を自動的に試みます。接続が失われるたびに一度再接続が試みられます。再接続行為を抑制するには、--skip-reconnectを使用してください。
--safe-updates,
--i-am-a-dummy, -U
キー値を使用してどの行を改良するか特定する、UPDATEやDELETEステートメントを許容する。このオプションをオプションファイル内でセットした場合、--safe-updatesをコマンドライン上で使用することで重ね処理することができます。これらのオプションについては、項7.7.5. 「mysqlヒント」
をご参照してください。
古い(4.1.1以前)フォーマットでサーバへパスワードを送りません。接続を新しいパスワードフォーマットを使用するサーバに限定します。
警告が存在する場合、各ステートメント後に表示させます。このオプションはインタラクティブとバッチモードにのみ対応しています。
SIGINTシグナルを無視します(Control-Cを押すことで現れる主な結果)。
サイレントモード。出力生成を少なくします。このオプションをさらに少ない出力を生成するために複数回提供することができます。
結果にカラム名を記述しません。
エラーの際ライン番号を書き出しません。エラーメッセージを含む結果ファイルを比較したい場合に便利です。
localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。
--sslで始まるオプションは、SSLを介してサーバに接続し、SSL
キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」
を参照してください。
出力をテーブルフォーマットで評します。インタラクティブの場合これがデフォルトになりますが、テーブル出力をバッチモードで生成するのに使用することもできます。
ファイル上で出力の複製をアペンドします。このオプションはバッチモードでは作動しません。項7.7.2. 「mysql Commands」でteeファイルの説明を記述しています。
各クエリ後にバッファをフラッシュします。
--user=,
user_name-u
user_name
サーバに接続する際使用するMySQLユーザ名です。
Verbose
モードプログラムの動作についてさらに出力を生成します。このオプションをさらに多くの出力を生成するために複数回提供することができます。(例えば、-v
-v
-vはバッチモードでもテーブル出力フォーマットを生成します。)
バージョン情報を表示し、閉じます。
クエリ出力行を縦にプリントします。(カラム値ごとに一行)。このオプションを使用しない場合、\Gで消去することで個々のステートメントの縦の出力を特定することができます。
接続ができない場合、アボートせずに休止してから再トライします。
XML出力を生成します。
注:MySQL
5.1.12以前では、カラム内にNULL値を含むカラムと文字列リテラルをカラム内に含む'NULL'では、出力に違いは在りませんでした。双方とも、以下のように表現されていました。
<field name="column_name">NULL</field>
MySQL
5.1.12に始まり、--xmlがmysqlと使用されたときの出力はmysqldump
--xmlの出力とマッチします。.マニュアルのセクションを参照してください。mysqldumpの詳細について、--xmlオプションが紹介されています。
--
構文を使用することで以下の構文をセットすることができます。
var_name=value
接続タイムアウトまでの秒数。(そのデフォルトは0です。)
サーバから送・受信される最大パケット長。(そのデフォルト値はは16MBです。)
自動的に設定される--safe-updates使用時の結合内にある行のリミットです。(そのデフォルト値は1,000,000です。)
TCP/IPとソケット通信のバッファサイズ。(そのデフォルト値はは16KBです。)
自動的に設定される--safe-updates使用時のSELECTステートメントのリミットです。(そのデフォルト値は1,000です。)
--set-variable=
or var_name=value-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
これは一度だけ実行すれば事足ります。
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に対してエスケープキャラクタとなるので、バックスラッシュ
(‘\’)
キャラクターの使用を避けてください。
edit、nopager、pager、そしてsystemコマンドはUnix上でのみ機能します。
statusコマンドは、ユーザが使用している接続とサーバに関する情報を提供します。--safe-updatesモードで作動中の場合、statusはクエリに影響するmysql変数の値をプリントhします。
クエリとクエリの出力をログするには、teeコマンドを使用してください。画面上に表示されるデータは全てあるファイルにアペンドされます。これはデバッグを行う際も非常に便利です。この機能をコマンドライン上で有効化する場合は--teeオプションを使用するか、インタラクティブの場合はtee
コマンドを使用してください。teeファイルはnoteeコマンドでインタラクティブに無効化することができます。teeを実行することでロギングを再有効化します。
パラメータがない場合、以前のファイルが使用されます。mysqlが次のプロンプトをプリントする前に、teeは各ステートメントの後にクエリの結果をフラッシュすることに注意してください。
--pagerオプションを使用することで、インタラクティブモードではクエリ結果をブラウズ、検索することがless,
moreUnix、もしくは他の似たようなプログラムで可能です。オプションで値を特定しない場合、mysqlはPAGER環境変数の値をチェックし、ページャーをその値にセットします。出力ページングは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オプションは、左右の方向キーを使用して横にスクロールすることができますので、結果セットを読みやすくします。-Sはless内で、横向きブラウズモードをオン・オフする際にインタラクティブに使用することができます。追加情報に関しては、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を介して結果を画面に表示します。
teeとpagerファンクションも合わせる事ができます。teeファイルを有効化し、pagerをlessにセットしてあれば、lessプログラムを使い結果をブラウズしつつ、同時に全てをファイルにアペンドすることができます。pagerコマンドと一緒に使用されたUnix teeとmysqlビルトインteeコマンドの違いは、teeはUnix teeが提供されていない場合でも作動します。ビルトインteeはスクリーンにプリントされているもの全てをログしますが、pagerと一緒に使用されるUnix teeはそこまでログしません。さらに、teeファイルロギングはmysql内からインタラクティブにオン・オフすることができます。これは一部のクエリだけファイルにログしたいときに有効です。
デフォルトmysql>プロンプトは再コンフィギャ可能です。プロンプトを定義する文字列は以下の特別なシーケンスを含んでいる場合があります。
| オプション | 説明 |
\v | サーババージョン |
\d | デフォルトデータベース |
\h | サーバホスト |
\p | 現TCP/IPポートかソケットファイル |
\u | ユーザネーム |
\U | フルのアカウント名 |
\\ | リテラル‘\’バックスラッシュキャラクタ |
\n | ニューラインキャラクタ |
\t | タブキャラクタ |
\? | スペース(バックスラッシュの後のスペース) |
\_ | スペース |
\R | 現時刻、軍隊表記(0-23) |
\r | 現時刻、標準表記(1-12) |
\m | 現時刻の分 |
\y | 現年、2桁 |
\Y | 現年、4桁 |
\D | 日付(フルで) |
\s | 現時刻の秒 |
\w | 曜日名を頭3文字で(Mon, Tue, …) |
\P | am/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>
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 |
+---------------+-----------+
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>sourcemysql>file_name\.file_name
ユーザに進行状況を表示するスクリプトを使用したい場合があります。以下のようなステートメントを使用してください。
SELECT '<info_to_display>' AS ' ';
表示されたステートメントは<info_to_display>を出力します。
バッチモードの詳細についてはUsing mysql in Batch Modeを参照してください。
このセクションではmysqlをさらに効果的に使用するテクニックを紹介します。
クエリ結果の中にはたて表示のほうが、横テーブルフォーマットよりも読みやすいものがあります。セミコロンの代わりに\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)
初心者にとって、使いやすいスタートアップオプションは--safe-updates
(あるいは同じ効果のある--i-am-a-dummy)です。これはDELETE
FROM
ステートメントを発行したが、tbl_nameWHERE節を忘れてしまった場合に便利です。通常、このようなステートメントはテーブルから全ての行を消去します。--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ステートメントには以下の効果があります。
UPDATEやDELETEステートメントは、WHERE節内でキー制限を特定するか、LIMIT節を提供するか(あるいは両方)しないかぎり、実行は許容されません。例:
UPDATEtbl_nameSETnot_key_column=valWHEREkey_column=val; UPDATEtbl_nameSETnot_key_column=valLIMIT 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
もし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. 「自動再接続挙動の管理」を参照してください。
mysqlaccessはMySQL分布のために、Yves
Carlierが提供した診断ツールです。ホスト名、ユーザ名、そしてデータベースコンビネーションのアクセス権限をチェックします。mysqlaccessはアクセスをチェックする際、user、db、そしてhostテーブルのみを使用します。tables_priv、columns_priv、そしてprocs_priv
テーブルで特定されるテーブル、カラム、そしてルーチン権限はチェックしません。
mysqlaccessは以下のように起動してください。
shell> mysqlaccess [host_name [user_name [db_name]]] [options]
mysqlaccessは以下のオプションを理解します。
ヘルプ メッセージを表示し、閉じます。
シングル・ライン・タブフォーマットでレポートを生成します。
テンポラリテーブルから元のグラントテーブルへ新しいアクセス権限をコピーします。新しい権限が発動するには、グラントテーブルはフラッシュされなければいけません。(例えば、mysqladmin reloadコマンドを実行してください。)
オリジナルから、テンポラリグランとテーブルを再ロードします。
データベース名を特定します。
デバッグレベルを特定します。Nは0から3までの整数になります。
--host=,
host_name-h
host_name
アクセス権限で使用されるホスト名です。
mysqlaccessの使用方法を示す例を表示します。
サーバが、WHERE節の取り扱い方を完全に理解していない、古い(MySQL
3.21以前) MySQLサーバであると仮定します。
--password[=,
password]-p[
password]
サーバに接続する際使用するパスワードです。コマンドライン上で--password
あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。
未来のリリースのためのアイデアや提案を表示する。
テンポラリグラントテーブルに変更を加えた後、権限の差異を表示します。
リリースノートを表示します。
--rhost=,
host_name-H
host_name
与えられたホスト上でMySQLサーバに接続します。
テンポラリグラントテーブルへの最も最近の変更を戻します。
--spassword[=,
password]-P[
password]
サーバに接続する際、スーパーユーザとして使用するパスワードです。コマンドライン上で--password
あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。
--superuser=,
user_name-U
user_name
スーぱユーザとして接続する際のユーザ名を特定します。
テーブルフォーマットでレポートを生成します。
--user=,
user_name-u
user_name
アクセス権限で使用されるユーザ名です。
バージョン情報を表示し、閉じます。
ユーザのMySQLディストリビューションが通常とは違うロケーションにインストールされている場合、mysqlaccessがmysqlクライアントを発見できる場所を変更する必要があります。mysqlaccess
スクリプトを行18で編集してください。以下のような行を探してください。
$MYSQL = '/usr/local/bin/mysql'; # path to mysql executable
ロケーションを示すように、パスを変更してください。mysqlは実際にユーザのシステムに記憶されています。これをしなければ、mysqlaccessを起動したときにBroken
pipeエラーが発生します。
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コマンド結果は以下の値を表示します。
MySQLサーバが作動している秒数です。
アクティブスレッド(クライアント)の数です。
サーバが起動して以来クライアントからよせられた質問(クエリ)の数です。
long_query_time秒よりも時間を要したクエリの数です。項4.11.5. 「スロー クエリ ログ」
を参照してください。
サーバによって開かれていないテーブルの数です。
サーバが実行したflush-*、refresh、そしてreloadコマンドの数です。
現在開いているテーブルの数です。
mysqldによって直接割り当てられたメモリの量です。この値は、MySQLが--with-debug=fullでコンパイルされたときのみ表示されます。
mysqldによって直接割り当てられたメモリの最大量です。この値は、MySQLが--with-debug=fullでコンパイルされたときのみ表示されます。
Unixソケットファイルを使用してローカルサーバに接続する際mysqladmin shutdownを実行した場合、mysqladminはサーバのプロセスIDが取り除かれるまで待ちます。これはサーバが正しく停止したことを確認するためです。
mysqladminは次のオプションをサポートします。
ヘルプ メッセージを表示し、閉じます。
キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。
双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。
コマンドの実行反復回数。これは--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. 「データおよびソート用キャラクタ セット」
を参照してください。
drop
コマンドの確認を要求しません。複数のコマンドでは、エラーが発生しても続けます。
db_name
--host=,
host_name-h
host_name
与えられたホスト上でMySQLサーバに接続します。
--password[=,
password]-p[
password]
サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password
あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。
コネクションに使用するTCP/IPポート番号です。
--protocol={TCP|SOCKET|PIPE|MEMORY}
使用するべき接続プロトコルです。
--sleepオプションと使用された場合の現在値と以前の値の差異を表します。現時点では、このオプションはextended-statusコマンドのみと併用できます。
サーバとの接続が確立できないときは閉じてください。
コマンドは反復実行、delay秒間スリープしてください。--countオプションは反復回数を決定します。
localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。
--sslで始まるオプションは、SSLを介してサーバに接続し、SSL
キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」
を参照してください。
--user=,
user_name-u
user_name
サーバに接続する際使用するMySQLユーザ名です。
Verbose モードプログラムの動作についてさらに情報をプリントアウトする。
バージョン情報を表示し、閉じます。
縦に出力をプリントします。これは--relativeに似ていますが、出力が縦にプリントされます。
接続が確立できない場合、アボートせずに休止してから再トライします。count値が提供されている場合、再トライ回数を表しています。デフォルトは1回です。
--
構文を使用することで以下の構文をセットすることができます。
var_name=value
--set-variable=
or var_name=value-O
構文を使用することで、変数をセットすることも可能です。構文は反対語となっています。.
var_name=value
サーバが生成するバイナリログファイルはバイナリフォーマットで書かれています。これらのファイルをテキストフォーマットで確認するには、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は次のオプションをサポートします。
ヘルプ メッセージを表示し、閉じます。
ベース64 エンコードを使用して全てのバイナリログエントリをプリントします。.これはデバッグ専用です。このオプションを使用して生成したログはプロダクションシステムには付加すべきではありません。このオプションはMySQL 5.1.5.で追加されました。
キャラクタ セットがインストールされるディレクトリです。項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'になります。
バイナリロギングを無効化します。これは、--to-last-logオプションを使用して同じMySQLサーバに対して出力を送信している場合、エンドレスループを回避するのに便利です。このオプションは、クラッシュ後、すでにログ下ステートメントの複製を生成するのを回避するのに便利です。
このオプションはSUPER権限を保持していることを要求します。残りの出力のバイナリロギングを無効化するため、mysqlbinlog出力にSET
SQL_LOG_BIN=0ステートメントを含ませます。SETステートメントは、SUPER権限がない場合向こうです。
このオプションでは、mysqlbinlogが認識でき名いバイナリログイベントを読み込んだ場合、警告をプリント、イベントを無視し続行します。このオプションなしでは、mysqlbinlogはそのようなイベントを読み込んだ時点で停止します。
コメントでログの16進法ダンプを表示します。この出力は複製デバッグの際に便利です。16進法ダンプフォーマットは後ほどこのセクションで説明されています。このオプションはMySQL 5.1.2.で追加されました。
--host=,
host_name-h
host_name
あるホストでMySQLサーバからバイナリログを取得する。
特定のディレクトリ内からLOAD DATA
INFILEのローカルテンポラリファイルを準備する。
ログの最初のNエントリをスキップする。
--password[=,
password]-p[
password]
サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password
あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。
リモートサーバ接続時に使用するTCP/IPポート番号です。
Deprecated.代わりに--start-positionを使用してください。
--protocol={TCP|SOCKET|PIPE|MEMORY}
使用するべき接続プロトコルです。
バイナリログをローカルファイルから読み取らずにMySQLサーバから読み取ります。このオプションも提供されていない限りどの接続パラメータオプションも無視されます。これらのオプションは--host、--password、--port、--protocol、--socket、そして--userになります。
提供されているファイルに出力を導きます。
特定のサーバIDを持つサーバによってのみ作成されたイベントだけを抽出します。このオプションはMySQL 5.1.4.以降から提供されています。
ログファイルの処理のために使用する文字列を特定するため、出力にSET
NAMES
ステートメントを追加してください。このオプションはMySQL
5.1.12.で追加されました。
charset_name
ログに含まれるステートメントのみを表示します。
localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。
datetimeアーギュメントと等価、もしくは遅いタイムスタンプを持つ最初のイベントからバイナリログの読み取りを始めます。datetime値はmysqlbinlogを作動させた場合、ローカルタイムゾーンに相対的です。値はDATETIMEやTIMESTAMPデータ型に受け付けられるフォーマットでなければいけません。例:
shell> mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
このオプションはpoint-in-timeリカバリを使用する際便利です。項4.9.2. 「バックアップとリカバリ手法の例示」 を参照してください。
datetimeアーギュメントと等価、もしくは遅いタイムスタンプを持つ最初のイベントからバイナリログの読み取りを停止します。このオプションはpoint-in-timeリカバリを使用する際便利です。datetime値に関する詳細については--start-datetimeオプションの説明を参照してください。
Nアーギュメントと等価、もしくは遅いタイムスタンプを持つ最初のイベントからバイナリログの読み取りを始めます。このオプションはコマンドライン上で最初に名づけられるログファイルに対してのみ適用されます。
Nアーギュメントと等価、もしくは遅いタイムスタンプを持つ最初のイベントからバイナリログの読み取りを停止します。このオプションはコマンドライン上で最後に名づけられるログファイルに対してのみ適用されます。
MySQLサーバから要求されるバイナリログの後部で終了せず、最後のバイナリログまで続けてプリントします。同じMySQLサーバに出力を送信した場合、エンドレスループになる場合があります。このオプションは--read-from-remote-serverを要求します。
--user=,
user_name-u
user_name
リモートサーバに接続する際使用するMySQLユーザ名です。
バージョン情報を表示し、閉じます。
--
構文を使用することで以下の構文をセットすることができます。
var_name=value
--set-variable=
or var_name=value-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.sqlshell>mysqlbinlog binlog.000002 >> /tmp/statements.sqlshell>mysql -e "source /tmp/statements.sql"
mysqlbinlogはオリジナルデータファイルなしでLOAD
DATA
INFILEオペレーションを再生する出力を生成することができます。mysqlbinlogはデータをテンポラリファイルにコピーし、ファイルに関連するLOAD
DATA LOCAL
INFILEステートメントを書きます。これらのファイルが書かれているディレクトリ内のデフォルトロケーションはシステムごとに異なります。ディレクトリを明示的に指定したい場合は、--local-loadオプションを使用してください。
mysqlbinlogがLOAD 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であることを意味しています。以下のテーブルが可能なタイプをリストします。
| タイプ | 名 | 意味 |
00 | UNKNOWN_EVENT | このイベントはログ内に存在してはいけません。 |
01 | START_EVENT_V3 | MySQL 4より前のバージョンによって書き出されたログファイルの始めを示しています。 |
02 | QUERY_EVENT | 最も一般的なイベントのタイプです。これらはマスタで実行されるステートメントを含んでいます。 |
03 | STOP_EVENT | マスタが停止したことを示しています。 |
04 | ROTATE_EVENT | マスタが新しいログファイルにスイッチした際に書き出されます。 |
05 | INTVAR_EVENT | 一般的に、AUTO_INCREMENT
値に対して使用されます。これは、LAST_INSERT_ID()関数がステートメントで使用されているときです。 |
06 | LOAD_EVENT | MySQL3.23でLOAD DATA
INFILE用に使用されます。 |
07 | SLAVE_EVENT | 将来の使用のため保存されます。 |
08 | CREATE_FILE_EVENT | LOAD DATA INFILE
ステートメントに使用されます。これはそのようなステートメントの実行の始まりを示しています。スレーブ上でテンポラリファイルが作成されます。MySQL
4でのみ使用されています。 |
09 | APPEND_BLOCK_EVENT | LOAD DATA INFILE
ステートメントで使用されるデータを含んでいます。スレーブ上でデータがテンポラリファイル内に記憶されます。 |
0a | EXEC_LOAD_EVENT | LOAD DATA INFILE
ステートメントに使用されます。スレーブ上のテーブルにテンポラリファイルの内容が記憶されます。MySQL
4でのみ使用されています。 |
0b | DELETE_FILE_EVENT | LOAD DATA INFILE
ステートメントのロールバックです。テンポラリファイルはスレーブ上で消去されます。 |
0c | NEW_LOAD_EVENT | LOAD DATA INFILEMySQL
4以前のバージョンで使用されます。 |
0d | RAND_EVENT | RAND()関数がステートメントで使用されている場合、ランダム値の情報を送信するのに使用されます。 |
0e | USER_VAR_EVENT | ユーバ変数の複製に使用されます。 |
0f | FORMAT_DESCRIPTION_EVENT | MySQL 5かそれ以降のバージョンで書き出されたログファイルの始まりを示しています。 |
10 | XID_EVENT | XAトランザクションのコミットを示すイベントです。 |
11 | BEGIN_LOAD_QUERY_EVENT | MySQL 5以降のバージョンでLOAD DATA
INFILEステートメントに使用されます。 |
12 | EXECUTE_LOAD_QUERY_EVENT | MySQL 5以降のバージョンでLOAD DATA
INFILEステートメントに使用されます。 |
13 | TABLE_MAP_EVENT | テーブル定義の情報です。MySQL 5.1以降使用されています。 |
14 | WRITE_ROWS_EVENT | 作成されるはずのシングルテーブルの行データです。MySQL 5.1以降使用されています。 |
15 | UPDATE_ROWS_EVENT | 更新されるはずのシングルテーブルの行データです。MySQL 5.1以降使用されています。 |
16 | DELETE_ROWS_EVENT | 消去されるはずのシングルテーブルの行データです。MySQL 5.1以降使用されています。 |
Master
ID:イベントを作成したマスタのサーバIDです。
Size:イベントのサイズをバイトで表しています。
Master
Pos:オリジナルマスタログファイル内のイベントのポジションです。.
Flags:16
フラッグ現在、以下のフラッグが使用されています。他のフラグは将来に向けて保存されています。
| フラグ | 名 | 意味 |
01 | LOG_EVENT_BINLOG_IN_USE_F | ログファイルは完全に閉じています。(FORMAT_DESCRIPTION_EVENTでのみ使用されています。)このフラグがセットされている場合(例えば、フラグがFORMAT_DESCRIPTION_EVENT内で'01
00'の場合)
ログファイルは完全には閉じられていません。マスタがクラッシュしたことによる場合が最も可能性が高いです(例えば、停電などにより)。 |
02 | ? | 将来使用するために保存されています。 |
04 | LOG_EVENT_THREAD_SPECIFIC_F | イベントが実行されたときの接続に依存している場合セットしてください(例えば、'04
00')。例えば、イベントがテンポラリテーブルを使用している場合。 |
08 | LOG_EVENT_SUPPRESS_USE_F | イベントがデフォルトデータベースに対して依存していないケースではセットされることがあります。 |
他のフラグは将来使用するために保存されています。
mysqlcheckクライアントはテーブルのチェック、修復、最適化、そして分析を行います。
mysqlcheckのファンクションはmyisamchkと似ていますが、作動方法が異なります。実質的な作動方法の違いは、mysqlcheckはmysqldサーバが作動中の時に使用されなければいけません。myisamchkはこのサーバが作動していない時に使用品kればいけません。mysqlcheckを使用することの利点は、テーブルのチェックや修復時にサーバを停止させなくてすむことです。
mysqlcheckはSQLステートメントCHECK
TABLE、REPAIR
TABLE、ANALYZE
TABLE、そしてOPTIMIZE
TABLEをユーザにとって便利な方法で使用します。実行したいオペレーションに対してどのステートメントを使用するか決定し、実行のためサーバにステートメントを送信します。各ステートメントがどのストレージエンジンと作動するかは、ステートメントの説明を章?12. SQL ステートメント構文で参照してください。
MyISAMストレージエンジンは全4ステートメントをサポートしています。よって、mysqlcheckはMyISAMテーブル上で全4オペレーションを実行することができます。他のストレージエンジンは必ずしも全てのオペレーションをサポートしているとは限りません。そのような場合、エラーメッセージが表示されます。例えば、test.tがMEMORYテーブルの場合、チェックしようとすれば以下の結果が生成されます。
shell> mysqlcheck test t
test.t
note : The storage engine for the table doesn't support check
一般的に、mysqlcheckを起動するには3つの方法があります。
shell>mysqlcheck [shell>options]db_name[tables]mysqlcheck [shell>options] --databasesdb_name1[db_name2db_name3...]mysqlcheck [options] --all-databases
db_nameに続くテーブルに名前をつけない場合、もしくは--databases、--all-databasesオプションを使用している場合、データベース全体がチェックされます。
他のクライアントプログラムに比べ、mysqlcheckは特別な機能があります。テーブルチェックのデフォルト行為(--check)
はバイナリの名前を変更することで変えられます。テーブルをデフォルトで修復するツールが必要な場合、mysqlrepairと名づけたmysqlcheckのコピーを作成するか、mysqlrepairと名づけられたmysqlcheckへのシンボリックリンクを作成してください。mysqlrepairを起動すれば、テーブルを修復します。
以下の名前はmysqlcheckのデフォルト行為を変更するのに使用できます。
| mysqlrepair | デフォルトオプションは--repair |
| mysqlanalyze | デフォルトオプションは--analyze |
| mysqloptimize | デフォルトオプションは--optimize |
mysqlcheckは次のオプションをサポートします。
ヘルプ メッセージを表示し、閉じます。
データベース内のテーブルを全てチェックします。これは--databasesオプションを使用してコマンドライン上のデータベース全てに名前をつけることと同じです。
各テーブルのためにステートメントを発行する代わりに、データベースから処理されるテーブルの名前を記載しているデータベースごとにシングルステートメントを実行します。
テーブルを分析します。
チェックされたテーブルが破壊されていた場合、自動的に修復します。必要な修復は全てのテーブルがチェックされた後に実行されます。
キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。
テーブルにエラーが無いかチェックします。これがデフォルトオペレーションになります。
最後に行われたチェックより変更されたテーブル、もしくはしっかり閉じられていないテーブルをチェックします。
CHECK TABLEをFOR
UPGRADEオプションと共に起動し、現サーババージョンとの互換性の無いテーブルがあるかチェックします。これにより--fix-db-namesと--fix-table-namesオプションを自動的に有効化します。--check-upgradeはMySQL
5.1.7.で追加されました。
双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。
名づけられたデータベース内のテーブルを全て処理します。通常、mysqlcheckはコマンドライン上の最初のアーギュメント名とそれに続く名をテーブル名として認識します。このオプションを使用sるうことで、名前のついたアーギュメントを全てデータベース名として認識します。
--debug[=,
debug_options]-#
[
debug_options]
デバッグのログを書き込みます。debug_options文字列は大抵'd:t:o,
file_name'になります。
--default-character-set=
charset_name
charset_nameをデフォルトキャラクタセットとして使用します。項4.10.1. 「データおよびソート用キャラクタ セット」
を参照してください。
テーブルをチェックするのにこのオプションを試用している場合、100%適合していることを保証しますが、時間がかかります。
このオプションを使用してテーブルを修復している場合、修復作業に時間がかかる上、必要な無い無駄な行を生成することもあります。!
正しく閉じられていないテーブルのみをチェックする。
データベース名を5.1フォーマットに変換します。特別な文字を含むデータベース名のみ影響を受けます。このオプションはMySQL 5.1.7.加されました。
データベース名を5.1フォーマットに変換します。特別な文字を含むテーブル名のみ影響を受けます。このオプションはMySQL 5.1.7.加されました。
SQLエラーが発生しても続けます。
--host=,
host_name-h
host_name
与えられたホスト上でMySQLサーバに接続します。
--extendedオペレーションよりも速いチェックを行います。これはエラーの99.99%をチェックし、ほとんどの場合において十分な成果を発揮します。
テーブルを最適化します。
--password[=,
password]-p[
password]
サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password
あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。
コネクションに使用するTCP/IPポート番号です。
--protocol={TCP|SOCKET|PIPE|MEMORY}
使用するべき接続プロトコルです。
このオプションを使用してテーブルをチェックしている場合、正しくないリンクをチェックするために行のスキャンを行いません。これが最速のチェックメソッドです。
このオプションを使用してテーブルを修復している場合、インデックスとリーのみの修復を試みます。これが最速の修復メソッドです。
ユニークではないユニークキー以外の全てを修復できるリペアを実行します。
サイレントモード。エラーメッセージのみプリントします。
localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。
--sslで始まるオプションは、SSLを介してサーバに接続し、SSL
キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」
を参照してください。
--databasesか-Bオプションを重ね処理します。オプションに続く全てのネームアーギュメントはテーブル名として認識されます。
MyISAMの修復オペレーションでは、.frmファイルからテーブルストラクチャを取得することで.MYIヘッダが破壊されていてもテーブルが修復できます。
--user=,
user_name-u
user_name
サーバに接続する際使用するMySQLユーザ名です。
Verbose モードプログラムオペレーションのあらゆるステージの情報をプリントします。
バージョン情報を表示し、閉じます。
mysqldumpクライアントは元はIgor Romanenkoによって書かれたバックアッププログラムです。バックアップや他のSQLサーバ(MySQLサーバに限りません)への転送のためにデータベースやデータベースのコレクションのダンプに役立ちます。ダンプには一般に、テーブルの作成やそこでのデータ配置、の片方または両方のSQLステートメントが含まれています。また、mysqldumpはCSVや他の区切り文字のテキスト、あるいはXMLフォーマットでファイルを生成させるために利用することもできます。
もしあなたがサーバのバックアップをしていて、かつテーブルがすべてMyISAMテーブルの場合、代わりにmysqlhotcopyの使用をお勧めします。これは、バックアップやリストアのスピードが速くなるからです。項7.13. 「mysqlhotcopy ? データベースバックアッププログラム」
を参照してください。
mysqldumpを起動する主な方法は3つあります。
shell>mysqldump [shell>options]db_name[tables]mysqldump [shell>options] --databasesdb_name1[db_name2db_name3...]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は次のオプションをサポートします。
ヘルプ メッセージを表示し、閉じます。
DROP
DATABASEステートメントをCREATE
DATABASEステートメントの前に追加します。
DROP
TABLEステートメントをCREATE
TABLEステートメントの前に追加します。
LOCK TABLESとUNLOCK
TABLESステートメントで各テーブルダンプを囲みます。ダンプファイルを再ロードする際のインサートの速度が向上します。項6.2.16. 「INSERTステートメントの速度」
を参照してください。
すべてのデータベース内のすべてのテーブルをダンプします。これは--databasesオプションを使用してコマンドラインですべてのデータベース名を指定するのと同じです。
テーブルダンプに、NDB
Clusterテーブルに使用されるテーブルスペース作成に必要なSQLステートメントを追加します。でなければ、この情報はmysqldumpの出力には含まれていません。このオプションは、現在MySQLクラスタテーブルに対してのみ有効です。
このオプションはMySQL 5.1.6.で加されました。
キーワードであるカラム名の作成を許容します。これは各カラム名のプリフィクスにテーブル名を用いることで可能になります。
キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。
プログラムバージョン、サーババージョンやホストといった追加情報をダンプファイルに書き込みます。このオプションはデフォルトで有効となっています。追加情報を抑制するには、--skip-commentsを使用してください。
verbose生成を少なくします。このオプションはコメントを抑制し、--skip-add-drop-table、--no-set-names、--skip-disable-keys、そして--skip-add-locksオプションを有効化します。
古いMySQLサーバや他のデータベースシステムと互換性のある出力を生成します。nameの値はansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_table_options、あるいはno_field_optionsとなります。複数の値を使用する場合カンマで離してください。これらの値はサーバSQLモードの設定用の対応しているオプションと同じ意味を持っています。項4.2.6. 「SQL モード」
を参照してください。
このオプションは他のサーバとの互換性を保証するものではありません。現在提供されている、ダンプ出力の互換性を挙げるためのSQLモード値を有効化するだけです。例えば、--compatible=oracleはデータタイプをOracleタイプにマップしたり、Oracleコメント構文を使用したりしません。
カラム名を含んだ、完全なINSERTステートメントを使用します。
双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。
MySQL独特のオプションをCREATE
TABLEステートメントに含みます。
複数のデータベースをダンプします。通常、mysqldumpはコマンドライン上の最初のアーギュメント名とそれに続く名をテーブル名として認識します。このオプションを使用するうことで、名前のついたアーギュメントを全てデータベース名として認識します。CREATE
DATABASEやUSEステートメントは新しいデータベースの前の出力に含まれています。
--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. 「データおよびソート用キャラクタ セット」を参照してください。文字列が特定されていない場合、mysqldumpはutf8を使用します。
INSERTステートメントよりもINSERT
DELAYEDステートメントを書き出します。
マスタ複製サーバで、ダンプを実行後バイナリログを消去します。このオプションは自動的に--master-dataを有効化します。
各テーブルごとに、INSERTステートメントを/*!40000
ALTER TABLE とtbl_name DISABLE
KEYS */;/*!40000 ALTER TABLE
ステートメントで囲んでください。行が全て挿入された後にインデックスが作成されるため、ダンプファイルのロードが早くなります。このオプションはtbl_name ENABLE KEYS
*/;MyISAMテーブルに対してのみ効果的です。
ダンプされたデータベースからイベントをダンプします。このオプションはMySQL 5.1.8.で追加されました。
複数の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 構文」
を参照してください。
Deprecated.現在は--lock-all-tablesと名づけられています。
ダンプを始める前にMySQLサーバログファイルをフラッシュします。このオプションはRELOAD権限を要求します。このオプションを--all-databases
(あるいは-A)
オプションと併用した場合、ログはダンプされたデータベースごとにフラッシュされます。例外は、--lock-all-tablesまたは--master-dataを使用しているときです。この場合、ログは全てのテーブルがロックされた瞬間に一度だけフラッシュされます。ログのフラッシュとダンプを同時に行いたい場合、--flush-logsを--lock-all-tablesや--master-dataと併用してください。
mysqlデータベースのダンプ後、.FLUSH
PRIVILEGESステートメントを発行してください。このオプションはダンプにmysqlデータベースが含まれている場合と、正しいリストアのためにmysqlデータベース内に含まれているデータに依存するデータベースが含まれている場合に使用するべきです。このオプションはMySQL
5.1.12.で追加されました。
テーブルダンプの最中にSQLエラーが発生しても続行します。
このオプションの使用例を挙げると、mysqldumpに無効となったビューに遭遇しても続けて実行させることです。これは、定義が消去されたテーブルを参照するものだからです。--forceなしでは、mysqldumpはエラーメッセージを発し閉じます。--forceを使用した場合、mysqldumpエラーメッセージをプリントしますが、ダンプ出力のビュー定義を含むSQLコメントを書き出し、実行を続けます。
--host=,
host_name-h
host_name
与えられたホスト上でMySQLサーバからデータをダンプします。デフォルト設定では、localhostがホストになります。
16進変換表記法を使用しているバイナリカラムをダンプします(例えば、'abc'は0x616263となります)。影響を受けるデータタイプはBINARY、VARBINARY、BLOB、そしてBITになります。
--ignore-table=
db_name.tbl_name
データベースとテーブル名の両方を使用して特定されなければいけないテーブルをダンプしないでください。複数テーブルを無視するには、このオプションを複数回使用してください。
INSERTステートメントをIGNOREオプションで書いてください。
これらのオプションは-Tオプションと共に使用され、LOAD
DATA
INFILEに対応する節と同じ意味があります。項12.2.5. 「LOAD DATA INFILE 構文」
を参照してください。
データベース内のテーブルを全てロックします。これは全ダンプの期間、グローバルリードロックを取得することで達成されます。このオプションは自動的に--single-transactionと--lock-tablesをオフにします。
ダンプする前に全てのテーブルをロックします。テーブルはREAD
LOCALでロックされ、これによりMyISAMテーブルの場合同時インサートが許容されます。InnoDBといったトランザクションテーブルには、--single-transactionはテーブルをロックする必要が無いため、はるかにいいオプションです。
複数データベースをダンプする際は、--lock-tablesは各データベースのテーブルを個別にロックします。よって、このオプションはダンプファイル内のテーブルがデータベース間で矛盾していないことを保証するわけではありません。異なるデータベース内のテーブルは完全に異なるステートでダンプされることがあります。
出力にバイナリログファイル名とポジションを書きます。このオプションはRELOAD権限を要求し、バイナリログが有効化されていなければいけません。オプション値が1と等価の場合、ポジションとファイル名はダンプ出力に書き出され、CHANGE
MASTERステートメントのフォームを取ります。ダンプがマスタサーバから行われ、それを利用してスレーブサーバをセットアップする場合、CHANGE
MASTERステートメントはスレーブを、マスタのバイナリログ内の正しいポジションからスタートするようにします。オプション値が2と等価の場合、CHANGE
MASTERステートメントはSQLコメントとして書かれます。(値が省かれていた場合のデフォルトアクションになります。)
--master-dataオプションは自動的に--lock-tablesをオフにします。--single-transactionも指定されていなければ、--lock-all-tablesをオンにもします(この場合、global
read
lockがダンプの最初に短い間、取得されています)。--single-transactionの説明も参照してください。どの場合でも、ログに対するアクションは全てダンプと同時に発生します。
各ダンプされたテーブルごとにINSERTステートメントをSET
AUTOCOMMIT=0とCOMMIT
ステートメントで囲みます。
このオプションは--databasesや--all-databasesオプションが提供されていた場合出力に含まれるCREATE
DATABASEステートメントを抑制します。
各ダンプされたテーブルを再作成するCREATE
TABLEステートメントを書かないでください。
テーブル行情報を書かないでください(つまりテーブル内容をダンプしないでください)。これはテーブルのCREATE
TABLEステートメントのみをダンプしたい場合に非常に便利です。
このオプションはショートハンドです。--add-drop-table
--add-locks --create-options --disable-keys
--extended-insert --lock-tables --quick
--set-charsetを特定することと同じことです。速いダンプオプレーションを提供し、MySQLサーバにすばやく再ロードできるダンプファイルを生成します。
--optオプションはデフォルトで有効化されています。無効化するには--skip-optを使用してください。--optによって影響されるオプションの部分の一部を有効化・無効化する情報に関しては、このセクションの始めのディスカッションを参照してください。
各テーブルの行をプライマリキーか、存在する場合、最初のユニークインデックスでソートします。これは、InnoDBテーブルにロードするMyISAMテーブルをダンプしているときに便利ですが、ダンプに要する時間がかなり伸びます。
--password[=,
password]-p[
password]
サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password
あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。
コネクションに使用するTCP/IPポート番号です。
--protocol={TCP|SOCKET|PIPE|MEMORY}
使用するべき接続プロトコルです。
このオプションは大きなテーブルのダンプに便利です。これにより、mysqldumpは全結果セットを取得、メモリ内でバッファ後表示といった一連の作業を一気にこなさず、サーバから1行ずつ結果を取得します。
‘`’文字でデータベース、テーブル、そしてカラム名をクオートします。ANSI_QUOTESSQLモードが有効化されている場合、名前は‘"’キャラクタでクオートされます。このオプションはデフォルトで有効となっています。--skip-quote-namesで無効化することもできますが、このオプションは--compatibleのような--quote-namesを有効化するオプションの後に与えられるべきです。
INSERTステートメントよりもREPLACEステートメントを書き出します。MySQL
5.1.3.より提供されています。
提供されているファイルに出力を導きます。このオプションはWindows上で‘\n’ニューライン文字が‘\r\n’carriage
return/newlineシーケンスに変換されるのを阻止するために使用します。ダンプ生成中にエラーが発生しても、結果ファイルは作成され、内容は上書きされます。以前の内容は失われます。
記憶されたルーチンを(関数とプロシージャ)
ダンプされたデータベースからダンプします。.このオプションの使用はmysql.procテーブルのためのSELECT権限を要求します。--routinesを使用して生成された出力はルーチンの再作成のため、CREATE
PROCEDUREとCREATE
FUNCTIONステートメントを含んでいます。ただし、これらのステートメントはルーチン作成や改良タイムスタンプといった属性を含んでいません。つまりルーチンが再ロードされたとき、再ロードに要した時間と等価のタイムスタンプで作成されます。
ルーチンを元のタイムスタンプ属性で再作成しなければいけない場合、--routinesを使用しないでください。代わりに、mysqlデータベースの正しい権限を持っているMySQLアカウントを使用してmysql.procテーブルの内容を直接ダンプ、再ロードしてください。
このオプションはMySQL
5.1.2.で追加されました。これ以前では、記憶されたルーチンはダンプされませんでした。ルーチンDEFINER値はMySQL
5.1.8.までダンプされませんでした。つまり、5.1.8,以前でルーチンが再ロードされた場合、再ロードユーザにセットされたデファイナで作成されます。元のデファイナでルーチンを再作成しなければいけない場合、mysql.procテーブルの内容を、以前説明したとおりに、直接ダンプしロードしてください。
出力にSET NAMES
を追加してください。このオプションはデフォルトで有効となっています。default_character_setSET
NAMESステートメントを抑制するには、--skip-set-charsetを使用してください。
このオプションはサーバからデータをダンプする前にBEGIN
SQLステートメントを発行します。InnoDBといったトランザクションテーブルに対してのみ便利です。なぜなら、アプリケーションをブロックせずに、BEGINが発行された当時のデータベースの状態をダンプするからです。
このオプションを使用しているときは、一定の状態でダンプされるのはInnoDBテーブルのみだということを留意してください。例えば、このオプションを使用中にダンプされたMyISAMやMEMORYテーブルは状態が変化する可能性があります。
このオプションはMySQLクラスタテーブルではサポートされていません。NDBClusterストレージエンジンがREAD_COMMITTEDtransaction
isolation
levelのみをサポートするため、結果が一定である保証がありません。代わりに必ずNDBバックアップを使用し、リストアしてください。
--single-transactionオプションと--lock-tablesは互いに関連していません。これは、LOCK
TABLESが待機中のトランザクションを必然的にコミットさせるからです。
大きなテーブルをダンプするには、このオプションを--quickと併用してください。
--optオプションの詳細を参照してください。
localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。
--commentsオプションの詳細を参照してください。
--sslで始まるオプションは、SSLを介してサーバに接続し、SSL
キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」
を参照してください。
タブによって分けられたデータファイルを生成します。各ダンプされたテーブルごとに、mysqldumpはテーブルを作成するCREATE
TABLEステートメントを含むファイルと、そのデータを含むtbl_name.sqlファイルを作成します。オプション値はファイルを書き込むディレクトリです。
tbl_name.txt
デフォルトで、.txtデータファイルはカラム値と、各行の最後で新しいラインの間にタブキャラクタを使用してフォーマットされます。このフォーマットは明示的に--fields-とxxx--lines-terminated-byオプションを使用することで特定することができます。
注:このオプションはmysqldumpがmysqldサーバと同一のマシンで作動している場合のみ使用されるべきです。FILE権限を保持しており、サーバはユーザの指定してアファイルをディレクトリ内に書き込む権限を与えられていなければいけません。
--databasesあるいは-Bオプションをオーバーライドしてください。mysqldumpはオプションに続く名前アーギュメントをテーブル名として認識しています。
ダンプされたテーブルごとにトリガをダンプします。このオプションはデフォルトで有効化されています。--skip-triggersを使用して無効化してください。
ダンプファイルに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 モードプログラムの動作についてさらに情報をプリントアウトする。
バージョン情報を表示し、閉じます。
--where=',
where_condition'-w
'
where_condition'
あるWHERE状態に選択された行のみダンプします。ユーザのコマンドインタープリタにとって特別なキャラクタ、もしくはスペースを含んでいる場合、状態の周りをクオートで囲まなければいけません。
例:
--where="user='jimf'" -w"userid>1" -w"userid<1"
ダンプ出力と、well-formed XMLも書き出します。
NULL,
'NULL', and Empty
Values:column_nameと名づけられたカラム、NULL値、空の文字列、文字値'NULL'はこのオプションによって生成された出力では以下の様に差別化します。
| 値: | XML Representation: |
NULL (unknown value) | <field
name=" |
'' (empty string) | <field
name=" |
'NULL' (string value) | <field
name=" |
MySQL
5.1.12に始まり、--xmlオプションを使用しているときのmysqlクライアントもこれらのルールを守ります。(詳しくは項7.7.1. 「mysql オプション」をご確認ください。)
--
構文を使用することで以下の構文をセットすることができます。
var_name=value
max_allowed_packet
クライアント・サーバ通信のバッファの最大サイズ最大は1GBです。
net_buffer_length
クライアント・サーバ通信のバッファの初期サイズ複数・行・挿入ステートメントを作成する際(--extended-insertや--optオプションを使用するとき)、mysqldump
はnet_buffer_length長さの新しい行を作成します。この変数を増やした場合、MySQLサーバ内のnet_buffer_length変数も最低同じ大きさでなければいけません。
--set-variable=
or var_name=value-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. 「ビューの規制」 を参照してください。
mysqlhotcopyは元々Tim
Bunceによって書かれ、提供されたPerlスクリプトです。データベースバックアップを速やかに作成するため、LOCK
TABLES、FLUSH
TABLES、cpあるいはscpを使用します。データベースやシングルテーブルのバックアップを作成する最速の方法ですが、データベースディレクトリが存在する同じマシン上でしか作動しません。mysqlhotcopyはMyISAMとARCHIVEテーブルのバックアップのためのみ作動します。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は次のオプションをサポートします。
ヘルプ メッセージを表示し、閉じます。
ターゲットディレクトリに名前をつけなおさず、(存在する場合)ただファイルを追加します。
ターゲットが存在する場合アボートせず、_oldサフィクスを追加することでリネームします。
特定のデータベースdb_nameとテーブルtbl_nameにチェックポイントエントリを挿入します。
mysqldがオペレートするchrootジェイルのベースディレクトリ。path値はmysqldオプションに与えられる--chrootオプションとマッチしなければいけません。
デバッグ出力を有効化します。
実行せずにアクションを報告します。
全てのテーブルがロックされたあとログをフラッシュします。
--host=,
host_name-h
host_name
ローカルサーバへのTCP/IP接続を作成するためのローカルホストのホスト名です。デフォルトで、接続はUnixソケットファイルを使用してlocalhostに作成されます。
終了後に以前の(リネームされた)ターゲットを消去しません。
ファイルの複製メソッド(cpあるいはscp)。
バックアップにフルインデックスファイルを含みません。これによりバックアップを小さく、早くすることができます。再ロードされたテーブルのインデックスは後ほどmyisamchk -rqを使用して再構築することができます。
--password=,
password-p
password
サーバに接続する際使用するパスワードです。他のMySQLプログラムと違って、このオプションにとってパスワード値は選択できません。コマンドライン上でパスワード提供を回避するためにオプションファイルを使用することができます。
コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。
ローカルサーバ接続時に使用するTCP/IPポート番号です。
エラー発生時以外音を発しません。
--record_log_pos=
db_name.tbl_name
特定のデータベースdb_nameとテーブルtbl_nameにマスタとスレーブステータスを報告します。
与えられた通常の表現とマッチする名前のあるデータベースを全て複製します。
テーブルを全てロックした後バイナリログをリセットします。
テーブルを全てロックした後master.infoファイルをリセットします。
接続に使用するUnixソケットファイルです。
複製されたデータベースのサフィックスの名前です。
テンポラリディレクトリ。そのデフォルトは/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
mysqlimportクライアントはLOAD
DATA
INFILESQLステートメントにコマンドラインインターフェースを提供します。
mysqlimportに対する殆どのオプションはLOAD
DATA
INFILE構文の節に直接対応しています。項12.2.5. 「LOAD DATA INFILE 構文」
を参照してください。
mysqlimportは以下のように起動してください。
shell> mysqlimport [options] db_name textfile1 [textfile2 ...]
コマンドラインで名づけられた各テキストファイルごとに、mysqlimportはファイルネームの拡張を取り除き、結果をファイルの内容をインポートするテーブルの名前を決定します。例えば、patient.txt、patient.text、そしてpatientと名づけられたファイルは全てpatientと名づけられたファイルにインポートされます。
mysqlimportは次のオプションをサポートします。
ヘルプ メッセージを表示し、閉じます。
キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。
--columns=,
column_list-c
column_list
このオプションはカンマによって分けられたカラム名のリストを値とします。カラム名の順序は、データファイルカラムとテーブルカラムをどのようにマッチするか示しています。
双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。
--debug[=,
debug_options]-#
[
debug_options]
デバッグのログを書き込みます。debug_options
文字列は大抵
'd:t:o,になります。
file_name'
--default-character-set=
charset_name
charset_nameをデフォルトキャラクタセットとして使用します。項4.10.1. 「データおよびソート用キャラクタ セット」
を参照してください。
テキストファイルをインポートする前にテーブルを空にします。
--fields-terminated-by=...,
--fields-enclosed-by=...,
--fields-optionally-enclosed-by=...,
--fields-escaped-by=...
これらのオプションはLOAD DATA
INFILEに対応する節と同じ意味を持っています。項12.2.5. 「LOAD DATA INFILE 構文」
を参照してください。
エラーを無視します。例えば、テキストファイルのテーブルが存在しない場合、残ったファイルの処理を続行します。--forceなしでは、テーブルが存在しない場合mysqlimportは抜けます。
--host=,
host_name-h
host_name
与えられたホスト上でMySQLサーバからデータをインポートします。デフォルト設定では、localhostがホストになります。
--replaceオプションの詳細を参照してください。
データファイルの最初のNラインを無視します。
これらのオプションはLOAD DATA
INFILEに対応する節と同じ意味を持っています。例えば、carriage
return/linefeed
pairsでラインを消去されたWindowsファイルをインポートする場合、--lines-terminated-by="\r\n"を使用してください。(コマンドインタープリタのエスケプコンベンションによってはバックスラッシュを二つ加えなければいけない場合があります。)項12.2.5. 「LOAD DATA INFILE 構文」
を参照してください。
クライアントホストからインプットファイルをローカルで読み込む。
テキストファイルを処理する前に、全てのテーブルをロックします。これにより、全てのテーブルがサーバ上でシンクロしていることを保証します。
テーブルロード時にLOW_PRIORITYを使用してください。
--password[=,
password]-p[
password]
サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password
あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。
コネクションに使用するTCP/IPポート番号です。
--protocol={TCP|SOCKET|PIPE|MEMORY}
使用するべき接続プロトコルです。
--replaceと--ignoreオプションは、ユニークキー上に存在する行を複製するインプット行のハンドリングをコントロールします。--replaceを特定した場合、同じユニークキー値を持つ現存の行は新しい行に取ってかわられます。--ignoreを特定した場合、ユニークキー値上に存在する行を複製するインプット行はスキップされます。どちらのオプションも特定しなかった場合、複製キー値が発見されたときエラーが発生し、残りのテキストファイルは無視されます。
サイレントモード。エラーが発生したときのみアウトプットを生成します。
localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。
--sslで始まるオプションは、SSLを介してサーバに接続し、SSL
キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」
を参照してください。
--user=,
user_name-u
user_name
サーバに接続する際使用するMySQLユーザ名です。
Verbose モードプログラムの動作についてさらに情報をプリントアウトする。
バージョン情報を表示し、閉じます。
mysqlimportの使用方法を表すサンプルセッションを以下に記します。
shell>mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' testshell>eda 100 Max Sydow 101 Count Dracula . w imptest.txt 32 q shell>od -c imptest.txt0000000 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.txttest.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0 shell>mysql -e 'SELECT * FROM imptest' test+------+---------------+ | id | n | +------+---------------+ | 100 | Max Sydow | | 101 | Count Dracula | +------+---------------+
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は次のオプションをサポートします。
ヘルプ メッセージを表示し、閉じます。
キャラクタ セットがインストールされるディレクトリです。項4.10.1. 「データおよびソート用キャラクタ セット」 を参照してください。
双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。
テーブルごとの行の数を表示します。これは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サーバに接続します。
テーブルインデックスを表示します。
--password[=,
password]-p[
password]
サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。コマンドライン上で--password
あるいは-pに続くオプションからpassword値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。
コネクションに使用するTCP/IPポート番号です。
--protocol={TCP|SOCKET|PIPE|MEMORY}
使用するべき接続プロトコルです。
テーブルタイプを示すカラムを表示します、例えばSHOW
FULL TABLES。このタイプはBASE
TABLEもしくはVIEWになります。
localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。
--sslで始まるオプションは、SSLを介してサーバに接続し、SSL
キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」
を参照してください。
各テーブルの追加情報を表示します。
--user=,
user_name-u
user_name
サーバに接続する際使用するMySQLユーザ名です。
Verbose モードプログラムの動作についてさらに情報をプリントアウトする。このオプションは情報量を増加させるために複数回使用することができます。
バージョン情報を表示し、閉じます。
mysqlslapはMySQLサーバのクライアント負荷をエミュレートし、各ステージのタイミングを報告する診断プログラムです。サーバにたいして複数のクライアントがアクセスしているかのように作動します。mysqlslapはMySQL 5.1.4.から提供されています。
mysqlslapは以下のように起動してください。
shell> mysqlslap [options]
--createや--queryといったオプションはSQLステートメントを含む文字列やステートメントを含むファイルの特定を許容します。ファイルを特定した場合、デフォルトで各行ごとにステートメントを含んでいなければいけません。(つまり、暗示的なステートメントデリミタはニューラインキャラクタになります。)異なるデリミタを特定するのに--delimiterを使用してください。これにより、複数行にわたってステートメントの特定、もしくは1つのライン上で複数のステートメントを置くことができます。ファイルにコメントを含むことはできません。mysqlslapはそれらを理解しません。
mysqlslapは次のオプションをサポートします。
ヘルプ メッセージを表示し、閉じます。
ファイルやコマンドオプションを介して提供されていない場合、SQLステートメントを自動的に生成します。
双方が圧縮をサポートしている場合、クライアント・サーバ間で行きかう情報を全て圧縮します。
SELECTステートメントを発行している際、シミュレートするクライアントの数。
テーブル作成の際使用するファイルか文字列。
テストを実行するスキーマ。このオプションはMySQL 5.1.5.で追加されました。
カンマによって分けられた値のフォーマットで出力を生成します。出力は名づけられたファイルか、ファイルが提供されていない場合標準出力に向かいます。このオプションはMySQL 5.1.5.で追加されました。
--debug[=,
debug_options]-#
[
debug_options]
デバッグのログを書き込みます。debug_options
文字列は大抵
'd:t:o,になります。
file_name'
ファイルかコマンドオプションを介して提供されたSQLステートメントで使用するデリミタです。
--engine=,
engine_name-e
engine_name
テーブル作成の際使用するストレージエンジン。
--host=,
host_name-h
host_name
与えられたホスト上でMySQLサーバに接続します。
実行するテストの回数。
ロックの保存に使用するディレクトリです。このオプションはMySQL 5.1.5.で追加されました。
各クライアントをこのクエリの数に限定します。このオプションはMySQL 5.1.5.で追加されました。
データベースに接続しないでください。mysqlslapは実行されるべきであったことだけプリントします。このオプションはMySQL 5.1.5.で追加されました。
--password[=,
password]-p[
password]
サーバに接続する際使用するパスワードです。ショートオプションフォーム(-p)を使用した場合、オプションとパスワードの間にスペースを置くことはできません。password値を
--passwordあるいは-pオプションをコマンドライン上で省いた場合、ここで求められます。
コマンドライン上でのパスワードの特定は安全ではありません。項4.8.6. 「パスワードのセキュリティ」 を参照してください。
コネクションに使用するTCP/IPポート番号です。
--protocol={TCP|SOCKET|PIPE|MEMORY}
使用するべき接続プロトコルです。
mysqlslapの実行からスキーマを保存します。このオプションはMySQL 5.1.5.で追加されました。
データ回収のため使用するSELECTステートメントを含むファイルか文字列。
サイレントモード。出力はありません。
SELECTを実行しないでください。
他のmysqlslapクライアントに対してマスタロックをフォローしてください。1つのマスタサーバのまわりでシンクロを試みている場合このオプションを
--lock-directoryとNFS。このオプションはMySQL
5.1.5.で追加されました。
localhostの接続用に使用する、ユニックスではソケットファイル、Windowsでは使用する名づけられたパイプ。
--sslで始まるオプションは、SSLを介してサーバに接続し、SSL
キーや証明の場所を明示するか否かを指定します。項4.8.7.3. 「SSL コマンド オプション」
を参照してください。
Unixでは、デフォルトではfork()を使用します。このオプションを使用することで、代わりにpthreadコールが使用されます。Windowsでは、デフォルトはpthreadコールを使用し、オプションは効果がありません。このオプションはMySQL
5.1.6.で加されました。
--user=,
user_name-u
user_name
サーバに接続する際使用するMySQLユーザ名です。
Verbose モードプログラムの動作についてさらに情報をプリントアウトする。
バージョン情報を表示し、閉じます。
mysql_zapはパターンとマッチする処理を消去します。psコマンドとUnixシグナルを使用しますので、UnixやUnixと似たシステムで作動します。
mysql_zapは以下のように起動してください。
shell> mysql_zap [-signal] [-?Ift] pattern
処理はpsコマンドにパターンが含まれている場合に、出力ラインとマッチします。デフォルトで、mysql_zap各処理の確認を要求します。.処理を消去するにはy、閉じるにはqmysql_zapとしてください。たのレスポンスに関しては、mysql_zapは処理の消去を試みません。
-オプションが提供されている場合、各処理に送信するシグナルか番号の名前を特定します。でなければ、mysql_zapはまずsignalTERM
(シグナル15)、そしてKILL
(シグナル9)を使用します。
mysql_zapは以下のオプションを理解します。
--help, -?,
-I
ヘルプ メッセージを表示し、閉じます。
-f
フォースモード。mysql_zapは確認なしで各処理の消去を試みます。
-t
テストモード各処理の情報を表示しますが、消去はしません。
殆どのシステムエラーでは、内部テキストメッセージに加えて、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は次のオプションをサポートします。
replaceユーティリティプログラムはファイル上、もしくは標準インプットの文字列を変更します。
replaceは以下の様に起動してください。
shell>replaceshell>fromto[fromto] ... --file[file] ...replacefromto[fromto] ... <file
fromは探す文字列を表し、toはその代わりを表しています。文字列は1つ以上ありえます。
--オプションを使用して文字列置き換えリストが終わる場所と、ファイル名が始まる場所を特定してください。この場合、コマンドライン上で名づけられたファイルはその場で改良されるので、変換する前にオリジナルの複製を作成をしたほうがいいかもしれません。
replaceは実際にどのインプットファイルを改良したかを示すメッセージをプリントします。
--オプションが与えられていない場合、replaceは標準インプットを読み、標準出力に書き出します。
replaceはfinite state machine
を使用して長い文字列から先にマッチします。文字列の交換に使用できます。例えば、以下のコマンドはaとbをファイルfile1とfile2で交換します。
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
バージョン情報を表示し、閉じます。