私が知っているように、mysqldプロセスはMySQlクラスターの一種のルーターです。リクエストを適切なndbdノードに転送します。
3つの異なるマシンに3つのndbdノードがあり、レプリケーションを使用しないと仮定します。 mysqldプロセスはいくつ必要ですか?私は1つと言いますか?私にとっては、マスタースレーブアーキテクチャ(mongodbと比較可能)のようなものですが、各ndbdノードにも1つのmysqldプロセスがある構成を見ました。どうして?
MySQLCluster環境でmysqld
を実行しているDBサーバーの場合、DBサーバーの役割はSQLノードと呼ばれます。
ストレージNodeとSQL Node: mysqld--ndb-clusterはMySQLClusterで実行する必要がありますか)の違いについて説明したことがありますデータノード? 。質問のコメントセクションで、 Mat Keep は、 MySQL Cluster-データノードにテーブルデータを格納する を確認する必要があるとコメントしました。
小さなクラスターでは、ストレージノードでmysqldを実行しても大きな影響は見られません。大規模なクラスターでは、データを物理ファイルに保存する予定がない限り、SQLノードはデータNodeとは別にセットアップされると思います。
DBAStackExchangeの3つのMySQLClusterの達人から追加情報を見つけることができます
あなたのコメントに基づいて
より正確には、データノードを実行する3台のマシンがあります。各マシンには8GbのRAMがあります。合計で、データベースには最大5,000万〜1kbのレコードが格納されます。ここでどうしますか?
個人的には、4番目のサーバーを取得してSQL Node)として実行し、他のサーバーはストレージ(データ)ノードのままにします。SQLノードとデータノードのハードウェアとOSが同じであることを確認します。設定。
書き込みの少ないDBクラスターの場合は、チャンスがあり、各データでmysqld --ndbcluster
を実行できますNode(4番目のサーバーは必要ありません)。
ヘッダーと可能なインデックスを数えなくても、最大5,000万の約1kBレコードは最大50GBのデータです。そして、それぞれ8GBのRAM)を備えた3台のマシンがあります。つまり、データノードは最大6GBのRAMを使用できます。MySQLClusterのすべてのデータレコードは2つのノードに保存する必要があります。したがって、クラスターには(3 * 6GB)/ 2 = 9GBのデータを保存できます。
データレコードヘッダー、可能なインデックス、その他のメタデータのため、実際の量はさらに少なくなります。
したがって、50GBのデータをクラスターに保存するには、 MySQL Clusterディスクデータテーブル を使用する必要があります。
ちなみに、デフォルトのクラスター設定はNoOfReplicas=2
3つのデータノードを持つことはできません。 ドキュメント は"The value for this parameter must divide evenly into the number of data nodes in the cluster"
。
2つのデータノードを使用して3番目のサーバーをSQLノード専用にするか、NoOfReplicas
を1に変更して、高可用性を失う必要があります。