mysqldump を使用した MySQL データベースのエクスポート

必要なオプションを使用して、MySQL データベースに対して mysqldump ユーティリティを直接実行できます。ただし、データを Cloud SQL データベースにインポートするためにエクスポートする場合は、次のフラグを指定して mysqldump ユーティリティを使用します。

  • --databases エクスポートするデータベースの明示的なリストを指定します。このリストには、システム データベース(sysmysqlperformance_schemainformation_schema)を含めないでください。
  • --hex-blob データベースにバイナリ フィールドが含まれている場合、バイナリ フィールドを正しくインポートするには、このフラグを使用する必要があります。
  • --single-transaction 実行前にトランザクションを開始します。データベース全体をロックする代わりに、mysqldump は現在の状態でデータベースを読み取り、一貫したデータダンプを作成します。
  • --routines ストアド プロシージャと関数を含める。
  • mysqldump バージョン 8 以降を使用して 8 より前のバージョンの MySQL データベースをエクスポートする場合:
    --column-statistics=0

    このフラグを使用すると、Unknown table 'COLUMN_STATISTICS' in information_schema (1109) エラーを回避するために、データベース エクスポートから COLUMN_STATISTICS テーブルが削除されます。詳細については、問題を診断するをご覧ください。

次のフラグを使用することをおすすめします。

  • --no-autocommit
  • --default-character-set=utf8mb4
  • --master-data

MySQL サーバーにネットワーク接続できるマシンから、次のコマンドを実行します。

    mysqldump \
        -h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
        --databases [DBS]  \
        --hex-blob \
        --no-autocommit \
        --default-character-set=utf8mb4 \
        --master-data=1  \
        --single-transaction \
        --routines \
        | gzip \
        | gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz

移行元が MySQL 用のリレーショナル データベース サービス(RDS)の場合:

  • master-data プロパティはサポートされていません。
  • ソース データベース サーバーで GTID がサポートされている場合は、--set-gtid-purged=on プロパティを使用します。それ以外の場合は、このプロパティを使用しないでください。
  • 手動ダンプを使用してデータを移行する場合は、GTID を有効にして移行を実行します。

このコマンドは、次の例のようになります。

    mysqldump \
        -h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
        --databases [DBS]  \
        --hex-blob  \
        --no-autocommit \
        --default-character-set=utf8mb4 \
        --set-gtid-purged=on \
        --single-transaction \
        --routines \ 
        | gzip \
        | gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz

また、binlog をより長く保持するように RDS インスタンスを構成する必要があります。このコマンドは、次の例のようになります。

    # Sets the retention period to one week.
    call mysql.rds_set_configuration('binlog retention hours', 168);

[PROPERTIES_IN_BRACKETS] は、次の値で置き換えます。

特性
[SOURCE_ADDR] ソース データベース サーバーの IPv4 アドレスまたはホスト名。
[SOURCE_PORT] ソース データベース サーバーのポート。
[USERNAME] MySQL ユーザー アカウント。
[DBS] ダンプに含めるソース データベース サーバー上のデータベースのスペース区切りのリスト。SHOW DATABASES MySQL コマンドを使用してデータベースを一覧表示します。
[BUCKET_NAME] ユーザーが作成し、ダンプファイルの保存に使用する Cloud Storage のバケット(replica-bucket など)。
[DUMP_FILENAME] ダンプ ファイル名(.gz ファイル拡張子で終わる)(例: source-database.sql.gz)。