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

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

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

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

このコマンドのレプリケーションは、 DDLDDL構成の影響を受けます。

概要
^^^^

.. 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の新しいバージョンでは自動的に削除される可能性があります。これは、 :ref:`ddl filters <Replication sets>` 

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

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