すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:PostgreSQL データベースの構成

最終更新日:May 08, 2026

PostgreSQL Change Data Capture (CDC) コネクタを使用する前に、上流の PostgreSQL ストレージが構成要件を満たしていることを確認してください。本トピックでは、ApsaraDB RDS for PostgreSQL、Amazon RDS for PostgreSQL、および自主管理 PostgreSQL データベースの構成要件と関連操作について説明します。

背景情報

PostgreSQL CDC コネクタを使用する前に、上流の PostgreSQL ストレージが構成要件を満たしていることを確認する必要があります。本トピックでは、ApsaraDB RDS for PostgreSQL、Amazon RDS for PostgreSQL、および自主管理 PostgreSQL データベースの構成方法について説明します。PostgreSQL CDC コネクタは、PostgreSQL の論理サブスクリプションメカニズムに基づいてデータを同期します。詳細については、「Logical Decoding Concepts」および「Principles and Best Practices of Logical Subscription」をご参照ください。

ApsaraDB RDS for PostgreSQL データベース

  • ApsaraDB RDS for PostgreSQL と Ververica Platform (VVP) 間のネットワーク接続

  • ApsaraDB RDS for PostgreSQL サーバーの構成

    • サポートされるバージョン

      PostgreSQL 10、PostgreSQL 11、PostgreSQL 12、PostgreSQL 13、PostgreSQL 14、PostgreSQL 15、および PostgreSQL 16 のデータのみを同期できます。PostgreSQL のバージョンを確認するには、select version() コマンドを実行します。

    • 論理デコーディング

      • 論理デコーディングを有効にするには、wal_level = logical を構成します。詳細については、「ApsaraDB RDS for PostgreSQL インスタンスのパラメーターを変更する」をご参照ください。構成が成功した場合は、論理デコーディング に記載されている例に基づいて、この機能をテストして使用できます。

      • 同期対象のテーブルの REPLICA IDENTITY 設定が FULL であることを確認してください。

        REPLICA IDENTITY の設定を表示および変更するには、次の SQL ステートメントを実行します。

        -- REPLICA IDENTITY の設定を表示します。
        SELECT CASE relreplident
          WHEN 'd' THEN 'default'
          WHEN 'n' THEN 'nothing'
          WHEN 'f' THEN 'full'
          WHEN 'i' THEN 'index'
          END AS replica_identity
        FROM pg_class
        WHERE oid = 'mytablename'::regclass;
        
        -- REPLICA IDENTITY の設定を変更します。
        ALTER TABLE mytablename REPLICA IDENTITY FULL;
  • データ同期プラグイン

    論理デコーディングプラグイン wal2json は、ApsaraDB RDS for PostgreSQL インスタンスのメジャーエンジンバージョンが PostgreSQL 11、PostgreSQL 12、または PostgreSQL 13 の場合にのみサポートされます。pgoutput プラグインは、ApsaraDB RDS for PostgreSQL インスタンスのメジャーエンジンバージョンが PostgreSQL 10 以降の場合にのみサポートされます。pgoutput および decodebuf の使用を推奨します。詳細については、PostgreSQL CDC トピックで decoding.plugin.name オプションを検索してください。

    説明

    pgoutput プラグインを使用してデータを同期する場合、使用するアカウントが特権アカウントであることを確認してください。詳細については、「アカウントの作成」をご参照ください。

Amazon RDS for PostgreSQL

  • Amazon RDS for PostgreSQL と VVP 間のネットワーク接続

    Amazon RDS for PostgreSQL と VVP 間にネットワーク接続を確立するには、VVP がインターネット経由で Amazon RDS for PostgreSQL にアクセスできるようにする必要があります。詳細については、「Realtime Compute for Apache Flink がインターネットにアクセスする方法」および「Controlling access with security groups」をご参照ください。

  • Amazon RDS for PostgreSQL サーバーの構成

    • サポートされるバージョン

      PostgreSQL 10、PostgreSQL 11、PostgreSQL 12、PostgreSQL 13、PostgreSQL 14、PostgreSQL 15、および PostgreSQL 16 のデータのみを同期できます。PostgreSQL のバージョンを確認するには、select version() コマンドを実行します。

    • 論理デコーディング

      • rds.logical_replication パラメーターを 1 に設定します。

      • wal_level パラメーターの値が logical であることを確認します。デフォルトでは、rds.logical_replication パラメーターを 1 に設定すると、wal_level パラメーターが自動的に logical に設定されます。

      • 同期対象のテーブルの REPLICA IDENTITY 設定が FULL であることを確認してください。

        REPLICA IDENTITY の設定を表示および変更するには、次の SQL ステートメントを実行します。

        -- REPLICA IDENTITY の設定を表示します。
        SELECT CASE relreplident
          WHEN 'd' THEN 'default'
          WHEN 'n' THEN 'nothing'
          WHEN 'f' THEN 'full'
          WHEN 'i' THEN 'index'
          END AS replica_identity
        FROM pg_class
        WHERE oid = 'mytablename'::regclass;
        
        -- REPLICA IDENTITY の設定を変更します。
        ALTER TABLE mytablename REPLICA IDENTITY FULL;
      • アカウントロール要件

        デフォルトでは、Amazon Web Services (AWS) の管理アカウントのみが Amazon RDS for PostgreSQL 上で rds_replication ロールを割り当てられます。このロールが割り当てられたユーザーは、論理スロットを管理し、論理スロットを使用してストリーミングデータを読み取ることができます。管理アカウント以外のアカウントを使用して論理レプリケーションを有効化する場合は、そのアカウントに rds_replication ロールを割り当てる必要があります。たとえば、<my_user> で指定されたユーザーに rds_replication ロールを割り当てることができます。スーパーユーザ権限を持つ場合にのみ、ユーザーに rds_replication ロールを割り当てられます。管理アカウント以外のアカウントを使用して初期スナップショットを作成する場合は、キャプチャ対象のテーブルに対する SELECT 権限をそのアカウントに付与する必要があります。

    • データ同期プラグイン

      データ同期には pgoutput プラグインを使用します。

自主管理 PostgreSQL データベース

  • ご利用の自主管理 PostgreSQL データベースと VVP 間のネットワーク接続

    • ご利用の自主管理 PostgreSQL データベースが Alibaba Cloud 上にデプロイされており、VVP と同じ VPC 内にある場合、ご利用の自主管理 PostgreSQL データベースと VVP 間にネットワーク接続が確立されます。

    • ご利用の自主管理 PostgreSQL データベースが Alibaba Cloud 上にデプロイされていない場合、VVP がご利用の自主管理 PostgreSQL データベースのパブリック IP アドレスにアクセスできるようにする必要があります。この場合、VPN Gateway を使用してご利用の自主管理 PostgreSQL データベースと VVP を接続する必要があります。詳細については、「Realtime Compute for Apache Flink がインターネットにアクセスする方法」をご参照ください。また、VVP がご利用の自主管理 PostgreSQL データベースにアクセスできるように、pg_hba.conf ファイルを変更する必要があります。詳細については、「pg_hba.conf ファイルの更新」をご参照ください。

  • 自主管理 PostgreSQL サーバーの構成

    • サポートされるバージョン

      PostgreSQL 9.6、PostgreSQL 10、PostgreSQL 11、PostgreSQL 12、PostgreSQL 13、PostgreSQL 14、PostgreSQL 15、および PostgreSQL 16 のデータのみを同期できます。PostgreSQL のバージョンを確認するには、select version() コマンドを実行します。

    • 論理デコーディング

      • wal_level パラメーターの値が logical であることを確認します。postgresql.conf ファイルを変更し、データベースを再起動します。

      • 同期対象のテーブルの REPLICA IDENTITY 設定が FULL であることを確認してください。

        REPLICA IDENTITY の設定を表示および変更するには、次の SQL ステートメントを実行します。

        -- REPLICA IDENTITY の設定を表示します。
        SELECT CASE relreplident
           WHEN 'd' THEN 'default'
           WHEN 'n' THEN 'nothing'
           WHEN 'f' THEN 'full'
           WHEN 'i' THEN 'index'
           END AS replica_identity
        FROM pg_class
        WHERE oid = 'mytablename'::regclass;
        
        -- REPLICA IDENTITY の設定を変更します。
        ALTER TABLE mytablename REPLICA IDENTITY FULL;
      • アカウントを作成し、データ同期の権限を付与します。

        データ同期アカウントには、REPLICATION 権限および LOGIN 権限、さらにテーブルデータを同期するための SELECT 権限が必要です。

        CREATE ROLE <replication_user> REPLICATION LOGIN;
        
        GRANT SELECT ON <table_name> TO <name>;
    • データ同期プラグイン

      デフォルトでは、pgoutput プラグインは PostgreSQL 10 以降にインストールされています。他の PostgreSQL バージョンを使用する場合や、データ同期用に他のプラグインをインストールする場合は、「Logical Decoding Output Plug-in Installation for PostgreSQL」に記載された手順に従ってください。

      同期ツールとして pgoutput プラグインを使用する場合、データ同期アカウントが同期対象のテーブルのオーナーであることを確認してください。データ同期アカウントが同期対象のテーブルのオーナーとなるようにするには、次の手順を実行します。

      -- 1. 同期グループを作成します。
      CREATE ROLE <replication_group>;
      
      -- 2. テーブルの元のオーナーを同期グループに追加します。
      GRANT REPLICATION_GROUP TO <original_owner>;
      
      -- 3. データ同期アカウントを同期グループに追加します。
      GRANT REPLICATION_GROUP TO <replication_user>;
      
      -- 4. 関連する権限を同期グループに移譲します。
      ALTER TABLE <table_name> OWNER TO REPLICATION_GROUP;
      説明

      この場合、データ同期アカウントは単一テーブルのオーナーにすぎません。そのため、WITH 句内の debezium.publication.autocreate.mode パラメーターを filtered に設定してください。各テーブルの関連権限を構成する操作が複雑な場合は、データ同期アカウントに直接 pg_monitor 権限を付与することもできます。

      GRANT pg_monitor TO <replication_user>;