Cloud SQL でのレプリケーションについて

レプリケーションとは、Cloud SQL インスタンスのコピーを作成して、そのコピーに作業をオフロードする機能です。

はじめに

レプリケーションを使用する主な理由は、パフォーマンスを低下させることなく、データベース内のデータ使用をスケーリングすることです。

レプリケーションは、リージョン間でデータを移行するために行うこともあります。

また、元のインスタンスが破損している場合に、レプリカをスタンドアロン インスタンスに昇格することもできます(この場合、既存のレプリカはそのインスタンスをプライマリと見なされません)。

Cloud SQL インスタンスを参照する場合、複製されるインスタンスは「プライマリ インスタンス」と呼ばれ、コピーは「リードレプリカ」と呼ばれます。プライマリ インスタンスとリードレプリカはすべて Cloud SQL にあります。

最初のレプリカが作成されると、次のようになります。

  • プライマリ インスタンスは、現在プライマリ インスタンス上にあるすべてのデータベースの完全な復旧モデルに設定されます。
  • 一時ディスクが作成され、完全バックアップが一時ディスクに保存されます。レプリカの作成プロセスが完了すると、一時ディスクは削除されます。

最初のレプリカの作成中にユーザーが単純な復旧モデルに切り替えると、レプリカの作成に失敗します。

レプリカの作成後にプライマリ インスタンスに追加されたデータベースは次のようになります。

  • データベースが可用性グループに自動的に追加され、自動シーディングを使用してレプリカに設定されます。
  • レプリカが作成されるたびに、プライマリ インスタンス上にあるデータベースの完全なバックアップ(完全復旧モデル)が作成されます。レプリカより後に作成されたログイン情報とサーバー オブジェクトは複製されません。

Cloud SQL は、次の種類のレプリカをサポートします。

Cloud SQL は、2 台の外部サーバー間のレプリケーションをサポートしていません。

リードレプリカ

リードレプリカを使用して Cloud SQL インスタンスから作業をオフロードします。リードレプリカとは、プライマリ インスタンスの正確なコピーです。プライマリ インスタンスのデータやその他の変更は、リードレプリカでほぼリアルタイムで更新されます。

リードレプリカは読み取り専用です。書き込みはできません。リードレプリカは、クエリ、読み取りリクエスト、アナリティクス トラフィックを処理し、プライマリ インスタンスの負荷を低減します。プライマリ インスタンスごとに最大 8 個のリードレプリカを作成できます。

レプリカの接続名と IP アドレスを使用して、レプリカに直接接続します。プライベート IP アドレスを使用してレプリカに接続している場合は、接続がプライマリ インスタンスから継承されるため、レプリカに追加の VPC プライベート接続を作成する必要はありません。

リードレプリカの作成方法の詳細については、リードレプリカの作成をご覧ください。リードレプリカの管理については、リードレプリカの管理をご覧ください。

プライマリ インスタンスで HA を使用する場合は、プライマリ インスタンスとは異なるゾーンにリードレプリカを配置することをおすすめします。これにより、プライマリ インスタンスが配置されたゾーンで障害が発生しても、リードレプリカのオペレーションを継続できます。詳細については、高可用性の概要をご覧ください。

適切なマシンタイプを選択する

リードレプリカのマシンタイプは、プライマリ マシンタイプと異なる場合があります。CPU とメモリの使用状況など、インスタンスの指標をモニタリングして、レプリカ インスタンスがワークロードに適したサイズになるようにしてください(特にプライマリ インスタンスよりも小さい場合)。レプリカ インスタンスのサイズが小さすぎると、メモリ不足(OOM)が頻繁に発生するなど、パフォーマンスが低下しやすくなります。

クロスリージョン リードレプリカ

クロスリージョン レプリケーションでは、プライマリ インスタンスとは異なるリージョンにリードレプリカを作成できます。クロスリージョン リードレプリカは、リージョン内のレプリカを作成するで説明した方法で作成します。

SQL Server リードレプリカの場合、レプリカがプライマリ レプリカと同じ仮想ネットワーク内にあるか、パブリック IP 経由で通信することを前提としています。

クロスリージョン レプリカ:

  • レプリカをアプリケーションのリージョンのより近くで利用できるようにすることで、読み取りパフォーマンスを向上させます。
  • リージョンの障害から保護するために、追加の障害復旧機能を提供します。
  • リージョン間でデータを移行できます。

クロスリージョン レプリカの詳細については、リージョン移行または障害復旧のためにレプリカを昇格させるをご覧ください。

レプリケーションのユースケース

次のユースケースは、レプリケーションのタイプごとに適用されます。

名前 プライマリ レプリカ 利点と使用例 詳細
リードレプリカ Cloud SQL インスタンス Cloud SQL インスタンス
  • 追加の読み取り容量
  • 分析対象
  • 読み取りパフォーマンスを向上させる
  • レプリカからのエクスポート
クロスリージョン リードレプリカ Cloud SQL インスタンス Cloud SQL インスタンス
  • 追加の読み取り容量
  • 分析対象
  • 追加の障害復旧機能
  • 読み取りパフォーマンスを向上させる
  • リージョン間でデータを移行する
SQL Server のレプリケーション Cloud SQL の外部のインスタンス Cloud SQL for SQL Server インスタンス
  • Cloud SQL への移行パス
  • 外部サーバーから Cloud SQL へのレプリケーション
  • Cloud SQL から外部サーバーへのレプリケーション
  • Cloud SQL インスタンス間のレプリケーション
  • Google Cloud Platform へのデータ レプリケーション
  • 分析対象

課金

  • リードレプリカは、標準 Cloud SQL インスタンスと同じレートで課金されます。データ レプリケーションには課金されません。
  • クロスリージョン リードレプリカの料金は、リージョン内で新しい Cloud SQL インスタンスを作成する場合と同じです。Cloud SQL インスタンスの料金を参照して、適切なリージョンを選択します。インスタンスに関連する通常のコストに加えて、クロスリージョン レプリカでは、プライマリ インスタンスからレプリカ インスタンスに送信されるレプリケーション ログに対してクロスリージョン ネットワークの下り(外向き)料金が発生します。詳しくは、ネットワーク下り(外向き)の料金をご覧ください。

Cloud SQL リードレプリカのクイック リファレンス

トピック ディスカッション
バックアップ レプリカのバックアップは構成できません。
コアとメモリ リードレプリカでは、プライマリ インスタンスとは異なる数のコアとメモリ量を使用できます。
プライマリ インスタンスの削除 プライマリ インスタンスを削除する前に、すべてのリードレプリカをスタンドアロン インスタンスに昇格するか、リードレプリカを削除する必要があります。
レプリカの削除 レプリカを削除しても、プライマリ インスタンスのステータスには影響しません。
複製されたデータベースの削除 Google Cloud コンソールまたは gcloud コマンドを使用して、複製された SQL Server データベースを削除できます。削除はレプリカに自動的に伝播されます。T-SQL コマンドを使用して、複製された SQL Server データベースを削除することはできません。
フェイルオーバー プライマリ インスタンスはリードレプリカにフェイルオーバーできず、またリードレプリカは停止時にフェイルオーバーできません。
高可用性 リードレプリカは高可用性を提供しません。
ロード バランシング Cloud SQL では、レプリカ間のロード バランシングを提供しません。
メンテナンスの時間枠 メンテナンスの時間枠はリードレプリカに設定できないため、プライマリ インスタンスとも共有されません。リードレプリカではメンテナンスをいつでも行えます。リードレプリカのメンテナンスは、プライマリ インスタンスと異なる時間に行われます。
複数のリードレプリカ 1 つのプライマリ インスタンスに対して最大で 8 個のリードレプリカを作成できます。
プライベート IP プライベート IP アドレスを使用してレプリカに接続している場合は、プライマリ インスタンスから継承されるため、レプリカに追加の VPC プライベート接続を作成する必要はありません。
プライマリ インスタンスの復元 レプリカのプライマリ インスタンスは、そのレプリカが存在する場合は復元できません。インスタンスをバックアップから復元する前や、インスタンスでポイントインタイム リカバリを実行する前に、すべてのレプリカを昇格または削除する必要があります。
設定 インスタンスにアクセスできるユーザーに関するデータの変更を含め、プライマリ インスタンスの設定はレプリカに伝播されます。
レプリカの停止 レプリカの stop は実行できません。restart または delete は可能ですが、プライマリ インスタンスで行うように停止することはできません。
レプリカのアップグレード リードレプリカでは、中断を伴うアップグレードが時間に関係なく行われる可能性があります。
ユーザー テーブル レプリカに変更を加えることはできません。すべてのユーザー変更は、プライマリ インスタンスで行う必要があります。

制限事項

  • この機能が適用されるのは、Cloud SQL for SQL Server の次のバージョンのみです。

    • SQL Server 2017 Enterprise
    • SQL Server 2019 Enterprise
    • SQL Server 2022 Enterprise
  • ログイン情報はレプリカに伝播されません。

  • T-SQL や SQL Server Management Studio を使用してレプリカをモニタリングする必要があります。

  • データベースを削除する前に、データベース接続を閉じる必要があります。

  • レプリカを作成する場合、プライマリ インスタンスにシングルユーザー モードのデータベースを含めることはできません。そうでないと、レプリカの作成は失敗します。

次のステップ