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— ユーザーのパスワード。
TLS/SSL
libpq に渡され、named collection を通じて、またはエンジンの末尾にキー・バリュー引数として指定できます。指定できるのは sslmode (disable、allow、prefer、require、verify-ca、verify-full。未設定の場合は libpq のデフォルトである prefer が適用されます) と、2 種類の形式で指定できる証明書および秘密鍵です。sslrootcert (CA 証明書) 、sslcert (クライアント証明書) 、sslkey (クライアント秘密鍵) はサーバーローカルのファイルへのパスであり、サーバー設定ファイルで定義された named collection からのみ受け付けられます。一方、sslrootcert_pem、sslcert_pem、sslkey_pem には対応するファイルの内容をリテラルとして指定でき、SQL からも指定できます。また、パスワードと同様にログおよび SHOW クエリではマスクされます。
要件
-
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 の値のレプリケーションには対応していません。代わりに、データ型のデフォルト値が使用されます。