10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

MySQL 8.0参考手册/.../ NDB集群节点、节点组、片段副本和分区

23.2.2 NDB集群节点、节点组、分片副本及分区

介绍NDB集群对数据进行划分和复制存储的方式。

下面几段将讨论一些对理解这个主题至关重要的概念。

数据节点。一个ndbdndbmtd进程,该进程存储一个或多个片段副本-那就是分区(在本节稍后讨论)分配给节点是其成员的节点组。

每个数据节点都应该位于单独的计算机上。虽然也可以在一台计算机上托管多个数据节点进程,但通常不建议使用这种配置。

这是常见的术语节点而且数据节点可互换:在指…时可互换使用ndbdndbmtd过程;如上所述,管理节点(ndb_mgmd进程)和SQL节点(mysqld流程)在本讨论中是这样指定的。

节点组。节点组由一个或多个节点组成,并存储分区或集合片段副本(见下一条)。

NDB集群中的节点组数量不能直接配置;它是数据节点数量和片段副本数量的函数(NoOfReplicas配置参数),如下所示:

[# of node groups] = [# of data nodes] / NoOfReplicas . [NoOfReplicas .

因此,一个有4个数据节点的NDB集群有4个节点组NoOfReplicas的值设置为1config.ini文件,2个节点组NoOfReplicas设置为2,1节点组如果NoOfReplicas设置为4。片段副本将在本节稍后讨论;有关NoOfReplicas,请参阅第23.4.3.6节“定义NDB集群数据节点”

请注意

NDB集群中所有节点组的数据节点个数必须相同。

您可以在线向运行中的NDB集群添加新的节点组(从而添加新的数据节点);看到第23.6.7节“在线新增NDB集群数据节点”,以查询更多资料。

分区。这是由集群存储的数据的一部分。每个节点负责保留分配给它的任何分区的至少一个副本(即至少一个片段副本),以供集群使用。

NDB Cluster默认使用的分区数量取决于数据节点的数量和数据节点使用的LDM线程的数量,如下所示:

[# of partitions] = [# of data node] * [# of LDM thread]

当使用数据节点运行时ndbmtd, LDM线程数由for的设置控制MaxNoOfExecutionThreads.当使用ndbd只有一个LDM线程,这意味着参与集群的节点和集群分区一样多。使用时也是如此ndbmtdMaxNoOfExecutionThreads设置为3或更少。(您应该意识到LDM线程的数量随着该参数的值而增加,但不是严格的线性方式,并且在设置它时有额外的约束;参见MaxNoOfExecutionThreads为更多的信息。)

NDB和自定义分区。NDB集群分区正常NDBCLUSTER自动表。但是,也可以使用用户定义的分区NDBCLUSTER表。这受以下限制:

  1. 只有关键而且线性关键的生产中支持分区方案NDB表。

  2. 可以为任意显式定义的分区的最大数量NDB8 * (LDM线程数] * [节点组数量, NDB集群中节点组的数量由本节前面讨论的确定。运行时ndbd对于数据节点进程,设置LDM线程的数量没有影响(因为ThreadConfig仅适用于ndbmtd);在这种情况下,为了执行此计算,可以将此值视为等于1。

    看到第23.5.3节,ndbmtd - NDB集群数据节点守护进程(多线程),以查询更多资料。

有关NDB集群和用户自定义分区的更多信息,请参见第23.2.7节“NDB集群的已知局限性”,第24.6.2节,“与存储引擎相关的分区限制”

片段复制。这是集群分区的副本。节点组中的每个节点都存储一个片段副本。有时也被称为分区的副本.分片副本的数量等于每个节点组的节点数量。

片段副本完全属于单个节点;一个节点可以(通常也是这样)存储多个片段副本。

下图展示了一个运行着四个数据节点的NDB集群ndbd,布置在两个节点组中,每组两个节点;节点1、节点2属于节点组0,节点3、节点4属于节点组1。

请注意

这里只显示了数据节点;尽管一个工作的NDB集群需要ndb_mgmd进程,以及至少一个SQL节点来访问集群存储的数据,为了清晰起见,图中省略了这些。

图23.2包含两个节点组的NDB集群

内容在周围的文本中有描述。

集群存储的数据分为4个分区,分别编号为0、1、2、3。每个分区存储在同一个节点组上的多个副本中。分区存储在备用节点组上,如下所示:

  • 分区0存储在节点组0上;一个主要片段复制(主副本)存储在节点1上备份片段复制(分区的备份副本)存储在节点2上。

  • 分区1存储在另一个节点组(节点组1)上;该分区的主片段副本在节点3上,其备份片段副本在节点4上。

  • 分区2存储在节点组0上。然而,它的两个片段副本的位置与分区0的位置相反;对于分区2,主分片副本存储在节点2上,备份副本存储在节点1上。

  • 分区3存储在节点组1上,它的两个片段副本的位置与分区1的位置相反。也就是说,它的主片段副本位于节点4上,备份位于节点3上。

对于NDB集群的持续运行,这意味着:只要参与集群的每个节点组至少有一个节点在运行,集群就拥有所有数据的完整副本,并保持可用性。下一个图表说明了这一点。

图23.3 2x2 NDB集群所需节点数

内容在周围的文本中有描述。

在本例中,集群由两个节点组组成,每个节点组由两个数据节点组成。的实例运行ndbd.节点组0中的至少一个节点和节点组1中的至少一个节点的任何组合都足以保持集群活着.但是,如果单个节点组中的两个节点都失败,则由另一个节点组中的其余两个节点组成的组合是不够的。在这种情况下,集群失去了整个分区,因此不能再提供对所有NDB集群数据的完整集合的访问。

单个NDB Cluster实例最多支持48个节点组。