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

VeloDB CDC向けGeneric PostgreSQL Sourceセットアップ

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

サポート対象バージョン

DatabaseVersions
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


Logical Replicationの設定

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つにつき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)

User Permissions

レプリケーション権限を持つ専用の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 ログ)の読み取り
LOGINデータベースへの接続
SELECT初期スナップショットのためのTableデータの読み取り
pg_create_subscriptionPostgreSQL 15+で必要

ユーザー権限の確認

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

期待される結果:

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

Publication Setup (オプション)

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. Tableの表示:
\dt
  1. Tableから選択:
SELECT * FROM your_table LIMIT 5;
  1. レプリケーションステータスを確認する:
SELECT * FROM pg_stat_replication;

次のステップ

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


参考資料