外部サーバーからのレプリケーションについて

このページでは、ソース データベース サーバーから MySQL レプリカにデータを複製する構成について説明します。この構成は、外部サーバー構成とも呼ばれます。

ソース データベース サーバーには任意の MySQL サーバーを指定できます。要件を満たしているのであれば、他の Google Cloud サービス(Cloud SQL、Compute Engine など)や他のクラウド プロバイダ(Amazon RDS など)で実行されているサーバーも指定できます。この構成を行う詳細な手順については、外部サーバーからのレプリケーションをご覧ください。

外部サーバー構成のユースケース

外部サーバー構成は、以下の目標を達成するのに役立ちます。

  1. 最小限のダウンタイムでセルフマネージド MySQL サーバーから Google Cloud にデータを移行する。

  2. サーバーのコロケーションと制御を維持しつつ、レプリカの管理を Cloud SQL にオフロードする。

    このユースケースは、ハイブリッド クラウドとも呼ばれます。セルフマネージド サーバーと Cloud SQL レプリカとの間のレプリケーションは、無期限に続行されます。

外部レプリケーション構成

外部レプリケーション構成には、次のインスタンスが含まれます。

  • 管理対象の MySQL サーバー(ソース データベース サーバーとも呼ばれます)
  • Cloud SQL レプリカ

    1 つのソース データベース サーバーで複数のレプリカを作成することもできます。

  • ソース表現インスタンス

    ソース表現インスタンスとは、Cloud SQL レプリカに対するソース データベース サーバーを表す Cloud SQL インスタンスのことです。これは Google Cloud コンソールに表示され、通常の Cloud SQL インスタンスと同じように見えますが、データは含まれず、構成もメンテナンスも必要ありません。また、課金にも影響しません。

次の図に、これらのインスタンスを示します。

外部レプリケーション構成に含まれる 3 つのインスタンスの図

SSL / TLS 構成

外部サーバーからのレプリケーションでは、ソース データベース サーバーと Cloud SQL レプリカの間でデータに対するすべての変更を送信しなければなりません。

パブリック ネットワーク上で(IP 許可リストを使用して)接続している場合は、ソース データベースと宛先データベース間の接続に SSL / TLS 暗号化を使用することをおすすめします。

Cloud SQL では、SSL / TLS 構成に次のオプションを使用できます。

  • なし: Cloud SQL の宛先インスタンスは、暗号化なしでソース データベースに接続します。
  • サーバーのみの認証

  • サーバー クライアント認証

サーバーのみの認証

レプリカはプライマリ インスタンスに接続する際に、正しいホストに接続していることを確認して中間者攻撃を防ぐために、プライマリ インスタンスを認証します。プライマリ インスタンスはレプリカを認証しません。

サーバーのみの認証を使用するには、レプリカの作成時に、外部サーバーの証明書に署名した認証局(CA)の x509 PEM エンコード証明書を指定します。CA が持つ証明書は 1 つのみで、その証明書は自己署名証明書でなければなりません(つまり、サーバーの証明書に署名した認証局はルート CA である必要があります)。

サーバー クライアント認証

レプリカがプライマリ インスタンスに接続する際に、レプリカはプライマリ インスタンスを認証し、プライマリ インスタンスはレプリカを認証します。

サーバー クライアントは、最も強力なセキュリティを提供します。ただし、レプリカの作成時にクライアント証明書と秘密鍵を提供したくない場合は、サーバーのみの認証を使用することもできます。

サーバー クライアント認証を使用するには、レプリカを作成するときに次の項目を指定します。

  • ソース データベース サーバーの証明書に署名した CA の、x509 PEM でエンコードされた証明書(caCertificate)。
  • レプリカがソース データベース サーバーに対する認証で使用する、x509 PEM でエンコードされた証明書(clientCertificate)。
  • clientCertificateclientKey)に関連付けられた、暗号化されていない PKCS#1 または PKCS#8 形式の PEM でエンコードされた秘密鍵。

同じデータベース サーバーから複数のレプリカを作成する

同じソース データベース サーバーから複数のレプリカを作成できます。その場合、帯域幅を増やすか、異なる複数のリージョン内でレプリカを作成することをおすすめします。

同じリージョン内で複数のレプリカを作成する場合、そのすべてのレプリカが同じソース表現インスタンスを使用することも、レプリカごとに異なるソース表現インスタンスを使用することもあります。Google Cloud コンソールを使用して複数のレプリカを作成すると、各レプリカは異なるソース表現インスタンスを使用します。

異なる複数のリージョン内で複数のレプリカを作成する場合、各レプリカが異なるソース表現インスタンスを使用する必要があります。

1 回のオペレーションで複数のレプリカを作成することはできません。最初のレプリカのレプリカ構成の作成が終わり次第、他のレプリカのレプリカ構成の作成を開始できます。最初のレプリカが完全に機能するのを待たずに、他のレプリカの作成を開始できます。

外部サーバーのカスケード レプリカ

カスケード リードレプリカを使用すると、同じまたは異なるリージョンの別のリードレプリカの下にリードレプリカを作成できます。プライマリ インスタンスを含む、最大 4 レベルまでのカスケード レプリカを追加できます。レプリカをカスケード レプリカ階層の最上位に昇格させると、そのレプリカがプライマリ インスタンスになり、カスケード レプリカのレプリケーションが継続します。

外部サーバーを使用する場合、データを移行してから外部サーバー レプリカをプライマリに昇格するまでの間に、外部サーバー レプリカの下にリードレプリカを作成できます。これにより、外部サーバー レプリカの昇格前にリードレプリカ トポロジをテストできます。