クロスリージョン レプリケーションの概要

このページでは、AlloyDB for PostgreSQL のクロスリージョン レプリケーションの概要について説明します。

AlloyDB クロスリージョン レプリケーションを使用すると、プライマリ クラスタからセカンダリ クラスタとインスタンスを作成し、プライマリ リージョンでサービスの停止が発生した場合に、別のリージョンでリソースを利用できるようにできます。これらのセカンダリ クラスタとインスタンスは、プライマリ クラスタとインスタンス リソースのコピーとして機能します。

このページにおける重要なコンセプトは以下とおりです。

  • プライマリ クラスタ。単一リージョンの読み取り / 書き込みクラスタ。

  • セカンダリ クラスタ。プライマリとは異なるリージョンにある読み取り専用クラスタ。プライマリ クラスタから非同期で複製されます。AlloyDB プライマリ クラスタで障害が発生した場合は、セカンダリ クラスタをプライマリ クラスタにプロモートできます。

    プライマリ クラスタには最大 5 つのセカンダリ クラスタを作成できます。すべてのセカンダリ クラスタは、単一のプライマリ クラスタから複製されます。セカンダリ クラスタをプロモートすると、そのセカンダリ クラスタは独立したプライマリ クラスタになります。

  • セカンダリ インスタンス。セカンダリ クラスタの読み取り専用リーダー。プライマリ クラスタからレプリケーション ストリームを受信します。レプリケーション ストリームは、プライマリ リージョンのストレージ ボリュームに基づいてセカンダリ リージョンのストレージ ボリュームを更新します。セカンダリ クラスタがプライマリ クラスタにプロモートされると、セカンダリ インスタンスがプライマリ インスタンスになります。

    セカンダリ インスタンスは、基本(ゾーン)または高可用性(リージョン)のいずれかです。

    次の図は、クロスリージョン レプリケーションの仕組みを示しています。

クロスリージョン レプリケーション アーキテクチャの例。

図 1: AlloyDB クロスリージョン レプリケーション アーキテクチャの例。

利点

AlloyDB のクロスリージョン レプリケーションのメリットは次のとおりです。

  • 障害復旧。プライマリ クラスタのリージョンが利用できなくなった場合は、別のリージョンの AlloyDB リソースを昇格してリクエストを処理できます。

  • ダウンタイムの短縮。セカンダリ クラスタで高可用性(HA)をサポートすると、メンテナンス イベントや計画外の停止中のダウンタイムを短縮できます。

  • 地理的に分散したデータ。データを地理的に分散すると、データがユーザーに近づき、読み取りレイテンシが短縮されます。

  • 読み取りスケーリングの増加: 各クロスリージョン レプリカ(またはセカンダリ クラスタ)は最大 20 個の読み取りノードをサポートできるため、読み取りをさらにスケーリングできます。

  • データ損失なしの切り替え。クロスリージョン レプリケーション設定の場合、AlloyDB はプライマリ インスタンスとセカンダリ インスタンス間の切り替えをサポートし、データの損失はありません。

クロスリージョン レプリケーションを使用する

AlloyDB クロスリージョン レプリケーションを使用するには、次の作業が必要です。

  • セカンダリ クラスタの作成。セカンダリ クラスタは、AlloyDB プライマリ クラスタの継続的に更新されるコピーです。

  • セカンダリ クラスタの確認。セカンダリ クラスタを作成したら、 Google Cloud コンソールの [クラスタ] ページでその詳細を確認できます。

  • 読み取りプール インスタンスの追加。読み取りプール インスタンスはセカンダリ クラスタに追加できます。読み取り容量を水平方向にスケーリングする場合は、セカンダリ クラスタに最大 20 個の読み取りノードを追加できます。

  • セカンダリ クラスタのプロモート。セカンダリ クラスタからデータを読み取ることはできますが、フル機能のスタンドアロンのプライマリ クラスタにプロモートするまで書き込みはできません。セカンダリ クラスタをプロモートすると、クラスタのセカンダリ インスタンスも、読み取りと書き込みの権限を持つプライマリ インスタンスとしてプロモートされます。

    セカンダリ クラスタをプロモートする主なユースケースは、障害復旧です。プライマリ クラスタのリージョンでリージョンが停止した場合は、セカンダリ クラスタをスタンドアロンのプライマリ クラスタにプロモートし、アプリケーションのサービス提供を再開できます。

  • データ損失なしの切り替え。切り替えにより、データを損失することなく、プライマリ クラスタとセカンダリ クラスタのロールを入れ替えることができます。切り替えは、障害復旧の設定をテストすること、またはワークロードの移行を実施することを目的として実施できます。切り替えを行うと、レプリケーションの方向が逆になります。

    複数のセカンダリ クラスタが存在する場合は、スイッチオーバー コマンドを受け取ったセカンダリ クラスタがプライマリ クラスタになります。以前のプライマリ クラスタはセカンダリ クラスタになり、新しいプライマリ クラスタから複製されます。他のすべてのセカンダリ クラスタは、新しいプライマリ クラスタからのレプリケーションに切り替わります。

    セカンダリ クラスタを切り替える一般的なシナリオは次の 2 つです。

    • 障害復旧訓練。データ損失が発生しない状態でアプリケーションを別のリージョンに切り替えて、リージョンの停止をシミュレートすることで、障害復旧プロセスのテストを実行できます。
    • リージョンの移行。AlloyDB リソースをプライマリ リージョンから別のリージョンに計画的な移行を実施する。スイッチオーバーにより、セカンダリ クラスタが目標復旧時点(RPO)0 のプライマリ クラスタになり、移行でデータが失われない状態が確保されます。
  • 自動バックアップと継続バックアップを構成する。デフォルトでは、AlloyDB は自動バックアップと継続バックアップの構成をプライマリ クラスタから新しく作成されたセカンダリ クラスタに自動的にコピーします。セカンダリ クラスタに別のバックアップ構成を使用する場合は、セカンダリ クラスタの作成時にバックアップ構成を変更できます。

    プライマリ クラスタがバックアップに顧客管理の暗号鍵(CMEK)による暗号化を使用している場合は、セカンダリ クラスタの作成時に次のいずれかを行います。

    • セカンダリ クラスタのバックアップに CMEK 暗号化設定を指定する。
    • セカンダリ クラスタのバックアップを無効にします。

CMEK でバックアップを暗号化する際の詳細については、CMEK を使用するをご覧ください。

セカンダリ クラスタの自動バックアップと継続バックアップの設定は、作成後に変更できます。

次のステップ