これは、ClickPipes のレプリケーションに使用できる Neon Postgres のセットアップ方法を説明するガイドです。 このセットアップを行う前に、Neon console にサインインしていることを確認してください。
権限を持つユーザーの作成
管理者ユーザーとして Neon インスタンスに接続し、以下のコマンドを実行します。
-
ClickPipes 専用のユーザーを作成します。
CREATE USER clickpipes_user PASSWORD 'some-password'; -
前の手順で作成したユーザーに、スキーマレベルの読み取り専用アクセス権を付与します。以下の例は
publicスキーマに対する権限を示しています。レプリケーションしたいテーブルを含む各スキーマに対して、これらのコマンドを繰り返してください。GRANT USAGE ON SCHEMA "public" TO clickpipes_user; GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user; ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user; -
ユーザーにレプリケーション権限を付与します。
ALTER USER clickpipes_user WITH REPLICATION; -
レプリケーションしたいテーブルを含む publication を作成します。パフォーマンスへのオーバーヘッドを避けるため、publication には必要なテーブルだけを含めることを強く推奨します。
-
特定のテーブルに対する publication を作成するには:
CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;-
特定のスキーマ内のすべてのテーブルに対する publication を作成するには:
CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
-
clickpipes publication は、変更イベントが ClickPipes にストリーミングされる対象テーブルの集合を定義します。すべてのテーブルをレプリケーションする予定でない限り、FOR ALL TABLES の使用は推奨しません。不要なテーブルを含めると、Postgres から ClickPipes への WAL トラフィックが増加し、レプリケーション全体の効率が低下するためです。
論理レプリケーションを有効にする
Neon では、UI から論理レプリケーションを有効にできます。これは、ClickPipes の CDC (変更データキャプチャ) がデータをレプリケートするために必要です。 Settings タブを開き、Logical Replication セクションに移動します。

ここでは Enable をクリックすれば完了です。有効化すると、以下の成功メッセージが表示されます。

Neon Postgres インスタンスで、以下の設定を確認しましょう。
SHOW wal_level; -- should be logical
SHOW max_wal_senders; -- should be 10
SHOW max_replication_slots; -- should be 10IP の許可リスト登録 (Neon Enterprise プラン向け)
Neon Enterprise プランをご利用の場合は、ClickPipes の IP を許可リストに追加することで、ClickPipes からお使いの Neon Postgres インスタンスへのレプリケーションを許可できます。 これを行うには、Settings タブをクリックし、IP Allow セクションに移動します。

接続情報をコピーする
ユーザーと publication の準備が整い、レプリケーションも有効になったので、新しい ClickPipe を作成するために接続情報をコピーできます。 ダッシュボードに移動し、接続文字列が表示されているテキストボックスで、表示を パラメータのみ に変更します。次のステップでこれらのパラメータが必要です。

次のステップ
これで、ClickPipe を作成し、Postgres インスタンスから ClickHouse Cloud へのデータ取り込みを開始できます。 ClickPipe の作成時に必要になるため、Postgres インスタンスのセットアップ時に使用した接続情報は必ず控えておいてください。