Postgres から ClickHouse へのデータ取り込み(CDC を使用)
ClickPipes を使用して、ソースの Postgres データベースから ClickHouse Cloud にデータを取り込むことができます。ソースの Postgres データベースは、オンプレミス環境だけでなく、Amazon RDS、Google Cloud SQL、Azure Database for Postgres、Supabase などを含む各種クラウドサービス上にホストすることもできます。
前提条件
作業を開始する前に、まず Postgres データベースが正しく設定されていることを確認する必要があります。利用しているソース Postgres インスタンスに応じて、次のいずれかのガイドに従ってください。
-
汎用 Postgres ソース — 他の Postgres プロバイダーを利用している場合、またはセルフホストインスタンスを利用している場合はこちらを参照してください。
-
TimescaleDB — マネージドサービスまたはセルフホストインスタンスで TimescaleDB 拡張機能を使用している場合はこちらを参照してください。
PgBouncer、RDS Proxy、Supabase Pooler などの Postgres プロキシは、CDC(変更データキャプチャ)ベースのレプリケーションではサポートされていません。ClickPipes をセットアップする際には、これらを使用せず、必ず実際の Postgres データベースの接続情報を指定してください。
ソース Postgres データベースのセットアップが完了したら、ClickPipe の作成に進みます。
ClickPipe の作成
ClickHouse Cloud アカウントにログインしていることを確認してください。まだアカウントがない場合は、こちらからサインアップできます。
- ClickHouse Cloud コンソールで、対象の ClickHouse Cloud サービスに移動します。

- 左側のメニューで
Data Sourcesボタンを選択し、「Set up a ClickPipe」をクリックします。

-
Postgres CDCタイルを選択します。
ソース Postgres データベース接続の追加
-
事前準備のステップで構成したソース Postgres データベースの接続情報を入力します。

(オプション)AWS Private Link の設定
ソース Postgres データベースが AWS 上でホストされている場合は、AWS Private Link を使用して接続できます。これは、データ転送をプライベートに保ちたい場合に有効です。 接続を設定するためのセットアップガイドに従ってください。
(オプション)SSH トンネリングの設定
ソース Postgres データベースがパブリックにアクセスできない場合は、SSH トンネリングの詳細を指定できます。
-
"Use SSH Tunnelling" トグルを有効にします。
-
SSH 接続情報を入力します。

-
キーベース認証を使用するには、"Revoke and generate key pair" をクリックして新しいキーペアを生成し、生成された公開鍵を SSH サーバー上の
~/.ssh/authorized_keysにコピーします。 -
"Verify Connection" をクリックして接続を検証します。
ClickPipes が SSH トンネルを確立できるように、SSH バスティオンホストのファイアウォールルールで ClickPipes の IP アドレスを必ず許可リストに登録してください。
接続情報の入力が完了したら、「Next」をクリックします。
レプリケーション設定の構成
-
事前準備のステップで作成したレプリケーションスロットを、ドロップダウンリストから選択してください。

詳細設定
必要に応じて詳細設定を行えます。各設定の簡単な説明は次のとおりです。
- Sync interval: ClickPipes が変更を確認するためにソースデータベースをポーリングする間隔です。これは宛先の ClickHouse サービスに影響を与えます。コストを重視するユーザーには、この値を高め(
3600以上)に設定することを推奨します。 - Parallel threads for initial load: 初回スナップショットを取得するために使用される並列ワーカーの数です。大量のテーブルがあり、初回スナップショット取得に使用される並列ワーカー数を制御したい場合に有効です。この設定はテーブルごとに適用されます。
- Pull batch size: 1 回のバッチで取得する行数です。これはベストエフォートの設定であり、すべての場合で厳密に守られるとは限りません。
- Snapshot number of rows per partition: 初回スナップショット時に各パーティションで取得される行数です。テーブル内の行数が多く、各パーティションで取得する行数を制御したい場合に有効です。
- Snapshot number of tables in parallel: 初回スナップショット時に並列で取得されるテーブル数です。大量のテーブルがあり、並列で取得するテーブル数を制御したい場合に有効です。
テーブルの構成
-
ここでは、ClickPipe の宛先データベースを選択できます。既存のデータベースを選択することも、新しいデータベースを作成することもできます。

-
ソースの Postgres データベースから、レプリケーションしたいテーブルを選択できます。テーブルを選択する際、宛先の ClickHouse データベース側でテーブル名を変更したり、特定のカラムを除外したりすることも可能です。
注記ClickHouse での
ordering keyを Postgres のprimary keyと異なる形で定義する場合は、関連する 考慮事項 をすべて必ず確認してください。
権限を確認し ClickPipe を開始する
-
権限のドロップダウンから "Full access" ロールを選択し、"Complete Setup" をクリックします。

次のステップ
PostgreSQL から ClickHouse Cloud へのデータレプリケーション用に ClickPipe をセットアップしたら、最適なパフォーマンスを得るためのクエリおよびデータモデリングに集中できます。要件に最も適した戦略を評価するには、移行ガイドを参照し、CDC ワークロードにおけるベストプラクティスについては、重複排除戦略(CDC の活用)および Ordering Keys の各ページを参照してください。
PostgreSQL CDC に関する一般的な質問やトラブルシューティングについては、Postgres FAQ ページを参照してください。