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

このページでは、Cloud SQL で使用可能な SQL ダンプファイルや CSV ファイルの作成方法について説明します。これらのファイルを使用して、データを 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 つのみ指定する必要があります。ビューまたはシステム テーブルは含めないでください。

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

cURL

ACCESS_TOKEN="$(gcloud auth application-default 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 つのみ指定する必要があります。ビューまたはシステム テーブルは含めないでください。

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

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

mysqldump を使用して SQL ダンプファイルを以下のフラグで作成します。

  • --databases: --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 --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 --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 '\"' "

次のステップ

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

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