Replication slots created by PGD
================================

PGDマスターノードでは、次のレプリケーションスロットがPGDによって作成されます。

-  1つの *グループスロット*
   、名前付けは\ ``bdr_<database name>_<group name>``

-  ``bdr_<database name>_<group name>_<node name>`` という名前のN-1
   *ノードスロット*
   、Nは、クラスター内のPGDノードの合計数です。ダイレクトロジカルスタンバイがある場合は、

..  Warning::
   これらのスロットはドロップしないでください。 PGDはそれらを作成および管理し、必要に応じて削除します。

一方、PGDに影響を与えることなく、ソフトウェアの適切なコマンドを使用して、
Barmanまたは論理レプリケーションなどのソフトウェアに必要なレプリケーションスロットを作成またはドロップできます。他のソフトウェアが使用するスロット名を接頭辞\ ``bdr_``
で始めないでください。

たとえば、3つのノード\ ``alpha`` 、\ ``beta`` 、および\ ``gamma``
で構成されるクラスターでは、PGDを使用して\ ``mydb``
データベースをレプリケートし、PGDグループは\ ``mygroup`` と呼ばれます。

-  ノード\ ``alpha`` には、3つのスロットがあります。

   -  ``bdr_mydb_mygroup``
   -  という名前の1つのグループスロット ``bdr_mydb_mygroup_beta``
      および\ ``bdr_mydb_mygroup_gamma`` という名前の2つのノードスロット

-  ノード\ ``beta`` には、3つのスロットがあります。

   -  ``bdr_mydb_mygroup``
   -  という名前の1つのグループスロット ``bdr_mydb_mygroup_alpha``
      および\ ``bdr_mydb_mygroup_gamma`` という名前の2つのノードスロット

-  ノード\ ``gamma`` には、3つのスロットがあります。

   -  ``bdr_mydb_mygroup``
   -  という名前の1つのグループスロット ``bdr_mydb_mygroup_alpha``
      および\ ``bdr_mydb_mygroup_beta`` という名前の2つのノードスロット

グループレプリケーションスロット
--------------------------------

グループスロットは、主にPGDグループ内のノードすべてのロジカルスタンバイを含むこのノードからのアウトバウンドレプリケーションについて追いついた最も古い安全な位置を追跡するためにPGDが使用する内部スロットです。

グループスロット名は、ファンクション :ref:`bdr.local_group_slot_name() <System functions>` 
によって与えられます。

グループスロットでは次のことができます。

-  既存のノードをすべて起動して実行せずに、新しいノードをPGDグループに参加させますが、ノードの大部分は起動している必要があります。参加中にダウンしたノードが再び複製を開始した場合、このプロセスではデータの損失は発生しません。

-  一部のノードが分離されたノードに完全に追いついていない場合でも、クラスターからノードを一貫して分離します。

-  フリーズポイントを抑えて、いくつかの競合の見逃しを回避します。

-  タイムスタンプベースのスナップショットの履歴スナップショットを保持します。

グループスロットは通常非アクティブで、他のノードからのRaft進行状況メッセージに応答して定期的にのみ早送りされます。

..  Warning::
   グループスロットをドロップしないでください。通常は非アクティブですが、 EDB Postgres分散クラスターの適切なオペレーションには依然として重要です。これをドロップすると、一部またはすべての機能が動作を停止するか、誤った結果が発生する可能性があります。

長い識別子のハッシュ化
----------------------

レプリケーションスロットの名前は、他のPostgreSQL識別子と同様に、63バイトを超えることはできません。
PGDは、結果のスロット名がその制限に対して長すぎる場合、データベース名、PGDグループ名、およびノードの名前を短縮することによりこれを処理します。識別子の短縮は、文字列の最後のセクションを文字列自分自身のハッシュに置き換えることにより実行されます。

たとえば、 ``group20xxxxxxxxxxxxx``
20バイト長という名前のPGDグループを使用して、 ``db20xxxxxxxxxxxxxxxx``
20バイト長という名前のデータベースをレプリケートするクラスターを検討します。
``3597186`` 、\ ``be9cbd0`` 、および\ ``7f304a2``
は、それぞれ\ ``db20xxxxxxxxxxxxxxxx`` 、\ ``group20xxxxxxxxxxxxx``
、および\ ``a30xxxxxxxxxxxxxxxxxxxxxxxxxx``
のハッシュであるため、ノード\ ``a30xxxxxxxxxxxxxxxxxxxxxxxxxxx``
30バイト長に関連付けられている論理レプリケーションスロットが呼び出されます。

::

   bdr_db20xxxx3597186_group20xbe9cbd0_a30xxxxxxxxxxxxx7f304a2
