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#
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#
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ノードは常に論理結合を使用してグループに接続します。