Node management interfaces
==========================

SQLインターフェイスを使用して、ノードを動的に追加および削除できます。

bdr.alter_node_group_option
---------------------------

PGDノードグループ構成を変更します。

概要
^^^^

.. code:: sql

   bdr.alter_node_group_option(node_group_name text,
       config_key text,
       config_value text)

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `node_group_name`,変更するグループの名前。
  `config_key`,変更するノードグループのオプションのキー。
  `config_value`,指定されたキーに設定する新しい値。

``config_value`` は、オプションに適切なデータ型に解析されます。

この表は、この機能を使用して変更できるグループオプションを示しています。

.. csv-table::
  :header: Name,Type,Description
  :widths: 12,10,25
  :align: left
  :class: longtable

  `analytics_storage_format`,`text`,PGAAが分析データに使用する列状テーブル形式。サポートされている値は`iceberg`デフォルトまたは`delta`です。
  `analytics_storage_location`,`text`,分析データファイルが保存されるPGFSパス。主にPGAA拡張機能を介してオブジェクトストレージに直接書き込む場合に使用されます。
  `analytics_write_catalog`,`text`,PGAA拡張機能がテーブルメタデータを管理するために使用するカタログサービスの名前。
  `apply_delay`,`interval`,着信変更を適用するまでノードが待機する時間。このオプションは、主に遅延加入者専用ノードを使用して特別なサブグループを設定する場合に役立ちます。これは、データノードを含むグループまたはトップレベルのグループでは設定しないでください。デフォルトは`0s`です。
  `apply_error_max_record_size`,`bigint`,`record_all_and_disable`または`record_all_and_skip`ポリシーを使用する場合に、失敗したトランザクションごとに記録する変更データの最大バイト数。トランザクションがこの制限を超える場合、制限まででキャプチャされた変更のみが保存され、警告がログに記録されます。デフォルトは`10485760` 10MBです。
  `apply_error_max_retries`,`integer`,エラーポリシーがアクションを実行するまでの再試行回数。 `disable_after_retries`、`record_all_and_disable`、および`record_all_and_skip`ポリシーに適用されます。デフォルトは`3`です。
  `apply_error_max_skips`,`integer`,サブスクリプションを無効にする前に`record_all_and_skip`ポリシーがスキップできるトランザクションの最大数。無制限にスキップするには、 `-1`または`NULL`に設定します。デフォルトは`NULL`です。
  `apply_error_policy`,`text`,このグループのサブスクリプションのレプリケーション適用エラーが処理される方法。有効な値は`keep_retrying` 無期限に再試行し、 `disable_after_retries` `apply_error_max_retries`回まで再試行し、サブスクリプションを無効にする `record_all_and_disable` キャプチャ専用モードで再生することによりトランザクション全体を記録し、サブスクリプションを無効にする 、および`record_all_and_skip` 全体を記録トランザクション、スキップして、レプリケーションを続行します。デフォルトは`keep_retrying`です。
  `check_constraints`,`boolean`,適用プロセスがレプリケートデータを書き込むときに制約をチェックするかどうか。デフォルト値をそのまま使用することをお勧めします。そうしないと、データが失われる危険があります。有効な値は`on`または`off`です。デフォルトは`on`です。
  `default_commit_scope`,`text`,デフォルトで使用するコミットスコープ、最初は`local`コミットスコープです。このオプションは、トップレベルのノードグループにのみ適用されます。同じコミットスコープの異なるオリジングループに個々のルールを使用できます。詳細については、  :ref:`Commit scope groups<Commit scope groups>` を参照してください。
  `enable_fast_track_writer`,`boolean`,すべてのサブスクリプションの追加ライタが、クォーラムコミットによって生成された準備されたトランザクションを処理できるようにします。 Quorum Commitコミットスコープで正しく機能するために必要です。クォーラムコミットスコープが`default_commit_scope`として設定されている場合、自動的に有効になります。デフォルトは`off`です。  :ref:`pg_upgrade <pgd raft enable>` を参照してください。
  `enable_routing`,`boolean`,ここで、グループ書き込みリーダーを介した :ref:``Connection Manager` </pgd/current/connection-manager/>` は、特定のグループで有効になっています。有効な値は`on`または`off`です。デフォルトは、サブグループの場合は`on`、クラスターグループの場合は`off`です。
  `enable_raft`,`boolean`,グループが独自のRaftコンセンサスを持つかどうか。このオプションは`enable_routing`〜`on`を設定するために必要です。トップレベルグループのこのオプションは常に`on`です。有効な値は`on`または`off`です。サブグループのデフォルトは`on`です。
  `enable_wal_decoder`,`boolean`,デコードワーカープロセスを有効/無効にします。 `streaming_mode`が既に有効になっている場合、デコードワーカープロセスを有効にすることはできません。有効な値は`on`または`off`です。デフォルトは`off`です。
  `location`,`text`,グループの場所に関する情報。このオプションは、モニタリングのための純粋なメタデータです。デフォルトは`''`空の文字列です。
  `monitor_http_port`,`integer`,:ref:`Using the PGD Monitor<Using the PGD Monitor>`  HTTPサーバーがメンバノードをリッスンするポート。デフォルトは、ノードのPostgresポートプラス1005です。
  `monitor_use_https`,`boolean`,":ref:`Using the PGD Monitor<Using the PGD Monitor>` がHTTPSでWeb UI、REST API、およびPrometheusエンドポイントを提供するかどうか。  :ref:`pg_upgrade <PGD settings>` でオーバーライドしない限り、各ノードのSSL証明書構成を再利用します。デフォルトは`false`です。"
  `num_writers`,`integer`,このノードグループをバッキングするサブスクリプションの並列ライターの数。有効な値は`-1`または正の整数です。 `-1`は、 GUC  :ref:`pg_upgrade <PGD settings>` で指定された値が使用されることを意味します。 `-1`がデフォルトです。
  `route_reader_max_lag`,`integer`,ノードが実行可能な読み取り専用ノードと考えられるバイト単位の最大遅延。将来の使用のために現在予約されています。
  `route_writer_max_lag`,`integer`,書き込みリーダーとして選択される新しい書き込み候補のバイト単位の最大遅延。これを通過する候補者がない場合、ライタは選択されません。デフォルトは`-1`です。
  `route_writer_wait_flush`,`boolean`,PGDがフラッシュを待機する必要があるかどうかを切り替えるかどうか。将来の使用のために現在予約されています。
  `server_max_prepared_statements`,`integer`,接続が`fast` `server_reset_mode`の下のプールにリリースされるときに、`DEALLOCATE ALL`を強制する前に、Connection Managerがプールされたバックエンドにキャッシュする準備ができたステートメントの最大数。 `transaction`プールモードでのみ参照されます。デフォルトは`200`です。
  `server_pool_mode`,`text`,接続マネージャーの :ref:`Connection pooling<Connection pooling>` モード。有効な値は`none`プーリングなし、デフォルト、`session`、および`transaction`です。
  `server_reset_mode`,`text`,クリーンアップ動作 接続マネージャーは、プールに返す前に`transaction`プールモードでプールされたバックエンド接続に適用します。有効な値は`discard_all`デフォルト、 :ref:`pg_upgrade <Monitoring through SQL>` を実行します。および`fast`トランザクションが開いたままか`server_max_prepared_statements`を超えない限りクリーンアップをスキップします。 `session`プールモードは、この設定に関係なく、常に`DISCARD ALL`を実行します。  :ref:`Connection pooling<Connection pooling>` を参照してください。
  `streaming_mode`,`text`,大規模なトランザクションのストリーミングを有効/無効にします。 `off`に設定すると、ストリーミングが無効になります。他の値に設定されている場合、大規模なトランザクションは進行中にデコードされ、変更がダウンストリームに送信されます。値が`file`に設定されている場合、ストリーミングトランザクションの着信変更はファイルに保存され、上流でトランザクションがコミットされた後にのみ適用されます。値が`writer`に設定されている場合、着信変更はライターが利用可能な場合は、いずれかに直接送信されます。<br/>  :ref:`Parallel Apply<Parallel Apply>` が無効になっている場合、またはストリーミングトランザクションを処理できる自由なライタがない場合、変更はファイルに書き込まれますトランザクションがコミットされた後に適用されます。値が`auto`に設定されている場合、 PGDは、トランザクションプロパティと使用可能なリソースに応じて、`file`と`writer`の間でインテリジェントに選択しようとします。 WALデコーダーが既に有効になっている場合、`streaming_mode`を有効にすることはできません。デフォルトは`auto`です。<br/><br/>詳細については、  :ref:`トランザクションストリーミングでの使用<トランザクションストリーミングでの使用>` を参照してください。
  `use_https`,`boolean`,HTTPリスナーがHTTPSを使用するかどうか。有効にすると、TLSにサーバー証明書が使用されます。 `postgresql.conf`またはコマンドラインを介して設定された`ssl_cert_file`および`ssl_key_file`が必要です。変更は、Connection Managerプロセスを再起動した後にのみ有効になります。デフォルトは`false`です。詳細については、  :ref:`Configuring Connection Manager<Configuring Connection Manager>` を参照してください。
  `failover_slot_scope`,`text`,PGD 5.7以降のみ。論理スロットフェールオーバーサポートのスコープを設定します。有効な値は`global`または`local`です。デフォルトは`local`です。詳細については、  :ref:`CDC Failover support<CDC Failover support>` を参照してください。

``apply_error_*`` オプションの構成例と解決ワークフローについては、
:ref:`Handling replication apply errors <Handling replication apply errors>` を参照してください。

``enable_fast_track_writer`` ノート
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``enable_fast_track_writer``
がオフで、アプリケーションが\ ``bdr.commit_scope``
構成パラメーターを介してクォーラムコミットを使用する場合、トップレベルグループでこのオプションを明示的に有効にして、クラスター全体で有効にします。

.. code:: sql

   SELECT bdr.alter_node_group_option(topgroup, enable_fast_track_writer, true);

高速トラックライタを追加すると、ノードごとに必要なレプリケーションスロットの数が増加します。
:ref:`Postgres構成パラメーター <Postgres構成パラメーター>` 、PostgreSQL
18以降の場合は\ ``max_active_replication_origins``
の\ ``max_replication_slots``
計算を確認します。このオプションを有効にした後、
:ref:`bdr.get_min_required_replication_slots() <Replication slots created by PGD>` を使用して、値が十分に高いことを確認します。

戻り値
^^^^^^

``bdr.alter_node_group_option()`` は、成功すると\ ``VOID`` を返します。

提供されたパラメーターのいずれかが無効な場合、 ``ERROR`` が発生します。

注
^^

ビュー :ref:`bdr.node_group_summary <bdr.node_group_summary>` 
を介して、ノードグループオプションの現在の状態を調べることができます。

このファンクションは、デフォルトを変更するように要求をグループコンセンサスメカニズムに渡します。行われた変更は、コンセンサスメカニズムを使用してグローバルに複製されます。

ファンクションはトランザクションではありません。要求はバックグラウンドで処理されるため、ファンクション呼び出しをロールバックすることはできません。また、変更は現在のトランザクションにすぐに表示されない場合があります。

このファンクションはロックを保持しません。

bdr.alter_node_interface
------------------------

指定されたノードの接続文字列\ ``DSN`` を変更します。

.. _概要-1:

概要
^^^^

.. code:: sql

   bdr.alter_node_interface(node_name text, interface_dsn text)

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `node_name`,変更する既存のノードの名前。
  `interface_dsn`,ノードの新しい接続文字列。

.. _注-1:

注
^^

このファンクションを実行し、ローカルノードでのみ変更を加えます。これは、通常、変更されるノードを含む、PGDグループ内のすべてのノードで実行することを意味します。

このファンクションはトランザクションです。ロールバックできます。変更は現在のトランザクションに表示されます。

ファンクションはローカルノードでロックを保持します。

bdr.alter_node_option
---------------------

ノードごとの構成オプションを変更します。

.. _概要-2:

概要
^^^^

.. code:: sql

   bdr.alter_node_option(node_name text,
       config_key text,
       config_value text);

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `node_name`,変更するノードの名前。
  `config_key`,変更するノードのオプションのキー。
  `config_value`,指定されたキーに設定する新しい値。

この機能を使用して変更できるノードオプションは次のとおりです。

.. csv-table::
  :header: Config Key,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `route_priority`,同じノードグループ内の他のノードに対するノードの相対ルーティング優先度。デフォルトは`'-1'`です。
  `route_fence`,ノードがルーティングからフェンスされているかどうか。 trueの場合、ノードは接続マネージャーから接続を受信できません。レプリケーションは影響を受けません。デフォルトは`'f'`falseです。
  `route_writes`,書き込みをこのノードにルーティングできるかどうか、つまりノードが書き込みリーダーになることができるかどうか。デフォルトは、データノードの場合は`'t'`trueであり、他のノードタイプの場合は`'f'`falseです。
  `route_reads`,読み取り専用接続をこのノードにルーティングできるかどうか。将来の使用のために現在予約されています。デフォルトは、データおよびサブスクライバ専用ノードの場合は`'t'`true、監視ノードおよびスタンバイノードの場合は`'f'`falseです。
  `route_dsn`,このノードへの接続に使用するプロキシのdsn。このオプションはオプショナル。設定されていない場合、デフォルトでノードの`node_dsn`値が使用されます。
  `group_dsn`,同じサブグループ内のノードの優先接続文字列。設定すると、同じサブグループ内のノードは、ノードの`node_dsn`の代わりにこのDSNを使用して接続します。デフォルトにリセットするには、NULLに設定します。  :ref:``bdr.node_config` 列<`bdr.node_config` 列>` に`node_group_dsn`として保存されます。

bdr.alter_subscription_enable
-----------------------------

指定されたサブスクリプションまたはローカルPGDノードのすべてのサブスクリプションを有効にします。これは、再開サブスクリプションとも呼ばれます。サブスクリプションが既に有効になっている場合、エラーはスローされません。このオペレーションの影響を受けるサブスクリプションの数を返します。

.. _概要-3:

概要
^^^^

.. code:: sql

   bdr.alter_subscription_enable(
       subscription_name name DEFAULT NULL,
       immediate boolean DEFAULT false
   )

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `subscription_name`,有効にするサブスクリプションの名前。 NULLの場合デフォルト、ローカルノードのすべてのサブスクリプションが有効になります。
  `immediate`,アクションをすぐに強制するために使用され、有効なサブスクリプションに関連付けられているすべてのワーカーを起動します。このオプションが`true`の場合、トランザクションブロック内でこのファンクションを実行できません。

.. _注-2:

注
^^

この機能はレプリケートされず、ローカルノードサブスクリプション特定のノードまたはすべてのノードにのみ影響します。

このファンクションはトランザクションです。ロールバックできます。現在のトランザクションは、カタログの変更を確認できます。サブスクリプションワーカーは、トランザクションがコミットされた後、バックグラウンドプロセスによって起動されます。

bdr.alter_subscription_disable
------------------------------

指定されたサブスクリプションまたはローカルPGDノードのすべてのサブスクリプションを無効にします。オプションで、無効なサブスクリプションに関連付けられているすべてのワーカーをすぐに停止することもできます。これは、サブスクリプションの一時停止とも呼ばれます。サブスクリプションが既に無効になっている場合、エラーはスローされません。このオペレーションの影響を受けるサブスクリプションの数を返します。

.. _概要-4:

概要
^^^^

.. code:: sql

   bdr.alter_subscription_disable(
       subscription_name name DEFAULT NULL,
       immediate boolean DEFAULT false,
       fast boolean DEFAULT true
   )

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `subscription_name`,無効にするサブスクリプションの名前。 NULLの場合デフォルト、ローカルノードのすべてのサブスクリプションが無効になります。
  `immediate`,アクションをすぐに強制し、無効になったサブスクリプションに関連付けられているすべてのワーカーを停止するために使用されます。このオプションが`true`の場合、トランザクションブロック内でこのファンクションを実行できません。
  `fast`,この引数は、`immediate`の動作に影響を与えます。 `true`デフォルトに設定されている場合、現在の作業が完了するのを待たずに、無効なサブスクリプションに関連付けられているすべてのワーカーを停止します。

.. _注-3:

注
^^

このファンクションはレプリケートされず、ローカルノードサブスクリプション特定のサブスクリプションまたはすべてのサブスクリプションにのみ影響します。

このファンクションはトランザクションです。ロールバックできます。現在のトランザクションは、カタログの変更を確認できます。ただし、サブスクリプションワーカーが停止するタイミングは、
``immediate`` の値に依存します。 ``true``
に設定されている場合、ワーカーは\ ``COMMIT``
を待たずにstopを受け取ります。 ``fast`` 引数が\ ``true``
に設定されている場合、ワーカーの中断は、現在の作業が完了するまで待機しません。

bdr.create_node
---------------

ノードを作成します。

.. _概要-5:

概要
^^^^

.. code:: sql

   bdr.create_node(node_name text,
                   local_dsn text,
                   node_kind DEFAULT NULL)

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `node_name`,新しいノードの名前。データベースごとに1つのノードのみが許可されます。有効なノード名は、小文字、数字、ハイフン、アンダースコアで構成されます。
  `local_dsn`,ノードへの接続文字列。
  `node_kind`,`data`デフォルト、`standby`、`subscriber-only`、または`witness`のいずれか。このパラメーターを設定しない場合、または`NULL`を提供する場合、デフォルトの`data`ノード種類が使用されます。

.. _注-4:

注
^^

このファンクションは、関連するパブリック接続文字列を使用してローカルノードのレコードを作成します。ローカルレコードは1つだけであるため、作成されると、ファンクションは再度実行されるとエラーを報告します。

このファンクションはトランザクションファンクションです。ロールバックできます。これによる変更は、現在のトランザクションに表示されます。

ファンクションは、トランザクションが終了するまで、新しく作成されたノードのロックを保持します。

bdr.create_node_group
---------------------

PGDノードグループを作成します。デフォルトでは、ローカルノードは唯一のメンバーとしてグループに参加します。
:ref:`bdr.join_node_group() <#bdrjoin_node_group>` を使用してグループにノードを追加できます。

.. _概要-6:

概要
^^^^

.. code:: sql

   bdr.create_node_group(node_group_name text,
                         parent_group_name text DEFAULT NULL,
                         join_node_group boolean DEFAULT true,
                         node_group_type text DEFAULT NULL)

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `node_group_name`,新しいPGDグループの名前。ノード名と同様に、有効なグループ名は小文字、数字、アンダースコアのみで構成されます。
  `parent_group_name`,ノードサブグループを作成する場合、これは親グループの名前である必要があります。クラスターのメインノードグループを作成するときに`NULL`デフォルトを提供します。
  `join_node_group`,ノードが作成中のグループに参加するかどうかを決定します。デフォルト値は`true`です。サブグループを作成するときに`false`を提供することは、たとえば、独立したリモートグループを作成する場合、ローカルノードが新しいグループに参加しないことを意味します。この場合、`parent_group_name`を指定する必要があります。
  `node_group_type`,有効な値は`NULL`または`subscriber-only`です。 `NULL`デフォルトは、通常の汎用ノードグループを作成するためです。 `subscriber-only`は、  :ref:`Creating Subscriber-only groups and nodes<Creating Subscriber-only groups and nodes>` を作成するためのもので、そのメンバーはクラスター内の完全に参加したノードからのみ変更を受信しますが、他のノードに変更を送信することはありません。

.. _注-5:

注
^^

このファンクションは、ローカルノードで実行されているローカルコンセンサスワーカーに要求を渡します。

ファンクションはトランザクションではありません。グループの作成はバックグラウンドプロセスであるため、機能が完了すると、変更をロールバックすることはできません。また、変更は現在のトランザクションにすぐに表示されない場合があります。
``bdr.wait_for_join_completion``
を呼び出して、そうなるまで待機できます。

グループの作成では、ロックは保持されません。

bdr.drop_node_group
-------------------

空のPGDノードグループを削除します。グループ内に参加したノードがある場合、ファンクションは失敗します。

.. _概要-7:

概要
^^^^

.. code:: sql

   bdr.drop_node_group(node_group_name text)

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `node_group_name`,ドロップするPGDグループの名前。

.. _注-6:

注
^^

このファンクションは、グループをドロップするように要求をグループコンセンサスメカニズムに渡します。ファンクションはトランザクションではありません。ドロッププロセスはバックグラウンドで発生し、ロールバックすることはできません。

bdr.join_node_group
-------------------

ローカルノードを既存のPGDグループに参加させます。

.. _概要-8:

概要
^^^^

.. code:: sql

   bdr.join_node_group (
       join_target_dsn text,
       node_group_name text DEFAULT NULL,
       wait_for_completion boolean DEFAULT true,
       synchronize_structure text DEFAULT all
   )

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `join_target_dsn`,ローカルノードを追加するPGDグループ内の既存のソースノードへの接続文字列を指定します。
  `node_group_name`,PGDグループのオプションの名前。デフォルトはNULLで、ソースノードに存在する情報からグループ名を検出しようとします。
  `wait_for_completion`,戻る前に、参加プロセスが完了するのを待ちます。デフォルト`true`
  `synchronize_structure`,結合中にデータベース構造スキーマの同期を実行するかどうかを指定します。デフォルト設定の`all`は、完全なデータベース構造を同期します。 `none`は、構造体を同期しません。ただし、データは引き続き同期されます。つまり、データベース構造が参加ノードに既に存在する必要があります。デザインとして、スキーマもデータも監視ノードに同期されないことに注意してください。

``wait_for_completion`` が\ ``false``
として指定された場合、ファンクション呼び出しは、参加プロシージャが開始されるとすぐに返されます。結合の進行状況はログファイルと `bdr.event_summary <https://www.enterprisedb.com/docs/pgd/latest/reference/tables-views-functions/catalogs-internal#bdrevent_summary>`_ で確認できます。

情報ビュー。ファンクション :ref:`bdr.wait_for_join_completion() <pgd completion>` を呼び出すことができます

``bdr.join_node_group()`` の後、結合操作が完了するまで待機します。
``verbose_progress`` を\ ``true``
に設定して :ref:`bdr.wait_for_join_completion() <pgd completion>` が呼び出された場合、進行状況情報を出力できます。

.. _注-7:

注
^^

このファンクションは、\ ``join_target_dsn``
接続文字列がポイントするノードを介して、グループコンセンサスメカニズムに要求を渡します。行われた変更は、コンセンサスメカニズムによってグローバルに複製されます。

ファンクションはトランザクション的ではなく、トランザクションで実行されるとエラーを生成します。参加プロセスはバックグラウンドで発生し、ロールバックすることはできません。
``wait_for_completion`` が\ ``true``
に設定されている場合、または後で\ ``bdr.wait_for_join_completion``
を呼び出した場合、変更はローカルセッションにのみ可視されます。

ノードは1つのグループのみに所属できるため、このファンクションは各ノードで1回のみ呼び出すことができます。

ノード参加は、PGDグループのロックを保持しません。

分割処理の進行中のノード名を再利用するには、 ``bdr.part_node``
Raftプロトコルバージョン6003以降が必要を使用する場合に\ ``concurrent = true``
を設定します。このパラメーターを使用すると、分離ノードが\ ``PARTING``
状態に到達すると、元の名前を再利用できます。この時点で、ノードの名前は自動的にそのUUIDに変更されます。

既存のノードがCAMOパートナーとして構成されているノードグループに追加のデータノードを参加させることはできません。ノードを追加するには、最初にCAMOコミットスコープをドロップします。

bdr.part_node
-------------

PGDグループからノードを削除し、最終的にクラスター内のすべてのノードから分離されたノードのメタデータを削除します。

- ローカルノードの場合、リモートノードに関する情報を含むすべてのノードメタデータを削除します。

- リモートノードの場合、その特定のノードのメタデータのみを削除します。

この操作では、ノードからデータは削除されません。

削除するノードを含む、PGDグループ内の任意のアクティブノードからファンクションを呼び出すことができます。

グループの\ ``default_commit_scope``
またはローカルノードの\ ``bdr.commit_scope``
構成パラメーターがCAMOコミットスコープに設定されている場合、データノードを分割することはできません。ノードを削除するには、最初にCAMOコミットスコープをドロップします。

削除されるノードから分割を実行すると、削除のステータスが誤って報告される、または全く報告されないリスクがあります。これは、削除の過程で、通信がクラスターの残りの部分から切断されるためです。削除は成功する場合がありますが、コマンドを発行したノードに、他のノードで失敗または成功したことを通知する方法はありません。同じ理由で、ファンクションは完了を待機するように設定できません。

ノードが自分自身を分離すると、クラスターの一部ではなくなるため、クラスター内の他のノードを分離することはできません。

ノードを使用してクラスターから自分自身を分離することは避けることをお勧めします。代わりに、完了を待機できるノードからノード分割操作を実行し、操作が完了した後にクラスターステータスを確認します。

..  Note::
   ローカルノードを分離する場合、`wait_for_completion` を`false` に設定する必要があります。それ以外の場合、エラーが報告されます。

..  Warning::
   このアクションは永続的です。ノードへのレプリケーションを一時的に停止する場合は、`bdr.alter_subscription_disable()` を使用します。

.. _概要-9:

概要
^^^^

.. code:: sql

   bdr.part_node (
       node_name text,
       wait_for_completion boolean DEFAULT true,
       force boolean DEFAULT false,
       concurrent boolean DEFAULT false
   )

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `node_name`,パートへの既存のノードの名前。
  `wait_for_completion`,`true`の場合、ノードがクラスターから完全に分離されるまで、ファンクションは返されません。それ以外の場合、ファンクションは分割プロシージャを開始し、待機せずにすぐに戻ります。ローカルノードで実行する場合、または`force`を使用する場合、常に`false`に設定します。
  `force`,ローカルノードでノードを強制的に削除します。これにより、コンセンサスに到達できない場合、またはノード分割プロセスがスタックしている場合、ノードの状態をローカルに設定します。
  `concurrent`,`true`の場合、ノードが`PARTED`状態に到達するのを待って最終的にドロップされることなく、ノードが`PARTING`状態以上になるとすぐに、分割ノード名の再利用ができます。デフォルトは`false`です。このパラメーターは、クラスターがRaftプロトコルバージョン6003以上の場合に使用できます。

..  Warning::
   `force = true` を使用すると、PGDグループが一貫性のない状態になる場合があります。他の方法でノードを削除できない障害から回復するためにのみ使用します。

.. _注-8:

注
^^

このファンクションは、グループコンセンサスメカニズムに要求を渡して、特定のノードを分割します。行われた変更は、コンセンサスメカニズムによってグローバルに複製されます。分離プロセスはバックグラウンドで発生し、ロールバックすることはできません。
``wait_for_completion`` が\ ``true``
に設定されている場合、分割プロセスによって行われた変更はローカルトランザクションにのみ可視されます。

``force`` が\ ``true``
に設定されている場合、コンセンサスが失敗すると、このファンクションはローカルノードでのみ特定のノードの状態を設定します。このような場合、ファンクションはトランザクションであり、ファンクションがノードの状態を変更するため、ロールバックできます。
``force`` が\ ``true``
に設定された状態で既に分離処理中のノードでファンクションが呼び出された場合、指定されたノードをローカルに分離されたものとしてマークして、終了します。これは、クラスターでコンセンサスに到達できない場合つまりノードの大部分がダウンしている場合、または分割プロセスがスタックしている場合にのみ役立ちます。

ただし、書き込みを受信していた分割ノードが書き込みを行った場合、実際にはスタックせずに分割プロセスに時間がかかる場合があることを考慮することが重要です。他のノードは、特定のノードからの欠落データを再同期する必要があります。他のノードは、すべてのノードのグループスロットがPARTEDノードから発生したすべてのトランザクションに追いつくまで、待機する必要があります。

強制的な分離はこの再同期を完全にスキップし、他のノードを一貫性のない状態のままにする可能性があります。

分離プロセスはロックを保持しません。

``concurrent = true``
の場合、パーティングノードのターゲット状態は\ ``PARTED_CONCURRENT``
に設定されます。 ``PARTING``
状態に到達すると、ノードの名前がそのUUIDに変更されます。プロセスは、ノードが\ ``PARTED``
状態に到達し、ドロップされるまで続行されます。したがって、ノードのすべての追跡は、\ ``PART_START``
状態を通過すると、そのUUIDを使用する必要があります。

``concurrent = true``
を使用する場合は、\ ``wait_for_completion = false``
を設定することをお勧めします。この構成により、元のノードが\ ``PARTING``
状態に到達すると、ファンクションは\ ``Notice``
で戻ることができます。この瞬間、ノードの名前はそのUUIDに変更され、元の名前が解放され、クラスター内の即時の再割り当てまたは再利用が可能です。

bdr.promote_node
----------------

ローカルロジカルスタンバイノードをPGDグループの完全なメンバーに昇格させます。

.. _概要-10:

概要
^^^^

.. code:: sql

   bdr.promote_node(wait_for_completion boolean DEFAULT true)

.. _注-9:

注
^^

このファンクションは、デフォルトを変更するように要求をグループコンセンサスメカニズムに渡します。行われた変更は、コンセンサスメカニズムによってグローバルに複製されます。

ファンクションはトランザクションではありません。プロモーションプロセスはバックグラウンドで発生し、ロールバックすることはできません。
``wait_for_completion`` が\ ``true``
に設定されている場合、または後で\ ``bdr.wait_for_join_completion``
を呼び出した場合、変更はローカルトランザクションにのみ可視されます。

プロモーションプロセスは、他のプロモーションに対してロックを保持します。このロックは他の\ ``bdr.promote_node``
呼び出しをブロックしませんが、プロモーションのバックグラウンドプロセスが一度に複数のノードで進行することを防ぎます。

bdr.switch_node_group
---------------------

ローカルノードを現在のサブグループから同じ既存のPGDノードグループ内の別のサブグループに切り替えます。

.. _概要-11:

概要
^^^^

.. code:: sql

   bdr.switch_node_group (
       node_group_name text,
       wait_for_completion boolean DEFAULT true
   )

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `node_group_name`,PGDグループまたはサブグループの名前。
  `wait_for_completion`,戻る前に、スイッチプロセスが完了するのを待ちます。デフォルト`true`

``wait_for_completion`` が\ ``false``
に設定されている場合、これは非同期呼び出しであり、スイッチングプロシージャが開始するとすぐに返されます。スイッチの進行状況は、ログと\ ``bdr.event_summary``
情報ビューで、または\ ``bdr.switch_node_group()``
が戻った後に\ ``bdr.wait_for_join_completion()``
ファンクションを呼び出すことで確認できます。

.. _注-10:

注
^^

このファンクションは、要求をグループコンセンサスメカニズムに渡します。行われた変更は、コンセンサスメカニズムによってグローバルに複製されます。

ファンクションはトランザクションではありません。スイッチングプロセスはバックグラウンドで発生し、ロールバックすることはできません。
``wait_for_completion`` が\ ``true``
に設定されている場合、または後で\ ``bdr.wait_for_join_completion``
を呼び出した場合、変更はローカルトランザクションにのみ可視されます。

ローカルノードは、クラスターを分割する必要なく、現在のサブグループから同じPGDノードグループ内の別のサブグループにメンバーシップを変更します。ノードの種類は、ターゲットサブグループ内の既存のノードの種類と一致する必要があります。

ノードスイッチングは、PGDグループのロックを保持しません。

制限
現在、この機能では、サブグループとそのPGDノードグループ間のスイッチングのみが許可されています。サブグループ間の移動を有効にするには、2つの別個の呼び出しを行う必要があります。1)サブグループからノードグループにスイッチし、2)ノードグループから他のサブグループにスイッチします。

bdr.sync_node_cancel
--------------------

このファンクションは、指定されたオリジンおよびソースノードの同期要求をキャンセルします。

.. _概要-12:

概要
^^^^

.. code:: sql

   bdr.sync_node_cancel(origin text, source text)

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `origin`,元ノードの名前。
  `source`,ソースノードの名前。

.. _注-11:

注
^^

このファンクションは、指定されたオリジンとソースを持つすべてのターゲットのすべての同期ノード要求をキャンセルします。書き込みリードからのみ呼び出すことができます。

bdr.wait_for_join_completion
----------------------------

このファンクションは、ローカルノードの参加手順が完了するのを待機します。

.. _概要-13:

概要
^^^^

.. code:: sql

   bdr.wait_for_join_completion(verbose_progress boolean DEFAULT false)

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

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

.. csv-table::
  :header: Name,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `verbose_progress`,オプションで、参加プロシージャ中に実行される個々のステップに関する情報を出力します。

.. _注-12:

注
^^

このファンクションは、ローカルノードのチェック状態が\ ``bdr.create_node_group``
、\ ``bdr.join_node_group`` 、または\ ``bdr.promote_node``
で設定されたターゲット状態に到達するまで待機します。
