メインコンテンツまでスキップ

VeloDB CDC用の汎用PostgreSQLソース設定

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

サポートされているバージョン​

データベースバージョン
PostgreSQL10, 11, 12, 13, 14, 15, 16, 17
Amazon Aurora PostgreSQL10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x
Amazon RDS PostgreSQL10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x

参考:Flink CDC PostgreSQL Connector


論理レプリケーション設定​

PostgreSQL設定ファイル(postgresql.conf)に以下を追加または変更してください:

# Enable logical replication (required for CDC)
wal_level = logical

# Number of replication slots (at least 1 per CDC connection)
max_replication_slots = 4

# Number of WAL sender processes (at least 1 per CDC connection)
max_wal_senders = 4

設定パラメータ​

パラメータ必須値説明
wal_levellogical論理レプリケーションを有効にする(CDCに必要)
max_replication_slots≥ 1レプリケーションスロット数(CDCパイプラインあたり1つ)
max_wal_senders≥ 1WAL送信プロセス数

PostgreSQLの再起動​

postgresql.confを変更した後、PostgreSQLを再起動してください:

# SystemD (Ubuntu/Debian/CentOS)
sudo systemctl restart postgresql

# macOS (Homebrew)
brew services restart postgresql@16

# Docker
docker restart <container_name>

設定の確認​

SHOW wal_level;
SHOW max_replication_slots;
SHOW max_wal_senders;

期待される結果:

    wal_level
-----------------
logical
(1 row)

max_replication_slots
-----------------------
4
(1 row)

max_wal_senders
-----------------
4
(1 row)

ユーザー権限​

レプリケーション権限を持つ専用のCDCユーザーを作成します:

CREATE USER cdc_user WITH REPLICATION LOGIN PASSWORD 'your_password';

-- Grant schema usage
GRANT USAGE ON SCHEMA public TO cdc_user;

-- Grant SELECT on all existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO cdc_user;

-- Grant SELECT on future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO cdc_user;

PostgreSQL 15以降の場合​

PostgreSQL 15以降では追加の権限が必要です:

GRANT pg_create_subscription TO cdc_user;

必要な権限​

権限目的
REPLICATIONCDCのためのWAL(Write-Ahead Log)の読み取り
LOGINデータベースへの接続
SELECT初期スナップショットのためのテーブルデータの読み取り
pg_create_subscriptionPostgreSQL 15+で必要

ユーザー権限の確認​

SELECT usename, userepl FROM pg_user WHERE usename = 'cdc_user';

期待される結果:

  usename  | userepl
-----------+---------
cdc_user | t
(1 row)

Publication設定(オプション)​

Aurora/RDSまたは本番環境では、手動でpublicationを作成してください:

-- As superuser (postgres)
CREATE PUBLICATION velodb_publication FOR ALL TABLES;

公開の確認:

SELECT * FROM pg_publication WHERE pubname = 'velodb_publication';

REPLICA IDENTITY (DELETE操作に必要)​

DELETE操作の完全な行データをキャプチャするには:

ALTER TABLE your_table_name REPLICA IDENTITY FULL;

注意: REPLICA IDENTITY FULLがない場合、DELETEイベントは主キーのみを含みます。


接続テスト​

CDCユーザーが以下を実行できることを確認してください:

  1. PostgreSQLに接続:
psql -h <host> -p 5432 -U cdc_user -d your_database
  1. テーブルの表示:
\dt
  1. テーブルから選択:
SELECT * FROM your_table LIMIT 5;
  1. レプリケーションステータスを確認する:
SELECT * FROM pg_stat_replication;

次のステップ​

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


ソース​