メインコンテンツまでスキップ
バージョン: 26.x

Aurora Serverless v2 PostgreSQL Source Setup for VeloDB CDC

このガイドでは、Flink CDCを使用してVeloDBとCDC(Change Data Capture)同期を行うためのAurora Serverless v2 PostgreSQLの設定について説明します。

サポート対象バージョン

データベースバージョン
Aurora Serverless v2 PostgreSQL13.x, 14.x, 15.x, 16.x

参考: Aurora PostgreSQL CDC


論理レプリケーションの有効化

Auroraでは、直接postgresql.confを編集する代わりにパラメータグループを使用します。

1. パラメータグループの作成

RDS > Parameter groupsに移動して、既存のパラメータグループを表示します:

Parameter Groups List

論理レプリケーションを有効にしたカスタムクラスターパラメータグループを作成します:

Create Parameter Group

重要: Auroraクラスターの場合は、タイプとしてDB Cluster Parameter Groupを選択してください(DB Parameter Groupではありません)。

aws rds create-db-cluster-parameter-group \
--db-cluster-parameter-group-name aurora-pg-cdc \
--db-parameter-group-family aurora-postgresql16 \
--description "Aurora PostgreSQL with CDC enabled"

aws rds modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name aurora-pg-cdc \
--parameters "ParameterName=rds.logical_replication,ParameterValue=1,ApplyMethod=pending-reboot"

もしくは、AWS Consoleでパラメータグループを編集し、rds.logical_replication1に設定することで構成できます:

Edit Parameter Group - rds.logical_replication

2. クラスターに適用

aws rds modify-db-cluster \
--db-cluster-identifier your-cluster-name \
--db-cluster-parameter-group-name aurora-pg-cdc \
--apply-immediately

3. Cluster の再起動

rds.logical_replication を有効にするために再起動が必要です:

aws rds reboot-db-instance --db-instance-identifier your-instance-name

設定の検証

SHOW rds.logical_replication;

期待される結果:

 rds.logical_replication
-------------------------
on
(1 row)

User Permissions

Auroraは、SUPERUSER属性の代わりに特定のロールを必要とします。

Create CDC User

-- Create user (no REPLICATION or SUPERUSER attributes)
CREATE USER cdc_user WITH LOGIN PASSWORD 'your_password';

-- Grant Aurora-specific roles
GRANT rds_replication TO cdc_user;
GRANT rds_superuser TO cdc_user;
GRANT pg_read_all_data TO cdc_user;

-- Grant database-level permissions
GRANT CONNECT ON DATABASE your_database TO cdc_user;
GRANT ALL ON DATABASE your_database TO cdc_user;

-- Grant schema permissions
GRANT USAGE ON SCHEMA public TO cdc_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO cdc_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO cdc_user;

必要なAuroraロール

ロール目的
rds_replicationレプリケーションスロットの作成とWALの読み取り
rds_superuserパブリケーションの管理(CDCに必要)
pg_read_all_data全スキーマの全Tableの読み取り

注意: Auroraマスターユーザーは完全なSUPERUSER権限を持ちません。代わりにロールを使用してください。

ユーザー権限の確認

SELECT r.rolname, ARRAY(
SELECT b.rolname
FROM pg_catalog.pg_auth_members m
JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
WHERE m.member = r.oid
) as memberof
FROM pg_roles r
WHERE r.rolname = 'cdc_user';

期待される結果:

  rolname  |                     memberof
-----------+--------------------------------------------------
cdc_user | {pg_read_all_data,rds_superuser,rds_replication}
(1 row)

Publication Setup

master user (postgres) としてpublicationを作成します:

-- As postgres user
CREATE PUBLICATION velodb_publication FOR ALL TABLES;

公開の確認:

SELECT * FROM pg_publication WHERE pubname = 'velodb_publication';

重要: Auroraを使用する際は、Flink CDCに--postgres-conf publication.name=velodb_publicationを渡してください。


REPLICA IDENTITY (DELETE操作に必要)

ALTER TABLE your_table_name REPLICA IDENTITY FULL;

Connection Test

CDC ユーザーが以下を実行できることを確認する:

  1. 接続:
psql -h your-cluster.cluster-xxxxx.us-west-2.rds.amazonaws.com -p 5432 -U cdc_user -d your_database
  1. publications一覧:
SELECT * FROM pg_publication;
  1. Tableの読み取り:
SELECT COUNT(*) FROM your_table;

次のステップ

Aurora Serverless v2がCDC用に設定されたら、Flink CDC Ingestion Guideに従ってVeloDBへのリアルタイム同期を設定してください。

忘れずに追加してください AuroraでFlink CDCを実行する際は--postgres-conf publication.name=velodb_publicationを追加してください。


ソース