PostgreSQL 統合タスク
このページでは、PostgreSQL データベースから TiDB Cloud Lake にデータを同期する PostgreSQL 統合タスクを作成する方法について説明します。PostgreSQL タスクは、完全な Snapshot ロード、継続的な Change Data Capture (CDC)、またはその両方の組み合わせをサポートします。
まず再利用可能な PostgreSQL 接続設定を作成する必要がある場合は、PostgreSQL - Credentials を参照してください。
同期モード
前提条件
PostgreSQL データ統合を設定する前に、PostgreSQL インスタンスが次の要件を満たしていることを確認してください。
- PostgreSQL - Credentials データソースがすでに作成されていること
- 対象の PostgreSQL インスタンスに TiDB Cloud Lake から到達できること
- PostgreSQL バージョン 10 以降
論理レプリケーションを有効にする
CDC および Snapshot + CDC モードでは、PostgreSQL WAL (Write-Ahead Log) のレベルを logical に設定する必要があります。
wal_level = logical
max_replication_slots = 4
max_wal_senders = 4
設定を変更した後、変更を有効にするために PostgreSQL を再起動してください。
専用ユーザーを作成する(推奨)
データレプリケーションに必要な権限を持つ PostgreSQL ユーザーを作成します。
CREATE USER lake_cdc WITH PASSWORD 'your_password' REPLICATION;
GRANT CONNECT ON DATABASE your_database TO lake_cdc;
GRANT USAGE ON SCHEMA public TO lake_cdc;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO lake_cdc;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO lake_cdc;
パブリケーションとレプリケーションスロットを作成する(CDC に必須)
CDC および Snapshot + CDC モードでは、パブリケーションとレプリケーションスロットが存在している必要があります。CREATE PUBLICATION ... FOR ALL TABLES にはスーパーユーザー権限が必要であり、個別のテーブルを追加するにはテーブル所有者である必要があるため、これらのオブジェクトは CDC タスクを開始する前にデータベース所有者またはスーパーユーザーが作成する必要があります。
次のコマンドをスーパーユーザーまたはデータベース所有者として実行してください。
-- Create a publication that includes the tables you want to replicate
CREATE PUBLICATION bend_cdc_pub FOR ALL TABLES;
-- Create a logical replication slot
SELECT * FROM pg_create_logical_replication_slot('bend_cdc_slot', 'pgoutput');
-- Grant the dedicated user permission to use the replication slot
ALTER ROLE lake_cdc WITH REPLICATION;
ネットワークアクセス
PostgreSQL インスタンスに TiDB Cloud Lake からアクセスできることを確認してください。ファイアウォールルールとセキュリティグループを確認し、PostgreSQL ポートへの受信接続を許可してください。
PostgreSQL 統合タスクの作成
ステップ 1: 基本情報
Data > Data Integration に移動し、Create Task をクリックします。
基本設定を構成します。
Snapshot モードのオプション
Snapshot モードを使用する場合は、追加のオプションを利用できます。
- Snapshot WHERE Condition: スナップショット中にデータをフィルタリングする SQL WHERE 句です(例:
created_at > '2024-01-01')。これにより、ソースデータの一部のみをロードできます。
ステップ 2: データのプレビュー
基本設定を構成した後、Next をクリックしてソースデータをプレビューします。
システムは選択した PostgreSQL テーブルからサンプル行を取得し、カラム名とデータ型を表示します。続行する前に、正しいテーブルとカラムが選択されていることを確認してください。
ステップ 3: ターゲットテーブルの設定
TiDB Cloud Lake 内の宛先を構成します。
システムはソースカラムをターゲットテーブルスキーマに自動的にマッピングします。カラムマッピングを確認し、Create をクリックして統合タスクの作成を完了します。
同期モードごとのタスクの動作
CDC タスクでは、停止時に現在の LSN (Log Sequence Number) がチェックポイントとして保存されるため、再起動時に中断した位置からタスクを再開できます。
同期モードの詳細
Snapshot
Snapshot モードでは、ソーステーブルを 1 回だけ完全に読み取り、すべてのデータを TiDB Cloud Lake 内のターゲットテーブルにロードします。
ユースケース:
- PostgreSQL から TiDB Cloud Lake への初期データ移行
- 定期的な完全データ更新
- WHERE 条件フィルタリングを使用した 1 回限りのデータインポート
特長:
- WHERE 条件フィルタリングをサポートし、データの一部をロード可能
- 完了後にタスクは自動的に停止
CDC (Change Data Capture)
CDC モードでは、論理レプリケーションを介して PostgreSQL WAL (Write-Ahead Log) を継続的に監視し、ソーステーブルのリアルタイムな行レベル変更(INSERT、UPDATE、DELETE)を取得します。
ユースケース:
- リアルタイムデータレプリケーション
- 運用中の PostgreSQL データベースと TiDB Cloud Lake の同期維持
- イベント駆動型データパイプライン
仕組み:
- 論理レプリケーションスロットを使用して PostgreSQL に接続します
pgoutputプラグインを介してリアルタイムに行レベルの変更を取得します- 変更を TiDB Cloud Lake 内の生のステージングテーブルに書き込みます
- 主キーを使用して、変更を定期的にターゲットテーブルへマージします
- クラッシュリカバリのためにチェックポイント(LSN 位置)を保存します
Snapshot + CDC
このモードは両方のアプローチを組み合わせたものです。最初にソーステーブルの完全なスナップショットを実行し、その後シームレスに CDC モードへ移行して継続的に変更を取得します。これはほとんどのデータ統合シナリオで推奨されるモードであり、完全な初期データロードと、その後の継続的なリアルタイム同期を実現します。
詳細設定
Primary Key
主キーは、CDC 中の MERGE 操作に使用される一意識別カラムを指定します。変更イベントが取得されると、TiDB Cloud Lake はこのキーを使用して、新しい行を挿入するか既存の行を更新するかを判断します。通常は、ソーステーブルの主キーを指定します。
Sync Interval
同期間隔(秒)は、取得した変更をターゲットテーブルにどのくらいの頻度でマージするかを制御します。間隔を短くするとレイテンシーは低くなりますが、リソース使用量が増える可能性があります。デフォルト値の 3 秒は、ほとんどのワークロードに適しています。
Batch Size
データロード中にバッチごとに処理する行数を制御します。この値を調整することで、大きなテーブルに対するスループットを最適化できます。システムデフォルトを使用する場合は空欄のままにしてください。
Allow Delete
有効にすると(CDC モードのデフォルト)、PostgreSQL WAL から取得した DELETE 操作が TiDB Cloud Lake 内のターゲットテーブルに適用されます。無効にすると、削除は無視され、ターゲットテーブルにはすべての履歴レコードが保持されます。これは、完全な監査証跡を維持したいシナリオで役立ちます。