ClickPipes で使用できるように Supabase Postgres を設定する方法を説明します。
権限とレプリケーションスロットを持つユーザーを作成する
管理者ユーザーとして Supabase インスタンスに接続し、次のコマンドを実行します。
-
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 トラフィックが増加し、レプリケーション全体の効率が低下するためです。
max_slot_wal_keep_size を増やす
Supabase で使用する接続情報
Supabase プロジェクトの Project Settings -> Database (Configuration の配下) に移動します。
重要: このページで Display connection pooler を無効にし、Connection parameters セクションで各パラメータを確認またはコピーしてください。

RLS に関する注意
ClickPipes の Postgres ユーザーは、データ欠損を招くおそれがあるため、RLS ポリシーによる制限を受けないようにする必要があります。以下のコマンドを実行すると、そのユーザーに対する RLS ポリシーを無効にできます。
ALTER USER clickpipes_user BYPASSRLS;次のステップ
これで、ClickPipe を作成して、Postgres インスタンスから ClickHouse Cloud へのデータ取り込みを開始できます。 ClickPipe の作成時に必要になるため、Postgres インスタンスの設定時に使用した接続情報は必ず控えておいてください。