MaterializedPostgreSQL
ClickHouse Cloud のユーザーは、PostgreSQL から ClickHouse へのレプリケーションには ClickPipes の使用を推奨します。これは PostgreSQL に対する高性能なデータ変更キャプチャ (CDC) をネイティブにサポートしています。
ClickHouse テーブルを PostgreSQL テーブルの初期データダンプで作成し、レプリケーションプロセスを開始します。つまり、リモートの 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 値のレプリケーションはサポートされていません。データ型のデフォルト値が使用されます。