PostgreSQL: DDLレプリケーション

PostgreSQLのDDLレプリケーションについて説明します。

PostgreSQL: DDL構成の前提条件

ソース・データベースのDDL変更は、PostgreSQLのExtractプロセスでは自動的に処理されません。ソース表でDDLを変更する前に、次のステップを実行します。

  1. DDLの変更が必要な表に対するアプリケーション・データを停止します。
  2. OGG Extractで、DDL変更の前にすべての変更を取得しておきます。
  3. Extractを停止します。
  4. 表に対してDELETE TRANDATAを実行します。
  5. ALTER TABLE ADD COLUMN/DROP COLUMNコマンドを使用して、必要なDDL変更を行います。
  6. 表に対してADD TRANDATAを実行します。
  7. Extractを起動します。
  8. 表のアプリケーション・データを再開します。

PostgreSQL: DDLレプリケーション中

DDLレプリケーション中にExtractが実行中または停止状態の場合、Extractは次のように動作します:

  • Extractが停止状態のときに列が追加されると、Extractは新しい変更レコード(DDL変更後)を処理します。古い変更レコード(DDL変更前)の処理中に1回かぎりの警告をレポートし、欠落している列を無視します。
  • Extractが実行中の状態のときに列が追加されると、Extractは古い変更レコード(DDL変更前)を処理しますが、新しく追加された列を含む新しい変更レコード(DDL変更後)を検出すると異常終了します。

  • Extractが停止状態のときに列が削除されると、Extractは、1回かぎりの警告を返して古い変更レコードで受け取った列のみを処理し、余分な列は無視します。

  • Extractが実行中の状態のときに列が削除されると、Extractは、欠落している列に関して1回かぎりの警告を返して変更レコードで受け取った列のみを処理します。

  • Extractは、メタデータがある列を処理し、トランザクション・ログから受け取った余分な列を無視します。