このページでは、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 を使用するをご覧ください。
セカンダリ クラスタの自動バックアップと継続バックアップの設定は、作成後に変更できます。