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

VeloDB CDC用汎用PostgreSQLソース設定

このガイドでは、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つ)
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;

For 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設定(オプション)

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


ソース