MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

7.4.1 mysqldump による SQL フォーマットでのデータのダンプ

このセクションでは、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 ステートメントが含まれません。 これにはいくつかの問題があります。

データベースから特定のテーブルのみをダンプするには、コマンド行でデータベース名に続いてそれらを指定します。

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-purgedOFF または COMMENTED に設定して、アクティブな SET @@GLOBAL.gtid_purged ステートメントなしで 2 番目のダンプファイルを出力するか、ダンプファイルをリプレイする前にステートメントを手動で削除します。