第 1 世代の外部マスターを構成する

ここでは、第 1 世代のレプリカに複製される外部マスターを構成する方法を説明します。

外部マスターは、Cloud SQL の外部にある MySQL インスタンスで、第 1 世代インスタンスのマスターとして機能します。Compute Engine 上で稼働中の MySQL サーバーは、Cloud SQL の外部にあると見なされます。

外部マスター構成について

Cloud SQL 外部マスター構成を使用すると、Cloud SQL の外部にあるマスターから複製される Cloud SQL の第 1 世代インスタンスを作成できます。Cloud SQL レプリカにはアプリケーションからアクセスできませんが、Cloud SQL レプリカをスタンドアロンの第 1 世代インスタンスに昇格させることも、マスター上のデータの最新コピーとして機能させることもできます。

この構成には、内部マスター インスタンスという Cloud SQL インスタンスが必要です。内部マスター インスタンスは、Cloud SQL レプリカのマスターとして Cloud SQL に表示されます。内部マスター インスタンスと外部マスター インスタンスを合わせると、Cloud SQL レプリカのマスター インスタンスになります。

外部マスター構成の図

データは外部マスターから直接 Cloud SQL レプリカに複製され、内部マスター インスタンスはデータの複製に関与しません。内部マスター インスタンスは標準の Cloud SQL インスタンスのように見えますが、内部マスター インスタンスには課金されません。内部マスター インスタンスを直接管理することはできません。

始める前に

  • 外部マスター インスタンスの要件を満たす外部インスタンスが必要です。
  • 外部マスター インスタンスの外部 IP アドレスとポート、マスター インスタンス上のレプリケーション ユーザーのユーザー名とパスワードが必要です。
  • Cloud SQL Admin API を有効にします。

    APIを有効にする

外部マスターの構成要件

  • 内部マスター インスタンスと Cloud SQL レプリカが第 1 世代インスタンスであること。
  • 外部マスター インスタンスと Cloud SQL レプリカが同じバージョンの MySQL(5.5 または 5.6)を使用していること。
  • 外部マスターでバイナリ ロギングが有効になっていること。 詳細
  • server-id オプションの値が 2 以上に設定されていること。 詳細
  • 外部マスターが Compute Engine インスタンス上にある場合は、外部マスターにパブリック IP アドレスが割り当てられていること。
  • 外部マスターがパブリック IP アドレスにアクセスできること。
  • 内部マスターの開始イメージを提供するために使用される、マスターで作成したダンプファイルが、Cloud SQL のダンプファイルの要件を満たしていること。詳細
  • REPLICATION SLAVE 権限を使用して外部マスター上のレプリケーション ユーザー アカウントを構成していること。

データを準備する

外部マスター構成で使用するデータを準備するために、マスター インスタンスからのデータが含まれている mysqldump ファイルを作成し、このダンプファイルを Cloud Storage にアップロードします。

  1. Cloud Storage バケットを作成します。

    このバケットは、レプリカにインポートするダンプファイルを保持するために使用します。詳細については、ストレージ バケットの作成をご覧ください。

  2. SQL ダンプファイルの作成の外部レプリケーションの手順に従って、マスター インスタンスから mysqldump ファイルを作成します。

  3. ファイルを Cloud Storage バケットにアップロードします。

    詳細については、バケットへのデータのアップロードをご覧ください。

外部マスター構成を作成する

  1. レプリカを配置するリージョンと、外部マスター インスタンスの外部 IP アドレスおよびポートを使用して、内部マスター インスタンスを作成します。

    ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"name": "[INTERNAL_MASTER_INSTANCE_NAME]",
              "region": "[REGION_NAME]",
              "databaseVersion": "[EXTERNAL_MASTER_DATABASE_VERSION]",
              "onPremisesConfiguration": {"hostPort": "[IP_ADDRESS:PORT]"}}' \
     -X POST \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
    

    内部マスター インスタンスが作成され、その IP アドレスとして外部マスターの IP アドレスとポートが表示されます。

  2. 内部マスター インスタンスの初期化が終了した後、外部マスターのレプリケーション ユーザー アカウント情報と、先ほど準備したデータの場所を指定して、レプリカを作成します。

    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"replicaConfiguration":
               {"mysqlReplicaConfiguration":
                 {"username": "[REPLICATION_USER]",
                  "password": "[REPLICATION_USER_PASSWORD]",
                  "dumpFilePath": "[BUCKET_LOCATION]",
                  "caCertificate": "[SOURCE_SERVER_CA]",
                  "clientCertificate": "[CLIENT_CERT]",
                  "clientKey": "[PRIVATE_KEY]"}},
              "settings": {"tier": "[TIER]","activationPolicy": "ALWAYS"},
              "databaseVersion": "[EXTERNAL_MASTER_DATABASE_VERSION]",
              "masterInstanceName": "[INTERNAL_MASTER_INSTANCE_NAME]",
              "name": "[REPLICA_NAME]", "region": "[REGION_NAME]"}' \
     -X POST \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
    

    リクエストの本文の dumpFileusernamepassword フィールドは必須です。dumpFile フィールドの形式は gs://bucket-location/filename です。D4 など、第 1 世代の階層を使用する必要があります。databaseVersion には、マスター インスタンスの MySQL バージョン(MYSQL_5_5 または MYSQL_5_6)を指定します。region フィールドはマスターと同じでなければなりません。

    SSL/TLS 情報は省略可能ですが、セキュリティの観点から指定することを強くおすすめします。

    レプリカが最初に作成された時点では、レプリカがマスターに遅れをとっていますが、レプリカのサイズがワークロードに対して適切に設定されていれば、やがてレプリケーションが追いつくはずです。

  3. (省略可能)前の手順を繰り返して、追加のレプリカを作成します。

  4. SSL/TLS を使用するようにマスター インスタンスを構成していない場合は、レプリカからのアクセスのみを許可するように、少なくともレプリケーション ユーザーを更新する必要があります。詳細

次のステップ

レプリカの管理について学習します。

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

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