ClickPipes は Postgres バージョン 12 以降をサポートしています。
論理レプリケーションを有効にする
-
Postgres インスタンスでレプリケーションを有効にするには、まず以下の設定になっていることを確認してください。
wal_level = logical確認するには、次の SQL コマンドを実行します。
SHOW wal_level;出力は
logicalである必要があります。そうでない場合は、次を実行します。ALTER SYSTEM SET wal_level = logical; -
また、Postgres インスタンスでは以下の設定にしておくことを推奨します。
max_wal_senders > 1 max_replication_slots >= 4確認するには、次の SQL コマンドを実行します。
SHOW max_wal_senders; SHOW max_replication_slots;値が推奨値を満たしていない場合は、次の SQL コマンドを実行して設定できます。
ALTER SYSTEM SET max_wal_senders = 10; ALTER SYSTEM SET max_replication_slots = 10; -
上記の設定を変更した場合、変更を反映するには Postgres インスタンスを再起動する必要があります。
権限とパブリケーションを持つユーザーの作成
管理者ユーザーとして 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; -
レプリケートしたいテーブルを含む パブリケーション を作成します。パフォーマンスのオーバーヘッドを避けるため、パブリケーション には必要なテーブルのみを含めることを強く推奨します。
-
特定のテーブルに対する パブリケーション を作成するには:
CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;-
特定のスキーマ内のすべてのテーブルに対する パブリケーション を作成するには:
CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
-
clickpipes パブリケーション は、変更イベントが ClickPipes にストリーミングされるテーブルの集合を定義します。すべてのテーブルをレプリケートする場合を除き、FOR ALL TABLES の使用は推奨しません。不要なテーブルを含めると、Postgres から ClickPipes への WAL トラフィックが増加し、レプリケーション全体の効率が低下するためです。
pg_hba.conf で ClickPipes ユーザーへの接続を有効にする
セルフホスト環境では、以下の手順に従って、ClickPipes の IP アドレスから ClickPipes ユーザーへの接続を許可する必要があります。マネージドサービスを使用している場合も、プロバイダーのドキュメントに従って同様に設定できます。
-
pg_hba.confファイルに必要な変更を加え、ClickPipes の IP アドレスから ClickPipes ユーザーへの接続を許可します。pg_hba.confファイルのエントリ例は次のとおりです。host all clickpipes_user 0.0.0.0/0 scram-sha-256 -
変更を反映するには、PostgreSQL インスタンスをリロードします。
SELECT pg_reload_conf();
max_slot_wal_keep_size を増やす
これは、大規模なトランザクションやコミットによってレプリケーションスロットが削除されるのを防ぐための推奨設定です。
postgresql.conf ファイルを更新して、PostgreSQL インスタンスの max_slot_wal_keep_size パラメータをより大きな値 (少なくとも 100GB または 102400) に引き上げることができます。
max_slot_wal_keep_size = 102400変更を反映するには、Postgres インスタンスを再読み込みします:
SELECT pg_reload_conf();次は?
これで、ClickPipe を作成して、Postgres インスタンスから ClickHouse Cloud へのデータの取り込みを開始できます。 ClickPipe の作成時に必要になるため、Postgres インスタンスのセットアップ時に使用した接続情報は必ず控えておいてください。