Replication set management
==========================

..  Note Replication management and DDL::
   `bdr.alter_node_replication_sets` を除き、次のファンクションは`DDL` とみなされます。 DDLレプリケーションとグローバルロックが現在アクティブな場合、それらに適用されます。 :ref:`Running DDL safely <Running DDL safely>`  を参照してください。

bdr.create_replication_set
--------------------------

この機能は、レプリケーションセットを作成します。

このコマンドのレプリケーションは、
DDLフィルタリング設定を含むDDLレプリケーション構成の影響を受けます。

概要
^^^^

.. code:: sql

   bdr.create_replication_set(set_name name,
                              replicate_insert boolean DEFAULT true,
                              replicate_update boolean DEFAULT true,
                              replicate_delete boolean DEFAULT true,
                              replicate_truncate boolean DEFAULT true,
                              autoadd_tables boolean DEFAULT false,
                              autoadd_existing boolean DEFAULT true)

パラメーター
^^^^^^^^^^^^

- ``set_name`` - 新しいレプリケーションセットの名前。
  PGDグループ全体で一意である必要があります。

- ``replicate_insert`` -
  このレプリケーションセットのテーブルへの挿入をレプリケートするかどうかを示します。

- ``replicate_update`` -
  このレプリケーションセット内のテーブルの更新をレプリケートするかどうかを示します。

- ``replicate_delete`` -
  このレプリケーションセットのテーブルからの削除をレプリケートするかどうかを示します。

- ``replicate_truncate`` -
  このレプリケーションセット内のテーブルのトランケートをレプリケートするかどうかを示します。

- ``autoadd_tables`` -
  新しく作成される将来のテーブルをこのレプリケーションセットにレプリケートするかどうかを示します

- ``autoadd_existing`` -
  既存のすべてのユーザーテーブルをこのレプリケーションセットに追加するかどうかを示します。このパラメーターは、
  ``autoadd_tables`` が\ ``true``
  に設定されている場合にのみ効果があります。

注
^^

デフォルトでは、新しいレプリケーションセットはDDLまたはPGD管理ファンクション呼び出しをレプリケートしません。レプリケーションセットのDDLレプリケーションを設定する方法については、
:ref:`DDL filters <Replication sets>` を参照してください。既存のDDLフィルターは、すべてのDDLおよび管理ファンクション呼び出しをレプリケートするデフォルトのグループレプリケーションセットに設定されます。これは、グループの作成時に作成されますが、
PGDグループのデフォルトレプリケーションセットでDDLまたはPGD管理ファンクション呼び出しをレプリケートしたくない場合にドロップできます。

このファンクションは、 ``DDL``
ステートメントと同じレプリケーションメカニズムを使用します。これは、レプリケーションが :ref:`DDL filters <Replication sets>` の影響を受けることを意味します

構成。

ファンクションは\ ``DDL`` グローバルロックを取得します。

このファンクションはトランザクションです。トランザクションの\ ``ROLLBACK``
を使用してエフェクトをロールバックできます。変更は現在のトランザクションに表示されます。

bdr.alter_replication_set
-------------------------

この機能は、既存のレプリケーションセットのオプションを変更します。

このコマンドのレプリケーションは、
DDLフィルタリング設定を含むDDLレプリケーション構成の影響を受けます。

.. _概要-1:

概要
^^^^

.. code:: sql

   bdr.alter_replication_set(set_name name,
                             replicate_insert boolean DEFAULT NULL,
                             replicate_update boolean DEFAULT NULL,
                             replicate_delete boolean DEFAULT NULL,
                             replicate_truncate boolean DEFAULT NULL,
                             autoadd_tables boolean DEFAULT NULL)

.. _パラメーター-1:

パラメーター
^^^^^^^^^^^^

- ``set_name`` - 既存のレプリケーションセットの名前。

- ``replicate_insert`` -
  このレプリケーションセットのテーブルへの挿入をレプリケートするかどうかを示します。

- ``replicate_update`` -
  このレプリケーションセット内のテーブルの更新をレプリケートするかどうかを示します。

- ``replicate_delete`` -
  このレプリケーションセットのテーブルからの削除をレプリケートするかどうかを示します。

- ``replicate_truncate`` -
  このレプリケーションセット内のテーブルのトランケートをレプリケートするかどうかを示します。

- ``autoadd_tables`` -
  新しく作成される将来のテーブルをこのレプリケーションセットに追加するかどうかを示します。

NULLデフォルトに設定されているオプションは、以前と同じままです。

.. _注-1:

注
^^

このファンクションは、 ``DDL``
ステートメントと同じレプリケーションメカニズムを使用します。これは、レプリケーションが :ref:`DDL filters <Replication sets>` の影響を受けることを意味します

構成。

ファンクションは\ ``DDL`` グローバルロックを取得します。

このファンクションはトランザクションです。トランザクションの\ ``ROLLBACK``
を使用してエフェクトをロールバックできます。変更は現在のトランザクションに表示されます。

bdr.drop_replication_set
------------------------

この機能は、既存のレプリケーションセットを削除します。

このコマンドのレプリケーションは、
DDLフィルタリング設定を含むDDLレプリケーション構成の影響を受けます。

.. _概要-2:

概要
^^^^

.. code:: sql

   bdr.drop_replication_set(set_name name)

.. _パラメーター-2:

パラメーター
^^^^^^^^^^^^

- ``set_name`` - 既存のレプリケーションセットの名前。

.. _注-2:

注
^^

このファンクションは、 ``DDL``
ステートメントと同じレプリケーションメカニズムを使用します。これは、レプリケーションが :ref:`ddl filters <Replication sets>` の影響を受けることを意味します

構成。

ファンクションは\ ``DDL`` グローバルロックを取得します。

このファンクションはトランザクションです。トランザクションの\ ``ROLLBACK``
を使用してエフェクトをロールバックできます。変更は現在のトランザクションに表示されます。

..  Warning::
   少なくとも別のノードで使用されているレプリケーションセットを削除しないでください。削除すると、そのノードでレプリケーションが停止します。これが発生した場合は、影響を受けるノードをそのレプリケーションセットからサブスクライブ解除します。同じ理由で、参加されるノードがそのレプリケーションセットのメンバーである場合、参加操作が進行中のレプリケーションセットをドロップしないでください。レプリケーションセットのメンバーシップは、結合の開始時にのみチェックされます。これは、レプリケーションセットの使用状況に関する情報が各ノードにローカルであるため、グループに参加する前にノードで構成できるために発生します。

``alter_node_replication_sets``
を使用して、ノードのレプリケーションセットのサブスクリプションを管理できます。

bdr.alter_node_replication_sets
-------------------------------

この機能は、ノードが公開およびサブスクライブするレプリケーションセットを変更します。

.. _概要-3:

概要
^^^^

.. code:: sql

   bdr.alter_node_replication_sets(node_name name,
                                   set_names text[])

.. _パラメーター-3:

パラメーター
^^^^^^^^^^^^

- ``node_name`` -
  変更するノード。現在はローカルノードである必要があります。

- ``set_names`` -
  指定されたノードにレプリケートするレプリケーションセットの配列。空の配列を使用すると、グループのデフォルトレプリケーションセットが使用されます。

.. _注-3:

注
^^

このファンクションはローカルノードでのみ実行され、どのような方法でもレプリケートされません。

このファンクションはノードが参加する前に実行するように設計されているため、リストされたレプリケーションセットの存在はチェックされません。エラーを回避するには、レプリケーションセット名を正しく指定するように注意してください。

この動作により、PGDグループの一部であるノードでだけでなく、まだグループに参加していないノードでもファンクションを呼び出すことができます。このアプローチでは、結合中に同期されるデータを制限します。ただし、スキーマは、レプリケーションセット設定に関係なく、常に完全に同期されます。レプリケーションセットで指定されたテーブルだけでなく、すべてのテーブルがコピーされます。
``bdr.tables``
カタログテーブルを参照して、不要なテーブルを削除できます。
(これらはPGDの後のバージョンでは自動的に削除される可能性があります。これは現在trueです。 :ref:`DDL filters <Replication sets>` 

それ以外の場合、構成はDDLのレプリケーションを防止します。

この呼び出しの後にノードがサブスクライブするレプリケーションセットは、他のノードからこのファンクションが実行されるノードに変更を実際にレプリケートするために他のノードによって公開されます。
