バックアップ用のデータベースまたはデータベースの集合をダンプしたり、他の 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.

