Join method#

データノードを追加するか、クロスリージョングループを作成することによりPGDグループをスケールアップする場合、新しいノードが既存のグループに適切に参加することが重要です。参加には2つの方法があります。

  • 論理的結合

この方法は、 bdr.join_node_group ファンクションを使用して、新しいノードをPGDグループに統合します。参加ノードには、PGDグループに存在するスキーマまたはデータが含まれていないことが重要です。結合中にデータの同期が発生するため、新しいデータベースにはBDR拡張機能のみを含めることをお勧めします。

  • 物理的結合

この方法では、 bdr_init_physical コマンドを使用して、参加プロセスを高速化します。 bdr_init_physical を実行する前に、事前にデータを準備できます。

結合方法の詳細については、 Creating and joining PGD groups を参照してください。

初期グループ#

PGD4Kオペレーターを使用すると、PGDグループに参加するノード、および他のグループに参加するグループの参加方法を構成できます。

単一のPGDグループを作成するときは、 親グループ spec.pgd.parentGroup.create =true を作成するように構成する必要があります。クロス参加する複数のPGDグループを作成する場合は、これらのグループの少なくとも1つを指定して、親グループを形成する必要があります。このグループは、 初期 PGDグループと呼ばれます。

initial PGDグループの最初のノードは、バックアップから復元するリカバリドキュメントの説明に従って、またはスクラッチから作成できます。このノードは、常に論理結合を使用して、作成した親グループに接続します。逆に、 非初期 PGDグループの最初のノードは、他のPGDグループとのクロスジョインに使用されます。

最初のノードグループ参加と後続のノードノード参加の参加方法を個別に構成できます。

注釈

グループが別のグループに参加するシナリオでは、参加するグループの最初のノードが実際に別のグループに参加する前に最初にグループを作成します物理的または論理的。

ノード参加の参加方法を構成する#

PGDグループをスケールアップし、新しいノードをローカルグループに追加するときに、グループに参加するノードの参加方法を構成できます。このコンテキストでは、参加グループはノードグループと同じです。

node join local group

node join local group#

spec.cnp.joinMethod パラメーターは、ノードがローカルグループに参加する方法を構成します。デフォルトでは、論理結合が使用されます。新しいノードの物理的参加を有効にするには、 spec.cnp.joinMethod =physical を設定します。

次の例では、2番目のノードはpg_basebackup コマンドを使用して、region-a グループの最初のノードからデータを複製します。次に、 bdr_init_physical を使用してregion-a グループに参加します。

この例は、物理的結合を示しています。

apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
metadata:
  name: region-a
spec:
  instances: 2
  proxyInstances: 2
  witnessInstances: 1
  cnp:
    joinMethod: physical
    storage:
      size: 1Gi
  ...

グループ参加の参加方法を構成する#

クロスリージョンのPGDグループを作成するときに、グループ参加の参加方法を構成できます。新しいPGDグループの最初のノードは、既存のPGDグループに参加します。このコンテキストでは、参加グループはノードグループとは異なります。

node join remote group

node join remote group#

PGD4Kオペレーターは、 spec.pgd.joinMethod セクションデフォルトlogicalを使用して、PGDグループが相互に参加する方法を決定します。 spec.pgd.discovery セクションを使用して、参加するターゲットを指定します。

この例は、論理結合を示しています。spec.pgd.groupJoinMethod=logical . region-bグループの最初のノードは、spec.pgd.discovery で指定されたすべてのホストが利用可能になるまで待機します。次に、 bdr.join_node_group ファンクションを使用して論理結合を実行する適切なターゲットを特定します。すべてのリモートグループの グループサービス は、通常、このタイプの参加の検出セクションで定義されます。

apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
metadata:
  name: region-b
  namespace: region-b
spec:
  instances: 2
  proxyInstances: 2
  witnessInstances: 1
  pgd:
    parentGroup:
      name: world
    groupJoinMethod: logical
    discovery:
      - host: region-a-group
      - host: region-c-group
  cnp:
    storage:
      size: 1Gi

この例は、 spec.pgd.groupJoinMethod=physical で構成された物理的結合を示しています。 region-bグループの最初のノードは、spec.pgd.discovery で定義されたすべてのノードをトラバースし、成功したRaftコンセンサスで1つのノードを見つけて、bdr_init_physical を使用して物理的ジョインを実行するのを待機します。通常、リモートグループの ノードサービス は、このタイプの参加の検出セクションで指定されます。

apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
metadata:
  name: region-b
spec:
  instances: 2
  proxyInstances: 2
  witnessInstances: 1
  pgd:
    parentGroup:
      name: world
    groupJoinMethod: physical
    discovery:
      - host: region-a-3-node
      - host: region-a-1-node
      - host: region-a-2-node
  cnp:
    joinMethod: physical
    storage:
      size: 1Gi

注釈

グループ参加は本質的にノード参加のタイプであり、特にグループ内の最初のノードが別のグループのノードに参加する場合に発生します。

注釈

Witnessノードは常に論理結合を使用してグループに接続します。