PostgreSQL 17以上でのOracle GoldenGateのフェイルオーバー・サポート
PostgreSQL 17以上を使用したOracle GoldenGateのフェイルオーバーの構成について学習します。
PostgreSQL 17では、プライマリ・サーバーとスタンバイ・サーバー間の論理レプリケーション・スロットの自動同期のサポートが導入されました。この機能とOracle GoldenGateを使用すると、レプリケーション・スロットの手動再作成を必要とせずに、Extractプロセスをシームレスにフェイルオーバーできます。
この機能により、フェイルオーバー・イベント中の中断を最小限に抑えながら、継続的なデータ・レプリケーションを実現します。
PostgreSQL 17以上のOracle GoldenGateのフェイルオーバー・サポートを有効にするための前提条件
フェイルオーバーサポートを有効にする前に、次のことを確認してください。
-
PostgreSQLバージョン17以降がデプロイされます。
-
プライマリおよびスタンバイ(レプリカ)構成はすでに設定されています。
-
Oracle GoldenGateがインストールおよび構成されています。
-
必要なデータベース権限を使用できます。
フェイルオーバーサポートの構成
フェイルオーバー・サポートを構成するには、PostgreSQLプライマリ・サーバーおよびスタンバイ・サーバーに対して、次にOracle GoldenGate Extract側で次のタスクを実行します。
-
PostgreSQLプライマリ・サーバーとスタンバイ・サーバーを構成します。
プライマリ・サーバー: PostgreSQL構成パラメータを更新します。
wal_level = logical max_replication_slots = *sufficient_value* sync_replication_slots = on synchronized_standby_slots = '*standby_slot_name*'スタンバイ・サーバー上
構成パラメータを更新します。
hot_standby_feedback = on primary_slot_name = '*primary_physical_slot*' -
構成を更新した後、プライマリ・サーバーとスタンバイ・サーバーの両方でPostgreSQLを再起動します。
-
Extractプロセスの登録中にフェイルオーバー・スロット・サポートを有効にします。
Oracle GoldenGate Webインタフェースの使用
PostgreSQLのExtractの作成時に、フェイルオーバー・レプリケーション・スロットの切替えスイッチを有効にします。

AdminClientの使用
REGISTER EXTRACT *extract_name* FAILOVERSLOT;REST APIの使用
POST /services/v2/extracts/AT { "credentials": { "alias": "fail1" }, "registration": "default", "failoverSlot": true } -
PostgreSQLプライマリ・サーバーとスタンバイ・サーバーの構成を確認します。
プライマリ・サーバーで:次の問合せを実行します。
SELECT slot_name, slot_type, failover FROM pg_replication_slots;出力には次が表示されます。
-
スロット・タイプは
logicalです -
failoverがtrueに設定されている
スタンバイ・サーバーで:次の問合せを実行します。
SELECT slot_name, restart_lsn FROM pg_replication_slots;出力には次が表示されます。
-
スタンバイに同じスロットが存在します
-
LSN値が進行中です
-
-
次のステップを実行して、フェイルオーバーを実行します。
-
構成済の高可用性メカニズムを使用して、スタンバイ・サーバーをプライマリに昇格します。
-
Extract構成を更新して、新しいプライマリ・データベースに接続します。
-
Extractプロセスを開始または再開します。
レプリケーションは、再初期化を必要とせずに、最後に処理された位置から続行されます。
-
-
レプリケーションスロットステータスのモニター:
SELECT slot_name, active, restart_lsn FROM pg_replication_slots;次の点を確認します。
-
スロットはアクティブです
-
LSNの再起動が進んでいます
-
過度のWAL蓄積なし
-
-
未使用のレプリケーション・スロットを削除すると、
WALの過剰な保存およびディスクの使用を防ぐことができます。SELECT pg_drop_replication_slot('*slot_name*');
フェイルオーバーサポート構成のベストプラクティス
Oracle GoldenGate Extract for PostgreSQLでフェイルオーバー・サポートを構成する場合は、次のベスト・プラクティスを考慮してください。
-
Extract作成時のフェイルオーバー・スロットの有効化
-
レプリケーションスロットステータスを定期的にモニターする
-
定期的なフェイルオーバー・テストの実行
-
WALファイルに十分なディスク領域を確保する
制限事項
-
Yugabyte Database Limitation: フェイルオーバー・スロットは、フェイルオーバー・スロットをサポートしない古いPostgreSQLバージョンを使用しているため、Yugabyte Databaseではサポートされません。
-
MIGRATEコマンドを使用したOracle GoldenGateの制限: 新しく作成されたスロットは
failover = true設定のフェイルオーバー・スロットではないため、フェイルオーバー・スロットはMigrateでは機能しません。
クラウド固有のガイドライン
-
Amazon RDS for PostgreSQL: 次のパラメータを設定します:
rds.logical_slot_sync_dbname = '*database_name*'詳細は、https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.pglogical.slot.synchronization.htmlを参照してください。
-
Azure Database for PostgreSQL: 次のアクションが実行されます:
-
フェイルオーバーは自動的に管理されます
-
論理レプリケーションが有効になっていることを確認します
詳細は、https://learn.microsoft.com/en-us/azure/postgresql/high-availability/concepts-high-availability#failover-supportを参照してください。
-
-
PostgreSQL論理デコードの詳細: PostgreSQL論理デコードの詳細は、https://www.postgresql.org/docs/17/logicaldecoding-explanation.htmlを参照してください。