レプリケーションオブジェクトの定義
レプリケーションオブジェクトは、中央管理ノードで関数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;
RESETpgx_create_replication_object()の詳細は“付録B システム管理関数/プロシージャ”を参照してください。
CREATE REPLICATION TABLE文の詳細は、“付録A SQLコマンド”を参照してください。