ページの先頭行へ戻る
Enterprise Postgres 14 SP1 スケールアウト運用ガイド
FUJITSU Software

5.2.1 レプリケーションテーブルの定義

レプリケーションオブジェクトの定義

レプリケーションオブジェクトは、中央管理ノードで関数pgx_create_replication_object()を実行することで定義できます。この関数はスーパーユーザーのみ実行可能です。

originalテーブル、replicatedテーブルの定義

originalテーブルとreplicatedテーブルは、中央管理ノードでCREATE REPLICATION TABLE文を実行することで定義できます。この操作によってレプリケーションオブジェクトが更新され、論理レプリケーションが開始します。

pgx_ddl_target_nodeパラメータが空、または、'COORDINATOR'に設定されている場合でも、'ALLNODES'に設定されている場合と同様に、全ノードにテーブルを定義します。

また、定義されたテーブルは全ノードに対するオブジェクトとして登録されます。


以下にレプリケーションテーブルの作成例を示します。

以下は、各ノードでユーザーマッピングしているすべてのユーザー名が同一である場合の例です。各ノードにマッピングされているユーザー名が異なる場合は、各ノードにマッピングされているユーザーに権限を与える、または権限を取り消す必要があります。

データベースdb1,テーブル空間space1に、ユーザーuser1でレプリケーションテーブルtbl1を定義したい場合
  -中央管理ノードにおいて、スーパーユーザーで実行
 db1=# SELECT pgx_create_replication_object();
 pgx_create_replication_object
 -------------------------------
  t
 (1 row)
 db1=# SET pgx_ddl_target_node = 'ALLNODES';
 SET
 db1=# GRANT CREATE ON TABLESPACE space1 TO user1;
 GRANT
 db1=# GRANT EXECUTE ON FUNCTION pgx_add_to_replication_object(name,name,boolean) TO user1;
 GRANT
 db1=# RESET pgx_ddl_target_node;
 RESET

  -中央管理ノードにおいて、user1で実行
 db1=> SET pgx_ddl_target_node = 'ALLNODES';
 SET
 db1=> CREATE REPLICATION TABLE tbl1(
    id      INTEGER PRIMARY KEY,
    data    TEXT
 );
 CREATE TABLE
 db1=> RESET pgx_ddl_target_node;
 RESET

pgx_create_replication_object()の詳細は“付録B システム管理関数/プロシージャ”を参照してください。

CREATE REPLICATION TABLE文の詳細は、“付録A SQLコマンド”を参照してください。