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

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

最終更新日:Nov 09, 2025

PostgreSQL Change Data Capture (CDC) コネクタを使用する前に、アップストリーム PostgreSQL データベースが特定の要件を満たす必要があります。このトピックでは、ApsaraDB RDS for PostgreSQL、Amazon RDS for PostgreSQL、および自主管理 PostgreSQL データベースに必要な構成について説明します。

背景情報

PostgreSQL CDC コネクタを使用する前に、必要な構成を実行する必要があります。PostgreSQL CDC コネクタは、PostgreSQL の論理サブスクリプションメカニズムに基づいてデータを同期します。詳細については、「Logical Decoding Concepts」および「論理サブスクリプションの原則とベストプラクティス」をご参照ください。

ApsaraDB RDS for PostgreSQL

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

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

    • 制限事項

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

    • 論理デコード

      • wal_level パラメーターを logical に設定して、論理デコーディングを有効にします。詳細については、「ApsaraDB RDS for PostgreSQL インスタンスのパラメーターを変更する」をご参照ください。パラメーターを設定した後、「論理デコーディング」ドキュメントの例に従って、この機能をテストして使用できます。

      • 同期するテーブルの `REPLICA IDENTITY` が `FULL` に設定されていることを確認してください。

        次の SQL 文を実行して、パラメーターを表示および変更できます。

        -- View the REPLICA IDENTITY.
        SELECT CASE relreplident
          WHEN'd'THEN'default'
        WHEN'n'THEN'nothing'
        WHEN'f'THEN'full'
        WHEN'i'THEN'index'
        ENDASreplica_identity
        FROMpg_class
        WHEREoid='mytablename'::regclass;
        
        -- Modify the REPLICA IDENTITY.
        ALTERTABLEmytablenameREPLICAIDENTITYFULL;
  • データ同期プラグイン

    wal2json または pgoutput 論理デコーディングプラグインを使用できます。wal2json プラグインは、RDS for PostgreSQL バージョン 11、12、および 13 のみをサポートします。pgoutput プラグインには PostgreSQL 10 以降が必要です。pgoutput および decodebuf プラグインが推奨されます。詳細については、「Postgres CDC (パブリックプレビュー)」の decoding.plugin.name パラメーターをご参照ください。

    説明

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

Amazon RDS for PostgreSQL

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

    VVP がインターネット経由で Amazon RDS for PostgreSQL インスタンスにアクセスできるようにする必要があります。詳細については、「フルマネージド Flink はどのようにインターネットにアクセスしますか?」および「セキュリティグループによるアクセスの制御」をご参照ください。

  • Amazon RDS for PostgreSQL サーバー構成

    • バージョンの制限

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

    • 論理デコード

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

      • `wal_level` パラメーターが `logical` に設定されていることを確認してください。デフォルトでは、`rds.logical_replication` が 1 に設定されている場合、`wal_level` は自動的に `logical` に設定されます。

      • 同期するテーブルの `REPLICA IDENTITY` が `FULL` に設定されていることを確認してください。

        次の SQL 文を実行して、パラメーターを表示および変更できます。

        -- View the REPLICA IDENTITY.
        SELECTCASErelreplident
         WHEN'd'THEN'default'
         WHEN'n'THEN'nothing'
         WHEN'f'THEN'full'
         WHEN'i'THEN'index'
         ENDASreplica_identity
        FROMpg_class
        WHEREoid='mytablename'::regclass;
        
        -- Modify the REPLICA IDENTITY.
        ALTERTABLEmytablenameREPLICAIDENTITYFULL;
      • アカウントロールの要件

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

    • データ同期プラグイン

      データ同期には pgoutput プラグインを使用する必要があります。

自主管理 PostgreSQL

  • 自主管理 PostgreSQL と VVP 間のネットワーク接続

    • 自主管理 PostgreSQL データベースが VVP と同じ VPC およびリージョン内の Alibaba Cloud にデプロイされている場合、それらは相互に接続できます。

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

  • PostgreSQL サーバーの構成

    • 制限事項

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

    • 論理デコード

      • `wal_level` パラメーターが `logical` に設定されていることを確認してください。これを行うには、`postgresql.conf` ファイルを変更してデータベースを再起動する必要があります。

      • 同期するテーブルの `REPLICA IDENTITY` が `FULL` に設定されていることを確認してください。

        次の SQL 文を実行して、パラメーターを表示および変更できます。

        -- View the 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;
        
        -- Modify the REPLICA IDENTITY.
        ALTER TABLE mytablename REPLICA IDENTITY FULL;
      • 同期権限を持つアカウントの作成

        データ同期アカウントには、`REPLICATION` および `LOGIN` 権限と、同期するテーブルに対する `SELECT` 権限が必要です。

        CREATE ROLE <replication_user> REPLICATION LOGIN; -- レプリケーションユーザーを作成し、REPLICATION と LOGIN 権限を付与
        
        GRANT SELECT ON <table_name> TO <name>; -- 指定されたテーブルに対する SELECT 権限を指定されたユーザーに付与
        
    • データ同期プラグイン

      pgoutput プラグインは、PostgreSQL 10 以降にデフォルトでインストールされています。他のバージョン、または他のプラグインをインストールするには、「PostgreSQL 用の出力プラグインのインストール」をご参照ください。

      pgoutput プラグインを使用する場合は、アカウントが同期するテーブルのオーナーであることを確認してください。次のステップを実行して、アカウントをオーナーとして設定できます。

      -- 1. Create a synchronization group.
      CREATE ROLE <replication_group>;
      
      -- 2. Add the original table owner to the synchronization group.
      GRANT REPLICATION_GROUP TO <original_owner>;
      
      -- 3. Add the synchronization account to the synchronization group.
      GRANT REPLICATION_GROUP TO <replication_user>;
      
      -- 4. Transfer ownership to the synchronization group.
      ALTER TABLE <table_name> OWNER TO REPLICATION_GROUP;
      説明

      この場合、同期アカウントは単一のテーブルのオーナーにすぎません。したがって、`WITH` 句で、debezium.publication.autocreate.mode パラメーターを `filtered` に設定する必要があります。各テーブルの権限設定が複雑すぎる場合は、`pg_monitor` 権限を同期アカウントに直接付与できます。

      GRANT pg_monitor TO <replication_user>; -- replication_user に pg_monitor 権限を付与