レプリケーションオブジェクトの定義
レプリケーションオブジェクトは、中央管理ノードで関数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コマンド”を参照してください。