MaterializedPostgreSQL
ClickHouse Cloudのユーザーは、PostgreSQLのレプリケーションのためにClickPipesを使用することをお勧めします。これにより、PostgreSQLのために高性能な変更データキャプチャ(CDC)がネイティブにサポートされます。
PostgreSQLテーブルの初期データダンプを使用してClickHouseテーブルを作成し、レプリケーションプロセスを開始します。つまり、リモートPostgreSQLデータベース内のPostgreSQLテーブルでの新しい変更が発生するたびに適用する背景ジョブを実行します。
このテーブルエンジンは実験的です。使用するには、設定ファイルにallow_experimental_materialized_postgresql_tableを1に設定するか、SETコマンドを使用して設定してください:
複数のテーブルが必要な場合、テーブルエンジンの代わりにMaterializedPostgreSQLデータベースエンジンを使用し、レプリケーションされるテーブルを指定するmaterialized_postgresql_tables_list設定を使用することを強くお勧めします(データベースのschemaを追加することも可能)。これにより、CPU使用率が向上し、接続数が減少し、リモートPostgreSQLデータベース内のレプリケーションスロットも少なくなります。
テーブルの作成
エンジンパラメータ
host:port— PostgreSQLサーバーのアドレス。database— リモートデータベースの名前。table— リモートテーブルの名前。user— PostgreSQLユーザー。password— ユーザーパスワード。
要件
-
wal_level の設定は
logicalでなければならず、max_replication_slotsパラメータはPostgreSQL設定ファイル内で少なくとも2以上でなければなりません。 -
MaterializedPostgreSQLエンジンを持つテーブルは、PostgreSQLテーブルのレプリカアイデンティティインデックス(デフォルトでは:主キー)と同じ主キーを持たなければなりません(レプリカアイデンティティインデックスの詳細を参照)。 -
データベースはAtomicのみが許可されています。
-
MaterializedPostgreSQLテーブルエンジンは、実装がpg_replication_slot_advance PostgreSQL関数を必要とするため、PostgreSQLバージョン>= 11でのみ機能します。
仮想カラム
これらのカラムはテーブル作成時に追加する必要はありません。SELECTクエリで常にアクセスできます。
_versionカラムはWALのLSN位置に等しいため、レプリケーションがどれくらい最新の状態であるかを確認するために使用できます。
TOAST値のレプリケーションはサポートされていません。データ型のデフォルト値が使用されます。