ウォーム・スタンバイを使用したレプリケーション
ウォーム・スタンバイを使用したPostgreSQLレプリケーションを使用して、継続的に更新されるスタンバイ・データベース・システムを別のリージョンに維持します。
ウォーム・スタンバイを使用したレプリケーションは、継続的に更新されるスタンバイ・データベース・システムを別のリージョンに維持できる障害時リカバリ・ツールです。この方法を実装することで、リカバリ時間を短縮し、データを保護し、予期しない中断が発生した場合のビジネス継続性を確保できます。ウォーム・スタンバイを使用したレプリケーションでは、同じリージョンとクロス・リージョンの両方でリカバリ・ポイント目標(RPO) SLOを使用したディザスタ・リカバリがサポートされ、予期しないイベントに対するデータ保護が可能になります。同じリージョンのウォーム・スタンバイでは、単一のデータベース・システムがサポートするノードは8つのみであるため、さらに水平方向のスケーリングが可能です。
ウォーム・スタンバイを使用したレプリケーションでは、次の機能が拡張されます。
- ディザスタ・リカバリおよびビジネス継続性: プライマリ・リージョンからセカンダリ・リージョンにデータを定期的にレプリケートすることで、リージョン全体の障害が発生した場合に、別のリージョンでアプリケーションを迅速に再構築できます。
- 移行と拡張: アプリケーションを別のリージョンに移行および拡張することが容易になります。
- コンプライアンスの簡素化: 財務や政府機関など、高可用性や地理的分散に関する規制要件の対象となる組織は、コンプライアンス基準をより簡単に満たすことができます。
データベース・システムのロール
ウォーム・スタンバイを使用したレプリケーションが設定されていない場合、既存のすべてのデータベース・システムは、レプリケーションなしでスタンドアロンとして扱われます。各スタンドアロン・データベース・システムは独立して動作し、読取りアクセスと書込みアクセス(読取り/書込み)の両方を提供します。
ウォーム・スタンバイ・データベースを設定すると、そのデータベースはウォーム・スタンバイ・ロールで動作します。関連付けられたスタンドアロン・データベースは、プライマリ・データベース・システム・ロールで動作します。これらのロールの詳細は、次のとおりです。
- プライマリ・データベース・システムのロール:
- プライマリ・データベース・システムでは、プライマリ・エンドポイントを介したデータ更新が許可され、ウォーム・スタンバイ設定を使用したレプリケーションでは、このロールに1つのデータベース・システムが含まれます。
- 読取りおよび書込み操作(読取り/書込みアクセス)をサポートします。
- ライトアヘッド・ログ(WAL)をスタンバイ・データベース・システムに継続的にストリーミングしてレプリケーションを行います。
- ウォーム・スタンバイ・データベース・システム・ロール:
- ウォーム・スタンバイ・データベース・システムは、レプリカ/DRシステムとしてクロスリージョン・レプリケーション(CRR)に構成されます。
- データの整合性を確保するために読取り専用モードで実行されます(読取り専用アクセス)。
- プライマリからWAL更新を継続的に受信します。
- 障害発生時にプライマリ・システムに昇格できますが、それ以外の場合は読取り問合せ(レポート、分析、読取りスケール操作など)に制限されます。
拡張機能の構成の詳細は、構成および拡張を参照してください。
前提条件
プライマリおよびウォーム・スタンバイ・データベース・システムを設定および構成するためのこれらの制約およびベスト・プラクティスに注意してください。
シェイプ要件
プライマリ・スタンバイ・データベースとウォーム・スタンバイ・データベース間の異機種間シェイプまたは1秒当たりの入出力操作(IOPS)を選択できます。ただし、障害発生時に同等のパフォーマンス・プロファイルを使用してスタンバイ・データベース・システムにシームレスにフェイルオーバーできるように、同じシェイプおよびパフォーマンスで構成することをお薦めします。
IAM
Oracle Cloud Infrastructureサービスを使用するには、IAMポリシーを介した適切なセキュリティ・アクセス権が必要です。「権限が拒否されました」または「認可されていない」エラーが表示された場合は、必要なグループ・メンバーシップとコンパートメント・アクセスがあることを確認してください。
ウォーム・スタンバイでレプリケーションを使用するには、次のポリシーを作成します。
Allow group <group_name> to manage { POSTGRES_DB_SYSTEM_REPLICATE } in [ tenancy | compartment <compartment_name> | compartment id <compartment_ocid> ]
postgres-db-systemsの管理をデータベース・レベルですでに付与するポリシーがある場合、POSTGRES_DB_SYSTEM_REPLICATEはすでにより広範なpostgres-db-systems権限に含まれているため、このポリシーは不要です。
次に、より広範なポリシーの例を示します。
Allow group <group_name> to manage postgres-db-systems in [ tenancy | compartment <compartment_name> | compartment id <compartment_ocid> ]
管理者資格情報
ユーザーおよびロールは、プライマリ・データベースからウォーム・スタンバイ・データベースにレプリケートされます。ウォーム・スタンバイ・データベースに専用のユーザーまたはロールを含めることはできません。
ウォーム・スタンバイ・データベースの管理ユーザー名は、プライマリ・データベース・システムの作成時に定義された管理ユーザー名と同じです。
フェイルオーバー
自動フェイルオーバーはサポートされていません。ウォーム・スタンバイ・データベース・システムを昇格して、フェイルオーバーを手動で実行する必要があります。
リカバリ・ポイントの目標(RPO)
リカバリ・ポイント目標(RPO)を使用して、ウォーム・スタンバイでレプリケーションを使用する場合の潜在的なデータ損失を制限します。可用性やデータ保護のニーズなど、お客様の要件に応じて、RPOの実施を有効または無効にします。
RPOは、災害時に失われる可能性のある時間単位のデータ量です。RPOは、データベースでの最新の書込みのタイムスタンプと、まだレプリケートされていない最も古いWALレコードのウォール・クロックの時間差として計算されます。
次に、RPOの詳細を示します。
-
プライマリ・リージョンのライトアヘッド・ログ(WAL)は、セカンダリ・リージョンのウォーム・スタンバイに非同期的にレプリケートされます。
-
RPOは、スタンバイがプライマリからどの程度遅れているかを表すレプリケーション・ラグを追跡します。
- 強制しきい値に対してサポートされているデフォルト値:
- サポートされる範囲: 300秒(5分)から10,800秒(3時間)
- デフォルト値: 300秒(5分)です。
- RPO強制が有効な場合:
- OCI Database with PostgreSQLは、トランザクションのコミット中にRPOを継続的に評価します。
-
レプリケーション・ラグが構成されたRPO値を超えた場合:
-
プライマリ・データベース・システムは自動的に読取り専用モードに切り替わります。
-
このスイッチは、それ以上のデータ変更と過剰なデータ損失を防止します。
-
ウォーム・スタンバイはキャッチ・アップでき、その後、通常の操作が再開されます。
-
-
RPO強制が無効になっている場合:
-
レプリケーション・ラグが構成済のRPOを超えた場合でも、データベース・システムは通常の操作を続行します。
-
プライマリ・データベースは読取り専用モードに切り替わりません。
-
ウォーム・スタンバイのサポートされるデータベース・バージョン
ウォーム・スタンバイ機能には、データベース・バージョンが14以上のプライマリ・データベース・システムとウォーム・スタンバイ・データベース・システムの両方が必要です。
構成および拡張
プライマリ・データベース・システムにインストールされる拡張は、常にウォーム・スタンバイ・データベース・システムに適用される拡張と同じかサブセットである必要があります。
レプリカ・リージョンにウォーム・スタンバイ・データベース・システムの構成を作成できます。これらの構成は、ウォーム・スタンバイを使用したレプリケーション設定の一部として、プライマリ・データベース・システムからウォーム・スタンバイ・データベース・システムに自動的にレプリケートされません。
ウォーム・スタンバイを使用したレプリケーションの設定
ウォーム・スタンバイを使用したレプリケーションは、セカンダリOCIリージョンでウォーム・スタンバイ・データベースを維持することで、レジリエンスを実現します。このスタンバイは、ソース・リージョンのプライマリから継続的に更新され、障害発生時に手動で昇格できます。
この項では、この環境の設定に必要なタスクについて説明します。
プライマリ・データベース・システムの作成
ウォーム・スタンバイ・データベース・システムの作成
ロール割当ての確認
レプリカデータベースシステムの一覧表示
Oracle Cloudコンソールでは、関連付けられたレプリカ・データベース・システムがプライマリ・データベース・システムの詳細ページに表示され、ユーザーはプライマリ・データベース・システムにリンクされたレプリカのリストを、対応するリージョンおよび識別子とともに表示できます。
ウォーム・スタンバイ・データベース・システムのスタンドアロンへの変換
関連付けられたプライマリ・データベース・システムは、ウォーム・スタンバイ構成のレプリケーションの一部ではなくなったため、自動的にスタンドアロン・ステータスに変換されます。
スタンドアロン・データベース・システムのウォーム・スタンバイへの変換
変換されたウォーム・スタンバイ・データベース・システムの詳細ページを開き、DBシステム・ロールの値がウォーム・スタンバイであることを確認します。
プライマリとして指定したデータベース・システムの詳細ページを開き、DBシステム・ロールの値が「プライマリ」であることを確認します。「レプリカDBシステム」を選択して「レプリカDBシステム」パネルを開き、変換した関連するウォーム・スタンバイ・データベースがリストされていることを確認します。
プライマリ・データベース・システムとウォーム・スタンバイ・データベース・システム間のロールの切替え
障害時リカバリ
この項では、プライマリ・リージョンの停止が発生したときに実行するアクションと、リージョンのリカバリ後に通常の操作をリストアする方法について説明します。
このディザスタ・リカバリ・シナリオでは、プライマリ・データベース・システムはPHXなどのソース・リージョンにあります。プライマリ・データベース・システムには読取り/書込みアクセス権があります。ウォーム・スタンバイ・データベース・システムは、LHRなどのレプリカ・リージョンです。ウォーム・スタンバイ・データベース・システムには読取り専用アクセスがあり、クロス・リージョン・レプリケーションを使用して常にプライマリ・データベース・システムと同期されます。
ウォーム・スタンバイからスタンドアロンへの変換
手順については、スタンドアロン・データベース・システムのウォーム・スタンバイへの変換を参照してください。
元のプライマリからウォーム・スタンバイへの変換
ソース・リージョンがリストアされた後も、元のプライマリ・データベース(PHX)はスタンドアロン・データベース・システムのままになります。
「スタンドアロン・データベース・システムのウォーム・スタンバイへの変換」の説明に従って、元のプライマリ・データベース・システム(PHX)のロールをウォーム・スタンバイ・データベース・システムに更新します。元のウォーム・スタンバイ・データベース・サーバー(LHR、現在はスタンドアロンに変換済)をプライマリ・データベース・システムとして指定します。
現在、プライマリ・データベース・システムは読取り/書込みアクセス権を持つLHRで、ウォーム・スタンバイ・データベース・サーバーは読取り専用アクセス権を持つPHXです。
元のデータベース設定の再確立
「プライマリ・データベース・システムとウォーム・スタンバイ・データベース・システム間のロールの切替え」の説明に従って、スイッチオーバー関数を使用して、現在のプライマリ・データベース・システム(LHR)を元のプライマリ(PHX)に戻します。スイッチオーバーが発生すると、更新されたプライマリはPHXで、更新されたウォーム・スタンバイはLHRです。ソース・リージョンのプライマリおよびレプリカ・リージョンのウォーム・スタンバイを使用して、通常のデータベース操作を再開できます。
RPOの適用
プライマリデータベースシステムでRPOを有効にし、次の方法で目的のRPO値を指定できます。
- ウォーム・スタンバイを使用したレプリケーションの設定時
設定時にRPOを適用すると、RPOの強制が最初から適用され、潜在的なデータ損失が構成されたしきい値内にとどまることが保証されます。構成されたRPOを超えると、スタンバイがキャッチアップするまで、プライマリデータベースシステムが一時的に読み取り専用モードに移行することがあります。
設定時にRPOを有効にするには、「プライマリ・データベース・システムの選択」パネルを使用します。詳細は、ウォーム・スタンバイ・データベース・システムの作成を参照してください。
- ウォーム・スタンバイを使用したレプリケーションの設定後
設定後にRPOを有効化(または無効化)するには:
- プライマリ・データベースの詳細ページを開きます(「データベース・システムの詳細の取得」を参照)。
- 「アクション」メニューから「管理ポリシーの編集」を選択します。
- 「管理ポリシーの編集」パネルで、RPOの強制を有効または無効にし、サポートされている範囲内のRPO値を構成します。
- 変更を保存します。
変更はすぐに適用されます。
メトリック
メトリックを使用して、プライマリ・データベース・システムとウォーム・スタンバイ・データベース・システムの両方のレプリケーションおよびRPOステータスを監視します。
データベース・システムの詳細ページから、「メトリック」を選択して「メトリック」ページを表示します。次に、メトリックを示します。
プライマリデータベース基準
- Current RPO (seconds): プライマリ・データベース・システムの現在のRPO。スタンバイがプライマリからどのくらい遅れているかを秒単位で現在のレプリケーション・ラグを表示します。
- 現在のトランザクション・モード: プライマリ・データベース・システムの現在のトランザクション・モード。
1: 読取り/書込み0: 読取り専用値
0は、RPOの適用によりデータベース・システムが読取り専用モードになったことを示します。
ウォーム・スタンバイ・データベースのメトリック
- 最後のトランザクション・リプレイ・エポック: プライマリで最後にリプレイされたトランザクションのライトアヘッド・ログ・レコードが生成された時間が表示されます。
- 最後のトランザクション・リプレイ・ラグ: ウォーム・スタンバイ・データベース・システムで最後のトランザクションがリプレイされたエポックと、同じトランザクションがプライマリ・データベース・システムでコミットされたエポックとの間のタイム・ラグ(ミリ秒)が表示されます。
CLIのサポート
CLIコマンドを使用して、ウォーム・スタンバイでのレプリケーション・タスクを実行できます。
プライマリ・データベース・システムの作成
データベース・システムの作成の説明に従って、プライマリ・データベース・システムが存在するリージョンに切り替え、CLIを使用してデータベースを作成します。
ウォーム・スタンバイ・データベース・システムの作成
ウォーム・スタンバイ・データベース・システムを配置するリージョンに切り替えます。ウォーム・スタンバイを作成するには、次のコマンドを使用します。
ソース・データベース・システムの詳細(sourceTypeやprimaryDbSystemIdなど)を適切な値で更新します。次に例を示します。
oci raw-request --http-method POST --auth security_token --config-file ~/.oci/config --profile DEFAULT --target-uri 'https://postgresql.us-phoenix-1.oci.oraclecloud.com/20220915/dbSystems' \
--request-body '{
"displayName": "Warm Standby Database",
"description": "Test db",
"compartmentId": "ocid.compartment.oc1..exampleuniqueID",
"dbVersion": "14",
"storageDetails": {
"systemType": "OCI_OPTIMIZED_STORAGE",
"isRegionallyDurable": false,
"availabilityDomain": "gXfg:UK-LONDON-1-AD-2"
},
"shape": "PostgreSQL.VM.Standard.E5.Flex",
"instanceOcpuCount": 2,
"instanceCount": 1,
"instanceMemorySizeInGBs": 32,
"networkDetails": {
"subnetId": "ocid1.subnet..exampleuniqueID"
},
"source": {
"sourceType": "DB_SYSTEM",
"primaryDbSystemId": "ocid1.postgresqldbsystem..exampleuniqueID"
}
}'
レプリカデータベースシステムの一覧表示
次のコマンドを使用して、プライマリ・データベース・システムに関連付けられているウォーム・スタンバイ・データベース・システムをリストします。
oci raw-request --http-method GET --target-uri 'https://postgresql.us-phoenix-1.oci.oraclecloud.com/20220915/dbSystems/<dbSystemId>/replicas' --region us-phoenix-1 --profile DEFAULT --config-file ~/.oci/config --auth security_token
<dbSystemId>は、プライマリ・データベース・システムのOCIDです。
ウォーム・スタンバイ・データベース・システムのスタンドアロンへの変換
次のコマンドを使用して、ウォーム・スタンバイ・データベース・システムをスタンドアロンに変換します。
oci raw-request --http-method POST --target-uri 'https://postgresql.us-phoenix-1.oci.oraclecloud.com/20220915/dbSystems/<warm_standby>/actions/changeRoleToStandalone' --region us-phoenix-1 --request-body '{"changeMode":"[immediately | "Replay Pending Updates"]"}' --profile DEFAULT --config-file ~/.oci/config --auth security_token
ここで、<warm_standby>はウォーム・スタンバイ・データベース・システムです。
スタンドアロン・データベース・システムのウォーム・スタンバイへの変換
次のコマンドを使用して、スタンドアロン・データベース・システムをウォーム・スタンバイに変換します。
oci raw-request --http-method POST --target-uri 'https://postgresql.us-phoenix-1.oci.oraclecloud.com/20220915/dbSystems/<warm_standby>/actions/changeRoleToReplica' --region us-phoenix-1 --request-body '{"primaryDbSystemId":"<primary>"}' --profile DEFAULT --config-file ~/.oci/config --auth security_token
ここで、<warm_standby>はウォーム・スタンバイ・データベース・システム、<primary>はプライマリ・データベース・システムです。
RPOの更新
次のコマンドを使用して、データベース・システムのレプリケーション構成(RPO設定)を更新します。
oci raw-request --http-method PUT --target-uri 'https://postgresql.us-phoenix-1.oci.oraclecloud.com/20220915/dbSystems/<dbSystemId>' --region us-phoenix-1 --request-body '{"replicationConfig": {"isRpoEnforced": true, "rpoInSeconds": 300}}' --profile DEFAULT --config-file ~/.oci/config --auth security_token
ここで、<dbSystemId>はデータベース・システムのOCIDです。
-
isRpoEnforced: RPO強制が有効か無効かを指定します。 -
rpoInSeconds: 有効にした場合に適用するRPO値(秒単位)を指定します。値は 300から 10,800秒の間である必要があります。
スイッチオーバー
スタンドアロン・データベース・システムとウォーム・スタンバイ間のスイッチオーバーを実行するには、次のコマンドを使用します。
oci raw-request --http-method POST --target-uri 'https://postgresql.us-phoenix-1.oci.oraclecloud.com/20220915/dbSystems/<primary>/actions/switchover' --region us-phoenix-1 --request-body
'{"replicaDbSystemId":"<warm-standby>"}' --profile DEFAULT --config-file ~/.oci/config --auth security_token
ここで、<primary>はプライマリ・データベース・システム、<warm_standby>はウォーム・スタンバイ・データベース・システムです。
制限
データベース・システムのリストア
データベース・システムのリストアは、ウォーム・スタンバイ・データベース・システム(プライマリおよびウォーム・スタンバイ)でのレプリケーションではサポートされていません。