VeloDB CDC用汎用PostgreSQLソース設定
このガイドでは、Flink CDCを使用してVeloDBとCDC(Change Data Capture)同期を行うために必要なPostgreSQLサーバー設定について説明します。
サポート対象バージョン
| Database | Versions |
|---|---|
| PostgreSQL | 10, 11, 12, 13, 14, 15, 16, 17 |
| Amazon Aurora PostgreSQL | 10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x |
| Amazon RDS PostgreSQL | 10.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_level | logical | 論理レプリケーションを有効化(CDCに必要) |
max_replication_slots | ≥ 1 | レプリケーションスロット数(CDCパイプラインあたり1つ) |
max_wal_senders | ≥ 1 | WALセンダープロセス数 |
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;
必要な権限
| 権限 | 目的 |
|---|---|
REPLICATION | CDCのためのWAL (Write-Ahead ログ) の読み取り |
LOGIN | データベースへの接続 |
SELECT | 初期スナップショットのためのTableデータの読み取り |
pg_create_subscription | PostgreSQL 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ユーザーが以下を実行できることを確認してください:
- PostgreSQLへの接続:
psql -h <host> -p 5432 -U cdc_user -d your_database
- ビューTable:
\dt
- Tableから選択:
SELECT * FROM your_table LIMIT 5;
- レプリケーションステータスの確認:
SELECT * FROM pg_stat_replication;
次のステップ
PostgreSQLがCDC用に設定されたら、Flink CDC Ingestion Guideに従ってVeloDBへのリアルタイム同期を設定してください。