0

マシンが3台しかない非常に小さなNDBクラスターを構築しています。これは、マシン1がMGMサーバー、MySQLサーバー、およびNDBデータノードの両方として機能することを意味します。データベースはわずか7GBなので、各ノードを少なくとも1回は複製する予定です。これで、クエリがマシン1のNDBノードにキャッシュされたデータを使用する可能性があるため、そのデータのプライマリソースのノードでなくても、アクセスははるかに高速になります(明らかな理由により)。

NDBクラスターはそのように機能しますか?私が見るすべての例には、少なくとも5台のマシンがあります。マニュアルには、このようなノードの違いを処理する方法が記載されていないようです。

4

1 に答える 1

2

ここにいくつかの質問があります:

可用性/NoOfReplicas

MySQLクラスターは、データが2つ以上のデータノードプロセス間でレプリケートされるときに高可用性を提供できます。これには、NoOfReplicas構成パラメーターが2以上に設定されている必要があります。NoOfReplicas = 1の場合、各行は1つのデータノードにのみ格納されます。データノードに障害が発生すると、一部のデータが使用できなくなり、データベース全体が使用できなくなります。

マシン/ホストの数

NoOfReplicas = 2のHA構成の場合、少なくとも3つの個別のホストが必要です。すべてのデータのコピーを持つデータノードプロセスごとに1が必要です。2つのデータノードプロセス間の通信が失敗したときに「アービトレーター」として機能するには、3分の1が必要です。これにより、データノードの1つだけが書き込みトランザクションを受け入れ続けることが保証され、データの相違(スプリットブレイン)が回避されます。ホストが2つしかない場合、クラスターは一方のホストの障害に対してのみ回復力があり、代わりにもう一方のホストに障害が発生すると、クラスター全体に障害が発生します。アービトレーションの役割は非常に軽量であるため、この3番目のマシンは他のほとんどすべてのタスクにも使用できます。

データの局所性

NoOfReplicas = 2の2ノード構成では、各データノードプロセスがすべてのデータを格納します。ただし、これは、データの読み取り/書き込みに1つのデータノードプロセスのみが使用されることを意味するものではありません。どちらのプロセスも書き込みに関与し(コピーを維持する必要があるため)、通常、どちらのプロセスも読み取りに関与する可能性があります。

2ノード構成で読み取りの局所性を改善するためのいくつかの作業が検討されていますが、具体的なものはありません。

これは、MySQLD(または別のNdbApiクライアント)が2つのデータノードの1つと同じ場所に配置されている場合でも、他のデータノードとの通信が非常に多いことを意味します。

于 2012-05-02T12:47:46.220 に答える