Node UUIDs#

PGD 6では、各ノードに、クラスター内のノードを識別するために使用されるUUIDがあります。このUUIDは、ノードの作成時に生成され、そのノードに一意です。 UUIDは、PGDのさまざまな場所で見つけることができます。

  • bdr.node テーブル。クラスター内の各ノードに関する情報が含まれています。

  • bdr.node_summary ビュー クラスター内のノードの人が判読可能なビューを提供します。

  • bdr.local_node テーブル、ローカルノードに関する情報が含まれています。

  • uuid値は、ノードごとに作成されるレプリケーションスロットの名前付けにも表示されます。

PGDのノード管理で使用されますが、UUIDの使用はPGDの既存の機能に影響を与えません。 UUIDは、ノードとグループを識別するために内部で使用され、ユーザーがPGDと対話する方法を変更しません。

なぜUUIDなのか?#

UUIDはPGDで使用され、クラスター内の各ノードに一意の識別子を提供します。 PGDの以前のバージョンは、ノード名を識別子として使用していましたが、2つのノードの名前が同じである場合、競合が発生する可能性がありました。 UUIDを使用することにより、PGDは各ノードに時間の経過とともに変更されない一意の識別子を持つことを保証できます。これは、クラスターにノードが頻繁に追加または削除される可能性があるPGDのような分散システムでは特に重要です。 UUIDにより、新しいノードは既存のノードと同じ名前を持つ場合がありますが、異なるUUIDを持ち、既存のノードと競合しないことが保証されます。

UUIDはどのように生成されますか?#

新しいノードが作成されると、そのノードのUUIDが生成されます。このUUIDは、カーネルの強力な乱数ジェネレーターを使用して作成され、一様にランダムであることが保証されています。この保証により、UUIDは一意であり、簡単に推測できないことが保証されます。生成されたUUIDはbdr.node テーブルに保存され、クラスター内のノードを識別するために使用されます。

ノードが削除され、置換が追加された場合はどうなりますか?#

ノードがクラスターから削除され、置換ノードが追加されると、置換ノードには新しいUUIDが割り当てられます。これにより、置換ノードがクラスター内の別のエンティティとして扱われ、既存のノードと競合しないことが保証されます。ただし、 PGDは、新しいノードを受け入れる前に、古いノードをクラスターから完全に分離する必要があります。置換ノードのUUIDは、クラスター内の他のノードのUUIDと同じ方法で使用されます。

PGD 6のUUID関連の変更#

  • 以前にノードを区別するために使用されていたbdr.node テーブルのgeneration フィールドは、使用されなくなりました。すべてのノードで0のままです。

  • bdr.node テーブルのnode_uuid フィールドは、PGD 6でnullになることはありません。将来、混合バージョンクラスターでnullになる可能性があります。