バックアップ用のデータベースまたはデータベースの集合をダンプしたり、他の SQL サーバ(MySQL サーバである必要はない)にデータを移動するためのユーティリティです。ダンプには、テーブル作成や入力のための SQL ステートメントが含まれます。
同じサーバ上でバックアップを行う場合には、mysqlhotcopy
の方の使用を考慮してください。 See
項4.9.8. 「mysqlhotcopy
(MySQL
のデータベースとテーブルのコピー)」。
mysqldump [OPTIONS] database [tables] か mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] か mysqldump [OPTIONS] --all-databases [OPTIONS]
テーブルを指定しなかったり、--databases
オプションまたは --all-databases
オプションを使用すると、データベース全体がダンプされます。
使用しているバージョンの
mysqldump
がサポートするオプションの一覧を照会するには、mysqldump
--help
を実行します。
注意: mysqldump
を
--quick
または --opt
なしで実行すると、mysqldump
は結果をダンプする前に、結果セット全体をメモリにロードします。これは、大きなデータベースをダンプする際、問題になる可能性があります。
注意: mysqldump
プログラムの新しいコピーを使用している場合で、非常に古い
MySQL
サーバに読み込むダンプを行うときには、--opt
オプションまたは -e
オプションは使用しないでください。
mysqldump
は、以下のオプションをサポートします。
--add-locks
各テーブルダンプの前に LOCK
TABLES
を追加し、後に UNLOCK
TABLE
を追加する(MySQL
への挿入を速くするため)。
--add-drop-table
各作成ステートメントの前に drop
table
を追加する。
-A, --all-databases
すべてのデータベースをダンプする。これは、すべてのデータベースを選択した状態で
--databases
を実行するのと同じである。
-a, --all
MySQL 固有の作成オプションをすべて含める。
--allow-keywords
キーワードであるカラム名の作成を認める。各カラム名の先頭にテーブル名を付け加えることが必要。
-c, --complete-insert
完全な挿入ステートメント(カラム名も指定)を使用する。
-C, --compress
クライアントとサーバの両方が圧縮をサポートする場合、クライアントとサーバ間の情報をすべて圧縮する。
-B, --databases
いくつかのデータベースをダンプする。注意:ここでは、テーブル名を指定しない。名前の引数はすべて、データベース名として扱われる。
出力される各新規データベースの前に
USE db_name;
が追加される。
--delayed
INSERT DELAYED
コマンドでレコードを挿入する。
-e, --extended-insert
新しい複数行 INSERT
構文を使用する(さらにコンパクトで速い挿入ステートメントを提供)。
-#, --debug[=option_string]
プログラムのトレース使用(デバック目的)。
--help
ヘルプメッセージを表示して終了する。
--fields-terminated-by=...
,
--fields-enclosed-by=...
,
--fields-optionally-enclosed-by=...
,
--fields-escaped-by=...
,
--lines-terminated-by=...
これらのオプションは -T
オプションとともに使用する。LOAD DATA
INFILE
の対応する節と同じ意味を持つ。 See
項6.4.8. 「LOAD DATA INFILE
構文」。
-F, --flush-logs
ダンプを開始する前に、MySQL
サーバ内のログファイルをフラッシュする。注意:
このオプションを
--all-databases
(または
-A
)オプションと組み合わせて使用した場合、ログは各データベースのダンプごとにフラッシュされる。
-f, --force,
テーブルダンプ中にSQL エラーが発生しても続行する。
-h, --host=..
指定したホストの MySQL
サーバからデータをダンプする。デフォルトのホストは
localhost
。
-l, --lock-tables.
ダンプを開始する前にすべてのテーブルをロックする。テーブルは
READ LOCAL
でロックされ、MyISAM
テーブルの場合は同時挿入が可能になる。
注意:
複数のデータベースをダンプする場合、--lock-tables
は各データベースを個別にロックする。したがって、このオプションを使用した場合、データベース間でのテーブルの論理整合性は保証されない。
異なるデータベースのテーブルは、完全に異なる状態でダンプされる可能性がある。
-K, --disable-keys
/*!40000 ALTER TABLE tb_name DISABLE KEYS
*/;
および /*!40000 ALTER TABLE
tb_name ENABLE KEYS */;
が出力に含まれる。これにより、インデックスが、すべてのデータが挿入それた後に作成されるため、MySQL
4.0 サーバへのデータのロードが速くなる。
-n, --no-create-db
CREATE DATABASE /*!32312 IF NOT EXISTS*/
db_name;
が出力に含まれない。--databases
オプションまたは --all-databases
オプションを指定した場合は、上記の行が追加される。
-t, --no-create-info
テーブル作成情報(CREATE TABLE
ステートメント)を書き込まない。
-d, --no-data
テーブルのレコード情報を一切書き込まない。テーブルの構造だけをダンプする場合、非常に便利である。
--opt
--quick --add-drop-table --add-locks
--extended-insert --lock-tables
と同じ。MySQL
サーバに読み込むための最速ダンプを提供する。
-pyour_pass, --password[=your_pass]
サーバ接続時に使用するパスワード。'=your_pass
'
部分を指定しなければ、mysqldump
によってパスワードのプロンプトが表示される。
-P, --port=...
TCP/IP 接続に使用するポート番号。
--protocol=(TCP | SOCKET | PIPE | MEMORY)
使用する接続プロトコルを指定する。MySQL 4.1 で導入。
-q, --quick
クエリをバッファせず、stdou
に直接ダンプする。これを行うには、mysql_use_result()
を使用する。大きなダンプの際に特に便利である。
-Q, --quote-names
テーブル名およびカラム名を
‘`
’ 文字で囲む。
-r, --result-file=...
指定したファイルへの直接出力。このオプションは
MSDOS で使用する。改行 '\n
' が
'\n\r
'(改行 +
復帰)に変換されるのを防ぐためである。
--single-transaction
このオプションは、サーバからデータをダンプする前に、BEGIN
SQL
コマンドを発行する。これは、InnoDB
テーブルと READ_COMMITTED
トランザクション分離レベルで特に役立つ。このモードでは、どのアプリケーションもブロックすることなく、BEGIN
が発行されたときのデータベースの整合した状態をダンプできる。
このオプションを使用する際は、トランザクションテーブルだけが整合状態でダンプされることに注意する。たとえば、このオプションでダンプされた
MyISAM
テーブルまたは
HEAP
テーブルは、変更されている可能性がある。
--single-transaction
オプションはバージョン 4.0.2
で追加された。 このオプションは
--lock-tables
オプションとは相互排他的である。LOCK
TABLES
は、前のトランザクションをすでにコミットしているためである。
-S /path/to/socket,
--socket=/path/to/socket
localhost
(デフォルトホスト)との接続に使用するソケットファイル。
--tables
--databases(-B)オプションを上書きする。
-T, --tab=path-to-some-directory
各テーブルに対する SQL CREATE
コマンドが含まれる
table_name.sql
ファイル、および各テーブルに対するデータが含まれる
table_name.txt
ファイルを作成する。.txt
ファイルの形式は、--fields-xxx
オプションおよび --lines--xxx
オプションに基づく。注意:
このオプションは、mysqldump
が
mysqld
デーモンと同じマシンで実行している場合のみ有効。FILE
権限のある MySQL
アカウントを使用することが必要。また、mysqld
を実行しているログインユーザまたはグループ(通常はユーザ
mysql
、グループ
mysql
)に、指定した場所でのファイルの作成および書き込み権限が必要。
-u user_name, --user=user_name
サーバとの接続に使用する MySQL ユーザ名。デフォルト値はユーザの Unix ログイン名。
-O name=value, --set-variable=name=value
変数の値を指定する。指定可能な変数は以下に示す。注意:
--set-variable=name=value
および
-O name=value
構文は、MySQL 4.0
で廃止。代わりに --name=value
を使用すること。
-v, --verbose
冗長モード。プログラムの実行内容に関する詳細情報を出力する。
-V, --version
バージョン情報を出力して終了する。
-w, --where='where-condition'
選択したレコードだけをダンプする。注意: 必ず引用符で囲むこと。
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"
-X, --xml
1 つのデータベースを整形式の XML としてダンプ。
-x, --first-slave
すべてのデータベースのすべてのテーブルをロック。
--master-data
--first-slave
とほぼ同じだが、CHANGE MASTER TO
コマンドを出力する。マスタのこの SQL
ダンプを使用してスレーブをセットアップしていた場合、このコマンドにより、後でマスタのバイナリログ内の正しい位置からスレーブを開始させることができる。
-O net_buffer_length=#, ここで # <
16M
複数レコード挿入ステートメントを作成したときに(--extended-insert
オプションまたは --opt
オプションと同様)、mysqldump
は net_buffer_length
までの長さのレコードを作成する。この変数を大きくする場合には、MySQL
サーバの max_allowed_packet
変数が
net_buffer_length
よりも大きいことを確認する。
一般的に、mysqldump
はデータベース全体のバックアップに使用されます。
See 項4.5.1. 「データベースのバックアップ」。
shell> mysqldump --opt database > backup-file.sql
これを、以下のコマンドで MySQL に戻すことができます。
shell> mysql database < backup-file.sql
または
shell> mysql -e "source /path-to-backup/backup-file.sql" database
データベースの情報を別の MySQL サーバに移動することもできます。
shell> mysqldump --opt database | mysql ---host=remote-host -C database
1 つのコマンドで複数のデータベースをダンプすることができます。
shell> mysqldump --databases database1 [database2 ...] > my_databases.sql
すべてのデータベースを選択するには、以下のようにします。
shell> mysqldump --all-databases > all_databases.sql
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.