サポート対象のPostgresバージョン
ClickPipes は Postgres バージョン 12 以降をサポートしています。
論理レプリケーションを有効にする
-
Postgresインスタンスでレプリケーションを有効にするには、まず以下の設定になっていることを確認する必要があります。
wal_level = logicalこれを確認するには、次のSQLコマンドを実行します。
SHOW wal_level;デフォルトでは、出力は
logicalになっているはずです。そうでない場合は、PlanetScaleコンソールにログインし、Cluster configuration->Parametersに移動してWrite-ahead logまでスクロールし、設定を変更してください。

- また、設定
max_slot_wal_keep_sizeはデフォルトの4GBから増やすことを推奨します。これも PlanetScaleコンソールでCluster configuration->Parametersに移動し、Write-ahead logまでスクロールして設定します。新しい値の決め方については、こちらを参照してください。

権限と publication を持つユーザーの作成
デフォルトの postgres.<...> ユーザーを使用して PlanetScale Postgres インスタンスに接続し、以下のコマンドを実行します。
-
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 トラフィックが増加し、レプリケーション全体の効率が低下するためです。
注意事項
- PlanetScale Postgres に接続するには、現在のブランチを先ほど作成したユーザー名の末尾に追加する必要があります。たとえば、作成したユーザー名が
clickpipes_userの場合、ClickPipe の作成時に指定する実際のユーザー名はclickpipes_user.branchである必要があります。ここでbranchは、現在の PlanetScale Postgres ブランチの "id" を指します。これをすばやく確認するには、先ほどユーザー作成時に使用したpostgresユーザーのユーザー名を参照してください。ピリオド以降の部分がブランチ ID です。 - PlanetScale Postgres に接続する CDC パイプでは、
PSBouncerポート (現在は6432) を使用しないでください。通常のポート5432を使用する必要があります。初回ロードのみのパイプでは、どちらのポートも使用できます。 - 接続先は必ずプライマリ インスタンスのみにしてください。現在、レプリカ インスタンスへの接続はサポートされていません。
次は?
これで、ClickPipe を作成 して、Postgres インスタンスから ClickHouse Cloud へのデータ取り込みを開始できます。 ClickPipe の作成時に必要になるため、Postgres インスタンスのセットアップ時に使用した接続情報は必ず控えておいてください。