目次
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 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
オプションを使用してください。
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>source
mysql>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_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
ステートメントには以下の効果があります。
UPDATE
やDELETE
ステートメントは、WHERE
節内でキー制限を特定するか、LIMIT
節を提供するか(あるいは両方)しないかぎり、実行は許容されません。例:
UPDATEtbl_name
SETnot_key_column
=val
WHEREkey_column
=val
; UPDATEtbl_name
SETnot_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
もし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.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
オプションを使用してください。
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 INFILE MySQL
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_name2
db_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_name2
db_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_QUOTES
SQLモードが有効化されている場合、名前は‘"
’キャラクタでクオートされます。このオプションはデフォルトで有効となっています。--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_set
SET
NAMES
ステートメントを抑制するには、--skip-set-charset
を使用してください。
このオプションはサーバからデータをダンプする前にBEGIN
SQLステートメントを発行します。InnoDB
といったトランザクションテーブルに対してのみ便利です。なぜなら、アプリケーションをブロックせずに、BEGIN
が発行された当時のデータベースの状態をダンプするからです。
このオプションを使用しているときは、一定の状態でダンプされるのはInnoDB
テーブルのみだということを留意してください。例えば、このオプションを使用中にダンプされたMyISAM
やMEMORY
テーブルは状態が変化する可能性があります。
このオプションはMySQLクラスタテーブルではサポートされていません。NDBCluster
ストレージエンジンがREAD_COMMITTED
transaction
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
INFILE
SQLステートメントにコマンドラインインターフェースを提供します。
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))' 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 | +------+---------------+
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
、閉じるにはq
mysql_zapとしてください。たのレスポンスに関しては、mysql_zapは処理の消去を試みません。
-
オプションが提供されている場合、各処理に送信するシグナルか番号の名前を特定します。でなければ、mysql_zapはまずsignal
TERM
(シグナル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>replace
shell>from
to
[from
to
] ... --file
[file
] ...replace
from
to
[from
to
] ... <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
バージョン情報を表示し、閉じます。