MaterializedPostgreSQL
ClickHouse Cloudユーザーは、PostgreSQLをClickHouseにレプリケーションするためにClickPipesの使用を推奨します。これはPostgreSQLの高性能なChange Data Capture (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
テーブルエンジンは、PostgreSQLバージョン>= 11でのみ動作します。これは実装がpg_replication_slot_advance PostgreSQL関数を必要とするためです。
仮想カラム
これらのカラムはテーブル作成時に追加する必要はありません。常にSELECT
クエリでアクセスできます。
_version
カラムはWAL
内のLSN
位置と等しく、レプリケーションの最新状態を確認するために使用できます。
TOAST値のレプリケーションはサポートされていません。データ型のデフォルト値が使用されます。