ClickHouse Cloud ユーザーには、PostgreSQL から ClickHouse へのレプリケーションには ClickPipes の使用を推奨します。これは、PostgreSQL 向けの高性能な CDC (変更データキャプチャ) をネイティブにサポートしています。
このテーブルエンジンは実験的機能です。使用するには、設定ファイルで
allow_experimental_materialized_postgresql_table を 1 に設定するか、SET コマンドを使用してください。materialized_postgresql_tables_list 設定を使用することを強く推奨します (今後はデータベース schema の追加も可能になる予定です) 。その方が、CPU 使用量、接続数、リモート PostgreSQL データベース内のレプリケーションスロット数の面で大幅に効率的です。
テーブルの作成
host:port— PostgreSQLサーバーのアドレス。database— リモートデータベース名。table— リモートテーブル名。user— PostgreSQLユーザー。password— ユーザーのパスワード。
要件
-
PostgreSQL の設定ファイルで、wal_level の値を
logicalに設定し、max_replication_slotsパラメータの値を少なくとも2に設定する必要があります。 -
MaterializedPostgreSQLエンジンを使用するテーブルには、PostgreSQL テーブルの replica identity index (デフォルトでは主キー) と同じ主キーが必要です (replica identity index の詳細を参照) 。 - 使用できるのは Atomic データベースのみです。
-
MaterializedPostgreSQLテーブルエンジンは、実装上 PostgreSQL の pg_replication_slot_advance 関数を必要とするため、PostgreSQL バージョン 11 以上でのみ動作します。
仮想カラム
-
_version— トランザクションカウンター。Type: UInt64。 -
_sign— 削除マーク。Type: Int8。設定可能な値:1— 行は削除されていません。-1— 行は削除されています。
SELECT クエリから常に参照できます。
_version カラムは WAL 内の LSN の位置に対応するため、レプリケーションがどの程度最新かを確認する際に使用できます。
TOAST の値のレプリケーションには対応していません。代わりに、データ型のデフォルト値が使用されます。