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値のレプリケーションはサポートされていません。データ型のデフォルト値が使用されます。