Cloud SQL にインポートするデータをエクスポートする

このページでは、Cloud SQL で使用可能な SQL ダンプファイルや CSV ファイルの作成方法について説明します。これらのファイルを使用して、データを Cloud SQL にインポートしたり、Cloud SQL レプリカの外部マスターを作成したりできます。

Cloud SQL へのデータのインポートにおすすめの方法については、データのインポートとエクスポートにおすすめの方法をご覧ください。

SQL ダンプファイルを作成する

Cloud SQL または mysqldump を使用して、Cloud SQL にインポートするための SQL ダンプファイルを作成できます。

Cloud SQL でビューを除外してエクスポートする

gcloud コマンドライン ツールまたは Cloud SQL Admin API を使用すると、エクスポートする各テーブルを指定して、ビューを除外できます。データをエクスポートするgcloud または cURL の手順に従って、次の構文を使用します。

gcloud

gcloud sql export sql [INSTANCE_NAME] gs://[BUCKET_NAME]/sqldumpfile.gz \
    --database=[DATABASE_NAME] --table=[TABLE_NAME1,TABLE_NAME2, ...]

テーブルを指定する場合は、データベースを 1 つのみ指定する必要があります。ビューまたはシステム テーブルは含めないでください。

export コマンドの使用方法については、sql export sql コマンドのリファレンス ページをご覧ください。

cURL

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"exportContext":
                {"fileType": "SQL",
                 "uri": "gs://<BUCKET_NAME>/<PATH_TO_DUMP_FILE>",
                 "databases": ["<DATABASE_NAME>"],
               "sqlExportOptions":
                  {"tables": ["<TABLE_NAME1>,<TABLE_NAME2>,.."]}}}' \
   -X POST \
   https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/export

テーブルを指定する場合は、データベースを 1 つのみ指定する必要があります。ビューまたはシステム テーブルは含めないでください。

export コマンドの使用方法については、sql export sql コマンドのリファレンス ページをご覧ください。

mysqldump でビューを除外してエクスポートする

次のフラグを指定して SQL ダンプファイルを作成するには、mysqldump を使用します。

  • --databases インポートするデータベースの明示的なリストを指定するには、 オプションを使用する必要があります。このリストに mysql システム データベースは含めないでください。
  • --hex-blob データベースにバイナリ フィールドが含まれている場合、バイナリ フィールドを正しくインポートするには、このフラグを使用する必要があります。
  • --skip-triggers SQL ダンプファイルには、トリガーが含まれないようにする必要があります。
  • --set-gtid-purged=OFF SQL ダンプファイルには、GTID 情報が含まれないようにする必要があります。また、SQL ダンプファイルによりバイナリ ロギングが無効にならないようにする必要もあります(MySQL 5.5 や外部レプリケーションの場合には必要ありません)。
  • --ignore-table ご使用のデータベースにビューが含まれている場合は、エクスポート対象のデータベース内のそれぞれのビューに --ignore-table [VIEW_NAME] フラグを組み込むことによって、そうしたビューをエクスポートから除外する必要があります。

外部マスターまたは外部レプリカ構成で使用するためのダンプファイルを作成する場合は、--master-data=1 フラグと --flush-privileges フラグも使用する必要があります。

また、--routines オプションは使用しないでください。SQL ダンプファイルにはルーチンが含まれないようにする必要があります。

コマンドラインから、mysqldump を実行します。

標準構成

mysqldump --databases [DATABASE_NAME] -h [INSTANCE_IP] -u [USERNAME] -p \
--hex-blob --skip-triggers --single-transaction --set-gtid-purged=OFF \
--ignore-table [VIEW_NAME1] [...] --default-character-set=utf8mb4 > [SQL_FILE].sql

Ext レプリケーション

外部マスター構成で使用するダンプファイルを作成する場合は、作成したデータベースをすべて一覧表示しておく必要があります。外部マスター インスタンス上に存在するデータベースがレプリカに含まれていない場合、そのデータベースへの書き込みによってレプリケーションが停止する可能性があります。ただし、ダンプファイルにシステム データベース(mysqlperformance_schemainformation_schema)を含めることはできないため、すべてのデータベースを単純にエクスポートすることはできません。

外部レプリカの場合は、データベースのサブセットをレプリケートするように選択できますが、この場合でも個々のデータベースを選択してシステム データベースのエクスポートを回避する必要があります。

mysqldump --databases [DATABASE_NAME1, DATABASE_NAME2, ...] -h [INSTANCE_IP] -u [USERNAME] -p \
--master-data=1 --flush-privileges --hex-blob --skip-triggers --single-transaction \
--ignore-table [VIEW_NAME1] [...] --default-character-set=utf8mb4 > [SQL_FILE].sql

mysqldump の詳細については、mysqldump のリファレンスをご覧ください。

CSV ファイルを作成する

ローカル MySQL サーバーから CSV ファイルを作成するには、次を実行します。

mysql --host=[INSTANCE_IP] --user=[USER_NAME] --password [DATABASE] \
-e " SELECT * FROM [TABLE] INTO OUTFILE '[FILE_NAME]' CHARACTER SET 'utf8mb4'
     FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' "

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...