このページは機械翻訳したものです。
このセクションでは、mysqldump を使用して、SQL フォーマットのダンプファイルを作成する方法について説明します。 そのようなダンプファイルのリロードについては、セクション7.4.2「SQL フォーマットバックアップのリロード」を参照してください。
デフォルトで、mysqldump は情報を SQL ステートメントとして標準出力に書き込みます。 出力をファイルに保存できます。
shell> mysqldump [arguments] > file_name
        すべてのデータベースをダンプするには、--all-databases オプションを付けて mysqldump を呼び出します。
      
shell> mysqldump --all-databases > dump.sql
        特定のデータベースのみをダンプするには、コマンド行でそれらを指定し、--databases オプションを使用します。
      
shell> mysqldump --databases db1 db2 db3 > dump.sql
        --databases オプションによって、コマンド行上のすべての名前がデータベース名として扱われます。 このオプションを使用しないと、mysqldump は最初の名前をデータベース名として、そのあとに続く名前をテーブル名として扱います。 
      
        --all-databases または --databases を使用すると、mysqldump は、各データベースのダンプ出力の前に、CREATE DATABASE および USE ステートメントを書き込みます。 これにより、ダンプファイルがリロードされると、それが各データベースが存在しなければ作成して、デフォルトのデータベースにするため、データベースの内容がそれらの作成元の同じデータベースにロードされます。 ダンプファイルに、各データベースを再作成する前にその削除を強制する場合、--add-drop-database オプションも使用します。 この場合、mysqldump は各 CREATE DATABASE ステートメントの前に、DROP DATABASE ステートメントを書き込みます。 
      
単一のデータベースをダンプするには、コマンド行でそれを指定します。
shell> mysqldump --databases test > dump.sql
        単一のデータベースの場合、--databases オプションを省略できます。
      
shell> mysqldump test > dump.sql
        2 つの先述のコマンドの違いは、--databases を付けないと、ダンプの出力に CREATE DATABASE または USE ステートメントが含まれません。 これにはいくつかの問題があります。 
      
- ダンプファイルをリロードする場合、サーバーがリロードするデータベースを認識するように、デフォルトのデータベース名を指定する必要があります。 
- リロードする場合、元の名前と異なるデータベース名を指定でき、これにより、データを別のデータベースにリロードできます。 
- リロードするデータベースが存在しない場合、まずそれを作成する必要があります。 
- 出力には - CREATE DATABASEステートメントが含まれていないため、- --add-drop-databaseオプションは効果がありません。 それを使用しても- DROP DATABASEステートメントは生成されません。
データベースから特定のテーブルのみをダンプするには、コマンド行でデータベース名に続いてそれらを指定します。
shell> mysqldump test t1 t3 t7 > dump.sql
        デフォルトでは、ダンプファイル (gtid_mode=ON) を作成するサーバーで GTID が使用されている場合、mysqldump は、ソースサーバーの gtid_executed セットからターゲットサーバーの gtid_purged セットに GTID を追加する SET @@GLOBAL.gtid_purged ステートメントを出力に含めます。 特定のデータベースまたはテーブルのみをダンプする場合、mysqldump に含まれる値には、ソースサーバー上の gtid_executed セット内のすべてのトランザクションの GTID(データベースの抑制された部分を変更したトランザクションや、部分ダンプに含まれていなかったサーバー上のその他のデータベースも含む) が含まれることに注意してください。 ターゲットサーバーで部分ダンプファイルを 1 つしかリプレイしない場合、余分な GTID はそのサーバーの今後の操作で問題を引き起こしません。 ただし、同じ GTID を含むターゲットサーバー上の別のダンプファイル (たとえば、同じソースサーバーからの別の部分ダンプ) をリプレイすると、2 番目のダンプファイル内の SET @@GLOBAL.gtid_purged ステートメントは失敗します。 この問題を回避するには、mysqldump オプション --set-gtid-purged を OFF または COMMENTED に設定して、アクティブな SET @@GLOBAL.gtid_purged ステートメントなしで 2 番目のダンプファイルを出力するか、ダンプファイルをリプレイする前にステートメントを手動で削除します。