4.1 KiB
slug | sidebar_position | sidebar_label |
---|---|---|
/ja/engines/table-engines/integrations/materialized-postgresql | 130 | MaterializedPostgreSQL |
[エクスペリメンタル] MaterializedPostgreSQL
PostgreSQL テーブルの初期データダンプを作成し、レプリケーションプロセスを開始します。つまり、リモートの PostgreSQL データベース内の PostgreSQL テーブルで発生した新しい変更を逐次適用するためのバックグラウンドジョブを実行します。
:::note
このテーブルエンジンはエクスペリメンタルです。使用するには、設定ファイルまたは SET
コマンドを使用して allow_experimental_materialized_postgresql_table
を 1 に設定します:
SET allow_experimental_materialized_postgresql_table=1
:::
複数のテーブルが必要な場合は、テーブルエンジンではなくMaterializedPostgreSQL データベースエンジンを使用し、レプリケートするテーブルを指定する materialized_postgresql_tables_list
設定(データベーススキーマ
も追加可能になります)を使用することを強くお勧めします。これにより、CPU の観点で非常に優れ、リモート PostgreSQL データベース内の接続数とレプリケーションスロットが少なくて済みます。
テーブルの作成
CREATE TABLE postgresql_db.postgresql_replica (key UInt64, value UInt64)
ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgresql_table', 'postgres_user', 'postgres_password')
PRIMARY KEY key;
エンジンパラメータ
host:port
— PostgreSQL サーバーアドレス。database
— リモートデータベース名。table
— リモートテーブル名。user
— PostgreSQL ユーザー。password
— ユーザーパスワード。
要件
-
PostgreSQL の設定ファイルで、wal_level 設定は
logical
、max_replication_slots
パラメータは少なくとも2
である必要があります。 -
MaterializedPostgreSQL
エンジンを持つテーブルには、PostgreSQL テーブルのレプリカアイデンティティインデックス(デフォルトでは主キー、レプリカアイデンティティインデックスの詳細はこちら)と同じ主キーが必要です。 -
データベースAtomic のみが許可されています。
-
MaterializedPostgreSQL
テーブルエンジンは、PostgreSQL バージョンが >= 11 でのみ動作します。これは、pg_replication_slot_advance PostgreSQL 関数を必要とするためです。
バーチャルカラム
-
_version
— トランザクションカウンター。タイプ: UInt64。 -
_sign
— 削除マーク。タイプ: Int8。可能な値:1
— 行は削除されていません、-1
— 行は削除されています。
これらのカラムはテーブル作成時に追加する必要はありません。SELECT
クエリで常にアクセス可能です。_version
カラムは WAL
の LSN
位置に等しいので、レプリケーションの最新状態を確認するために使用できます。
CREATE TABLE postgresql_db.postgresql_replica (key UInt64, value UInt64)
ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgresql_replica', 'postgres_user', 'postgres_password')
PRIMARY KEY key;
SELECT key, value, _version FROM postgresql_db.postgresql_replica;
:::note TOAST 値のレプリケーションはサポートされていません。データ型のデフォルト値が使用されます。 :::