メインコンテンツまでスキップ
メインコンテンツまでスキップ

Postgres ClickPipeの同期制御

このドキュメントでは、ClickPipeがCDC (実行中) モードにあるときのPostgres ClickPipeの同期を制御する方法について説明します。

概要

データベースのClickPipeは、ソースデータベースからデータをプルし、ターゲットデータベースにプッシュする2つの並行プロセスで構成されるアーキテクチャを持っています。プルプロセスは、データをどのくらいの頻度でプルするか、また一度にどれだけのデータをプルするかを定義した同期設定によって制御されます。「一度に」というのは、バッチを意味します ― ClickPipeはデータをバッチでプルおよびプッシュします。

Postgres ClickPipeの同期を制御する方法は主に2つあります。以下の設定のいずれかが有効になると、ClickPipeはプッシュを開始します。

同期間隔

パイプの同期間隔は、ClickPipeがソースデータベースからレコードをプルする時間(秒単位)です。ClickHouseにプッシュするための時間は、この間隔には含まれません。

デフォルトは1分です。 同期間隔は任意の正の整数値に設定できますが、10秒以上に保つことを推奨します。

プルバッチサイズ

プルバッチサイズは、ClickPipeが一度のバッチでソースデータベースからプルするレコードの数です。レコードとは、パイプの一部であるテーブルで行われた挿入、更新、削除を意味します。

デフォルトは100,000レコードです。 安全な最大値は1000万です。

例外:ソースでの長時間トランザクション

ソースデータベースでトランザクションが実行されると、ClickPipeはそのトランザクションのCOMMITを受信するまで進行を待ちます。これは、同期間隔とプルバッチサイズのオーバーライドを伴います。

同期設定の構成

ClickPipeを作成するか、既存のClickPipeを編集する際に、同期間隔とプルバッチサイズを設定できます。 ClickPipeを作成する際、以下のように作成ウィザードの第2ステップで表示されます。

同期設定を作成

既存のClickPipeを編集する際には、パイプの設定タブに移動し、パイプを一時停止した後、ここで構成をクリックします:

同期構成ボタンを編集

これにより、同期設定が表示されるフライアウトが開き、同期間隔とプルバッチサイズを変更できます:

同期設定を編集

レプリケーションスロットの成長に対応するための同期設定の微調整

CDCパイプの大規模なレプリケーションスロットを扱うために、これらの設定を使用する方法についてお話ししましょう。 ClickHouseへのプッシュ時間は、ソースデータベースからのプル時間と線形にスケールしません。これを活用して、大きなレプリケーションスロットのサイズを削減できます。 同期間隔とプルバッチサイズの両方を増やすことで、ClickPipeはソースデータベースから大量のデータを一度にプルし、その後ClickHouseにプッシュします。

同期制御の動作を監視する

ClickPipeのメトリクスタブにあるCDC Syncsテーブルで、各バッチにかかる時間を確認できます。ここでの時間にはプッシュ時間が含まれており、行が入ってこない場合、ClickPipeは待機し、その待機時間も期間に含まれます。

CDC Syncsテーブル