Replication slots created by PGD#

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

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

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

警告

これらのスロットはドロップしないでください。 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が使用する内部スロットです。

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

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

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

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

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

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

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

警告

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

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

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

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

bdr_db20xxxx3597186_group20xbe9cbd0_a30xxxxxxxxxxxxx7f304a2