mysqldump クライアントは元は Igor Romanenko によって書かれたバックアッププログラムです。バックアップやほかの SQL サーバー (MySQL サーバーにかぎりません) への転送のためにデータベースやデータベースのコレクションのダンプに役立ちます。ダンプには一般に、テーブルの作成やそこでのデータ配置、の片方または両方の SQL ステートメントが含まれています。また、mysqldump は CSV やほかの区切り文字のテキスト、あるいは XML フォーマットでファイルを生成させるために利用することもできます。
もしあなたがサーバーのバックアップをしていて、かつテーブルがすべて
MyISAM
テーブルの場合、代わりに
mysqlhotcopy
の使用をお勧めします。これは、バックアップや復元のスピードが速くなるからです。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
は、INFORMATION_SCHEMA
データベースをダンプしません。コマンドラインでそのデータベース名を明示的に指定した場合、mysqldump
は暗黙のうちにそれを無視します。
使用中のバージョンの mysqldump がサポートするオプションのリストを取得するには、mysqldump --help を実行してください。
mysqldump
の中にはほかオプションをグループ化した略記法となっているものがあります。--opt
や--compact
はこれに分類されるものです。たとえば、--opt
を使用することは、--add-drop-table
--add-locks
--create-options
--disable-keys
--extended-insert
--lock-tables
--quick
--set-charset
を指定するのと同じです。--opt
はデフォルトで有効になっているため、--opt
が表すオプションもすべてデフォルトで有効になります。
グループオプションの効果を反転させるには、その
--skip-
形式
(xxx
--skip-opt
や
--skip-compact
など)
を使用します。グループオプションに続いて特定の機能を有効化・無効化するオプションをつけることで、グループオプションの効果の一部だけを選択することが可能です。以下に例を示します。
いくつかの機能を除いて
--opt
の効果を選択したい場合、除きたい各機能に対して--skip
オプションを選択してください。たとえば、拡張挿入を無効にし、メモリーバッファリングを有効にするには、--opt
--skip-extended-insert
--skip-quick
を使用します。(MySQL 5.1
以降のバージョンでは、--opt
がデフォルトで有効になっているため、--skip-extended-insert
--skip-quick
で十分です。)
インデックスの無効化とテーブルのロックを除くすべての機能に対して
--opt
を反転するには、--skip-opt
--disable-keys
--lock-tables
を使用します。
グループオプションの一部を選択して効果を有効化・無効化する場合、オプションは前から後ろへの順で処理されるため、記述する順番が重要になります。たとえば、--disable-keys
--lock-tables
--skip-opt
では意図している効果を得られません。--skip-opt
だけの場合と同じになります。
mysqldump
はテーブル内容を一行ずつ取得してダンプするか、テーブルからすべての内容を取得しダンプする前にメモリーでバッファーすることができます。大きなテーブルをダンプしている場合、メモリーへのバッファーが問題になる場合があります。一行ずつテーブルをダンプする場合、--quick
オプションを使用してください
(または--opt
を指定すれば--quick
が含まれています)。MySQL
5.1
では、--opt
オプションがデフォルトで有効になっている
(したがって --quick
も有効になっている)
ため、メモリーバッファリングを有効にするには、--skip-quick
を使用します。
最新の mysqldump
を使用してダンプしたものを非常に古い MySQL
サーバーに再ロードしたい場合、--opt
または--extended-insert
オプションの使用は避けてください。代わりに--skip-opt
を使用してください。
MySQL 5.1.21 の mysqldump を使用して、バージョン 5.1.20 以前の MySQL サーバーからダンプを作成することはできません。この問題は MySQL 5.1.22 で修正されています。(Bug#30123)
mysqldump は、次のリストに示すオプションをサポートします。また、オプションファイルを読み取り、Command-Line Options that Affect Option-File Handlingに説明されている、オプションファイルを処理するためのオプションもサポートします。
ヘルプメッセージを表示し、閉じます。
DROP DATABASE
ステートメントを
CREATE
DATABASE
ステートメントの前に追加します。
DROP TABLE
ステートメントを
CREATE TABLE
ステートメントの前に追加します。
LOCK TABLES
と
UNLOCK
TABLES
ステートメントで各テーブルダンプを囲みます。ダンプファイルを再ロードする際のインサートの速度が向上します。項4.2.21. 「INSERT
ステートメントの速度」
を参照してください。
すべてのデータベース内のすべてのテーブルをダンプします。これは--databases
オプションを使用してコマンドラインですべてのデータベース名を指定するのと同じです。
テーブルダンプに、NDBCLUSTER
テーブルで使用されるテーブル領域の作成に必要なすべての
SQL
ステートメントを追加します。でなければ、この情報は
mysqldump
の出力には含まれていません。このオプションは、現在
MySQL Cluster テーブルに対してのみ有効です。
このオプションは MySQL 5.1.6 で追加されました。
キーワードであるカラム名の作成を許容します。これは各カラム名の接頭辞にテーブル名を用いることで可能になります。
キャラクタセットがインストールされるディレクトリです。Character Set Configuration を参照してください。
プログラムバージョン、サーバーバージョンやホストといった追加情報をダンプファイルに書き込みます。このオプションはデフォルトで有効となっています。追加情報を抑制するには、--skip-comments
を使用してください。
詳細出力を少なくします。このオプションは、--skip-add-drop-table
、--skip-add-locks
、--skip-comments
、--skip-disable-keys
、および
--skip-set-charset
オプションを有効にします。
5.1.21
よりも前のリリースでは、データベースダンプにビューが含まれている場合、このオプションは有効な
SQL
を作成しませんでした。ビューの再作成には一時テーブルの作成と削除が必要ですが、このオプションはそのような一時テーブルの削除を抑止していました。回避方法として、--compact
を --add-drop-table
オプションとともに使用してから、手動でダンプファイルを調整します。
古い MySQL
サーバーやほかのデータベースシステムと互換性のある出力を生成します。name
の値は
ansi
、mysql323
、mysql40
、postgresql
、oracle
、mssql
、db2
、maxdb
、no_key_options
、no_table_options
、あるいは
no_field_options
となります。複数の値を使用する場合カンマで離してください。これらの値はサーバー
SQL
モードの設定用の対応しているオプションと同じ意味を持っています。Server SQL Modes
を参照してください。
このオプションはほかのサーバーとの互換性を保証するものではありません。現在提供されている、ダンプ出力の互換性を挙げるための
SQL
モード値を有効にするだけです。たとえば、--compatible=oracle
はデータ型を
Oracle 型にマップしたり、Oracle
コメント構文を使用したりしません。
このオプションには、バージョン 4.1.0 以降のサーバーが必要です。それよりも古いサーバーでは、何も行われません。
カラム名を含んだ、完全な
INSERT
ステートメントを使用します。
双方が圧縮をサポートしている場合、クライアント・サーバー間で行きかう情報をすべて圧縮します。
MySQL 独特のオプションを
CREATE TABLE
ステートメントに含みます。
複数のデータベースをダンプします。通常、mysqldump
はコマンドライン上の最初の引数名とそれに続く名をテーブル名として認識します。このオプションを使用するうことで、名前のついた引数をすべてデータベース名として認識します。CREATE
DATABASE
や
USE
ステートメントは新しいデータベースの前の出力に含まれています。
--debug[=
,
debug_options
]-#
[
debug_options
]
デバッグのログを書き込みます。debug_options
文字列は通常
'd:t:o,
になります。デフォルト値は
file_name
''d:t:o,/tmp/mysqldump.trace'
です。
プログラムが閉じるときに、デバッグ情報をプリントします。このオプションは MySQL 5.1.21 で追加されました。
プログラムの終了時にデバッグ情報と、メモリーおよび CPU 使用率の統計を表示します。このオプションは MySQL 5.1.14 で追加されました。
--default-character-set=
charset_name
charset_name
をデフォルトキャラクタセットとして使用します。詳しくはCharacter Set Configurationを参照してください。キャラクタセットが指定されていない場合、mysqldump
では utf8
を使用し、以前のバージョンでは
latin1
を使用します。
MySQL 5.1.38
より前のバージョンでは、このオプションは
--tab
オプションを使用して生成された出力データファイルには効果がありません。そのオプションの説明を参照してください。
INSERT
ステートメントよりも
INSERT
DELAYED
ステートメントを書き出します。
マスタレプリケーションサーバーで、ダンプを実行後バイナリログを消去します。このオプションは自動的に--master-data
を有効にします。
テーブルごとに
INSERT
ステートメントを /*!40000
ALTER TABLE
ステートメントと
tbl_name
DISABLE KEYS
*/;/*!40000 ALTER TABLE
ステートメントで囲みます。行がすべて挿入されたあとにインデックスが作成されるため、ダンプファイルのロードが早くなります。このオプションは、tbl_name
ENABLE KEYS
*/;MyISAM
テーブルの一意でないインデックスにのみ効果があります。
--comments
オプションが指定されている場合、mysqldump
はダンプの最後に -- Dump
completed on
コメントを生成します。ただし、この日付によって、異なる時間に取得された同一データのダンプファイルが違っているように見えます。DATE
--dump-date
と
--skip-dump-date
は、日付をコメントに追加するかどうかを制御します。デフォルトは
--dump-date
(日付をコメントに含める)
です。--skip-dump-date
は日付の表示を抑止します。このオプションは
MySQL 5.1.23 で追加されました。
ダンプされたデータベースからイベントをダンプします。このオプションは MySQL 5.1.8.で追加されました。
複数の
VALUES
リストを含む、複数行
INSERT
構文を使用してください。これにより、ダンプファイルサイズを小さくし、ファイルが再ロードされる際の挿入スピードがあがります。
--fields-terminated-by=...
,
--fields-enclosed-by=...
,
--fields-optionally-enclosed-by=...
,
--fields-escaped-by=...
これらのオプションは-T
オプションと共に使用され、LOAD
DATA INFILE
に対応する節と同じ意味があります。項8.2.6. 「LOAD DATA
INFILE
構文」
を参照してください。
非推奨。現在では
--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 エラーが発生しても続行します。
このオプションの使い方の 1
つとして、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
に対応する節と同じ意味があります。項8.2.6. 「LOAD DATA
INFILE
構文」
を参照してください。
データベース内のテーブルをすべてロックします。これは全ダンプの期間、グローバル読み取りロックを取得することで達成されます。このオプションは自動的に--single-transaction
と--lock-tables
をオフにします。
ダンプする前にすべてのテーブルをロックします。テーブルは
READ LOCAL
でロックされ、これにより
MyISAM
テーブルの場合同時インサートが許容されます。InnoDB
といったトランザクションテーブルには、--single-transaction
はテーブルをロックする必要がないため、はるかにいいオプションです。
複数データベースをダンプする際は、--lock-tables
は各データベースのテーブルを個別にロックします。よって、このオプションはダンプファイル内のテーブルがデータベース間で矛盾していないことを保証するわけではありません。異なるデータベース内のテーブルは完全に異なるステートでダンプされることがあります。
警告やエラーを名前付きファイルに追加します。このオプションは MySQL 5.1.18 で追加されました。
マスターレプリケーションサーバーをダンプして、別のサーバーをマスターのスレーブとして設定するために使用できるダンプファイルを生成する場合にこのオプションを使用します。これにより、ダンプされたサーバーのバイナリログ座標
(ファイル名とファイル位置) を示す
CHANGE MASTER
TO
ステートメントがダンプ出力に追加されます。これらは、スレーブがレプリケーションを開始するマスターサーバーの座標です。
オプションの値が 2
の場合、CHANGE
MASTER TO
ステートメントは SQL
コメントとして書き込まれるため、情報提供の意味しかなく、ダンプファイルが再ロードされるときに効果がありません。オプションの値が
1
の場合、このステートメントはダンプファイルが再ロードされるときに有効になります。オプションの値を指定しない場合、デフォルト値は
1 となります。
このオプションは
RELOAD
権限を要求し、バイナリログが有効にされていなければいけません。
--master-data
オプションは自動的に--lock-tables
をオフにします。また、--single-transaction
が指定されていなければ、--lock-all-tables
を有効にします。その場合、ダンプの最初のほんのわずかな時間でグローバル読み取りロックが取得されます
(--single-transaction
の説明を参照)。どの場合でも、ログに対するアクションはすべてダンプと同時に発生します。
マスターの既存のスレーブをダンプすることで、スレーブを設定することもできます。このためには、既存のスレーブで次の手順を実行します。
スレーブの SQL スレッドを停止し、その現在の状態を取得します。
mysql>STOP SLAVE SQL_THREAD;
mysql>SHOW SLAVE STATUS;
SHOW SLAVE STATUS ステートメントの出力から、新しいスレーブがレプリケーションを開始する、マスターサーバーのバイナリログ座標を取得します。これらの座標は、Relay_Master_Log_File と Exec_Master_Log_Pos の値です。それらの値は file_name および file_pos として表記します。
スレーブサーバーをダンプします。
shell> mysqldump --master-data=2 --all-databases > dumpfile
スレーブを再起動します。
mysql> START SLAVE;
新しいスレーブで、ダンプファイルを再ロードします。
shell> mysql < dumpfile
新しいスレーブで、レプリケーション座標をさきほど取得したマスターサーバーのそれに設定します。
mysql>CHANGE MASTER TO
->MASTER_LOG_FILE = 'file_name', MASTER_LOG_POS = file_pos;
CHANGE MASTER
TO
ステートメントには、スレーブを正しいマスターサーバーホストに接続させるための
MASTER_HOST
など、ほかのパラメータが必要になる場合もあります。必要に応じてそのようなパラメータを追加します。
ダンプされたテーブルごとに
INSERT
ステートメントを SET
autocommit = 0
ステートメントと
COMMIT
ステートメントで囲みます。
このオプションは--databases
や--all-databases
オプションが提供されていた場合、出力に含まれる
CREATE
DATABASE
ステートメントを抑制します。
各ダンプされたテーブルを再作成する
CREATE TABLE
ステートメントを書かないでください。
テーブル行情報を書かないでください
(つまりテーブル内容をダンプしないでください)。これはテーブルの
CREATE TABLE
ステートメントのみをダンプしたい場合に非常に便利です。
このオプションは推奨されません。代わりに
--skip-set-charset
を使用してください。instead.
このオプションは短縮形であり、--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
値を取り除いた場合、パスワード値を求められます。
コマンドライン上でのパスワードの特定は安全ではありません。End-User Guidelines for Password Security を参照してください。
Windows では、名前付きパイプを介してサーバーに接続します。このオプションは、ローカルサーバーへの接続で、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。
接続に使用する TCP/IP ポート番号です。
--protocol={TCP|SOCKET|PIPE|MEMORY}
サーバーへの接続に使用する接続プロトコルを指定します。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。使用できる値の詳細は、Connecting to the MySQL Serverを参照してください。
このオプションは大きなテーブルのダンプに便利です。これにより、mysqldump は全結果セットを取得、メモリー内でバッファー後表示といった一連の作業を一気にこなさず、サーバーから 1 行ずつ結果を取得します。
データベース名、テーブル名、およびカラム名を
「`
」
文字で囲みます。ANSI_QUOTES
SQL モードが有効になっている場合、名前は
「"
」
文字で囲まれます。このオプションはデフォルトで有効となっています。--skip-quote-names
で無効化することもできますが、このオプションは--compatible
のような--quote-names
を有効にするオプションの後に与えられるべきです。
INSERT
ステートメントよりも
REPLACE
ステートメントを書き出します。MySQL
5.1.3.より提供されています。
--result-file=
,
file_name
-r
file_name
提供されているファイルに出力を導きます。このオプションは、Windows
上で改行文字
「\n
」
が復帰改行/改行シーケンス
「\r\n
」
に変換されないようにするために使用します。ダンプ生成中にエラーが発生しても、結果ファイルは作成され、内容は上書きされます。以前の内容は失われます。
ストアドルーチン
(プロシージャーやファンクション)
をダンプされたデータベースからダンプします。このオプションの使用は
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
テーブルは状態が変化する可能性があります。
--single-transaction
ダンプの処理中に、有効なダンプファイル
(正しいテーブル内容とバイナリログ位置)
を保証するには、ほかの接続で
ALTER
TABLE
、DROP
TABLE
、RENAME
TABLE
、TRUNCATE
TABLE
の各ステートメントを使用しないようにします。一貫性のある読み取りはそれらのステートメントと切り離すことはできないので、ダンプされるテーブルでそれらのステートメントを使用すると、テーブル内容を取り出すために
mysqldump
で実行される
SELECT
が間違った内容を取得したり、失敗したりする可能性があります。
このオプションは MySQL Cluster
テーブルではサポートされていません。つまり、NDBCLUSTER
ストレージエンジンは
READ_COMMITTED
トランザクション遮断レベルしかサポートしていないため、結果が一貫している保証がありません。代わりに、必ず
NDB
のバックアップと復元を使用するようにしてください。
--single-transaction
オプションと--lock-tables
は互いに関連していません。これは、LOCK
TABLES
が待機中のトランザクションを必然的にコミットさせるからです。
大きなテーブルをダンプするには、このオプションを--quick
と併用してください。
--comments
オプションの詳細を参照してください。
--opt
オプションの詳細を参照してください。
localhost
の接続用に使用する、UNIX
ではソケットファイル、Windows
では使用する名づけられたパイプ。
--ssl
で始まるオプションは、SSL
を介してサーバーに接続し、SSL
キーや証明の場所を明示するか否かを指定します。SSL Command Options
を参照してください。
タブによって分けられたデータファイルを生成します。各ダンプされたテーブルごとに、mysqldump
はテーブルを作成する
CREATE TABLE
ステートメントを含む
ファイルと、そのデータを含むtbl_name
.sql
ファイルを作成します。オプション値はファイルを書き込むディレクトリです。
tbl_name
.txt
デフォルトで、.txt
データファイルはカラム値と、各行の最後で新しいラインの間にタブキャラクタを使用してフォーマットされます。このフォーマットは明示的に--fields-
とxxx
--lines-terminated-by
オプションを使用することで特定することができます。
MySQL 5.1.38
以降のバージョンでは、カラム値は
--default-character-set
オプションで指定されたキャラクタセットに変換されて書き込まれます。MySQL
5.1.38
よりも前のバージョンまたはそのようなオプションが存在しない場合、値はバイナリ
キャラクタセットを使用してダンプされます。実際には、キャラクタセットの変換はありません。1
つのテーブルにさまざまなキャラクタセットのカラムが含まれている場合、出力データファイルも同様なため、そのファイルを正しく再ロードできないことがあります。
このオプションは、mysqldump
が mysqld
サーバーと同じマシンで動作している場合にのみ使用するようにしてください。FILE
権限を保持しており、サーバーはユーザーの指定してアファイルをディレクトリ内に書き込む権限を与えられていなければいけません。
--databases
オプションまたは -B
オプションを上書きします。mysqldump
は、このオプションに続く名前の引数をすべてテーブル名と見なします。
ダンプされたテーブルごとにトリガーをダンプします。このオプションはデフォルトで有効にされています。--skip-triggers
を使用して無効化してください。
このオプションにより、TIMESTAMP
カラムは異なるタイムゾーンのサーバー間でダンプおよび再ロードできるようになります。mysqldump
はその接続タイムゾーンを UTC
に設定し、SET
TIME_ZONE='+00:00'
をダンプファイルに追加します。このオプションなしでは、TIMESTAMP
カラムはソースとデスティネーションサーバーのタイムゾーンにダンプ・再ロードされ、値が変わる場合があります。--tz-utc
はサマータイムによる時間の変更に対してもプロテクトします。--tz-utc
はデフォルトで有効にされています。無効化するには、--skip-tz-utc
を使用してください。このオプションは
MySQL 5.1.2.で追加されました。
--user=
,
user_name
-u
user_name
サーバーへの接続時に使用する MySQL ユーザー名です。
冗長モード。プログラム実行に関する情報を出力する。
バージョン情報を表示し、閉じます。
--where='
,
where_condition
'-w
'
where_condition
'
ある WHERE
状態に選択された行のみダンプします。ユーザーのコマンドインタープリタにとって特別なキャラクタ、またはスペースを含んでいる場合、状態の周りをクオートで囲まなければいけません。
例:
--where="user='jimf'" -w"userid>1" -w"userid<1"
ダンプ出力と、well-formed XML も書き出します。
NULL
、'NULL'
、および空の値:
column_name
という名前のカラムの場合、NULL
値、空の文字列、および文字列値
'NULL'
はこのオプションによって生成される出力では次のように区別されます。
値: | XML Representation: |
NULL (unknown
value) |
|
'' (empty
string) |
|
'NULL' (string
value) |
|
MySQL 5.1.12
に始まり、--xml
オプションを使用しているときの
mysql
クライアントもこれらの規則を守ります。(詳しくは
項3.1.1. 「mysql オプション」
を参照してください。)
MySQL 5.1.18 以降のバージョンでは、次に示すように、mysqldump の XML 出力には XML 名前空間が含まれます。
shell>mysqldump --xml -u root world City
<?xml version="1.0"?> <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <database name="world"> <table_structure name="City"> <field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" /> <field Field="Name" Type="char(35)" Null="NO" Key="" Default="" Extra="" /> <field Field="CountryCode" Type="char(3)" Null="NO" Key="" Default="" Extra="" /> <field Field="District" Type="char(20)" Null="NO" Key="" Default="" Extra="" /> <field Field="Population" Type="int(11)" Null="NO" Key="" Default="0" Extra="" /> <key Table="City" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID" Collation="A" Cardinality="4079" Null="" Index_type="BTREE" Comment="" /> <options Name="City" Engine="MyISAM" Version="10" Row_format="Fixed" Rows="4079" Avg_row_length="67" Data_length="27329 3" Max_data_length="18858823439613951" Index_length="43008" Data_free="0" Auto_increment="4080" Create_time="2007-03-31 01:47:01" Updat e_time="2007-03-31 01:47:02" Collation="latin1_swedish_ci" Create_options="" Comment="" /> </table_structure> <table_data name="City"> <row> <field name="ID">1</field> <field name="Name">Kabul</field> <field name="CountryCode">AFG</field> <field name="District">Kabol</field> <field name="Population">1780000</field> </row>...
<row> <field name="ID">4079</field> <field name="Name">Rafah</field> <field name="CountryCode">PSE</field> <field name="District">Rafah</field> <field name="Population">92020</field> </row> </table_data> </database> </mysqldump>
--
構文を使用すれば、次の変数を設定することもできます。
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
ステートメントが発行されたときに長い更新ステートメントが実行中の場合、MySQL
サーバーはそれらのステートメントが終わるまで停止する可能性があります。それが終わると、ダンプがロックフリーとなり、テーブルの読み取りと書き込みを妨げることはなくなります。MySQL
サーバーが受ける更新ステートメントが短い場合
(実行時間を指す)、更新の数が多くても最初のロック期間はさほど気にならないはずです。
point-in-time リカバリは、(または「roll-forward」ーこれは古いバックアップを復元、そのバックアップが行われてから発生した変更を再生する場合)、バイナリログを回転する、またはダンプが対応しているバイナリログの座標だけでも知っているとと便利な場合があります (The Binary Logを参照してください)。
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
リカバリに合うオンラインバックアップを作成する便利な方法を提供しています。
バックアップ作成の追加情報に関しては、Backup and RecoveryとExample Backup and Recovery Strategyを参照してください。
ビューのバックアップの際問題が発生した場合、ビューに対する制限を含む節を参照してください。権限が不足していることによって失敗した場合の、ビューバックアップ解決策を記しています。Restrictions on Views を参照してください。