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

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;

必要な権限

PrivilegePurpose
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へのリアルタイム同期を設定してください。


参考資料