您的位置:首页 > 数据库 > MySQL

MySQL集群节点、节点组、数据副本、以及分区

2015-07-12 13:45 274 查看
MySQL集群节点、节点组、数据副本、以及分区
本文仅为官方文件之翻译

这个部分讨论MySQL集群划分和冗余数据的手段。

下面几段内容的话题集中讨论了这个问题。

(数据)节点。是一个ndbd进程,存储着一个数据副本,也是一个指到节点组中节点的分区的拷贝(下面会提到)。

每个数据节点应该部署在独立的计算机上。虽然也可以在一个机器上跑多个数据节点,但是这个不被推荐。

提到ndbd进程时,节点和数据节点有相同的意义。但是管理节点和查询节点应该是要准确叙述的。

节点组。一个节点组包含一个或者数个节点,分区,或者副本。

节点组的数量在MySQL集群中不能被直接指定;它是数据节点数量和副本数量(NoOfReplicas参数)的一种功能性的反映。如下所示:[number_of_node_groups] = number_of_data_nodes/ NoOfReplicas

因此,一个4个节点的MySQL集群如果NoOfReplicas被设置为1那么就有4个节点组,2个节点组当NoOfReplicas为2,1个节点组如果NoOfReplicas为4。数据副本将在随后讲到。

注意:所有节点组在MySQL集群中都有相同数量的数据节点。

你也在线可以添加新的节点组。

分区。这是一个集群分区存贮的机制。一个集群中有多少个节点这个集群就有多少个分区。每个节点都负责至少一个指定给它的分区的拷贝(也就是一个数据副本)。

一个分区是完全属于一个节点的;一个节点可以存贮数个数据副本。

NDB和用户自定义分区。一般来说MySQL会自行进行数据分区,但是用户也是可以自行定义数据分区的。但是要遵循如下的主题:

1 只有数据库的键和线性键可以在生产环境中做分区。

2 使用ndbd的时候,最大分区的数量是严格遵守如下公式的:8 * [number of node groups]

副本。一个分区的拷贝。每个节点组中的节点都保存着一个数据副本。有时候也叫做分区副本。副本的数量与每个节点组中节点的数量相同。

下图展示了4节点MySQL集群,有两个节点组,每个组两个节点。节点1 和 2 属于组0,3和4属于组1.

注意:

这里只展示了数据节点;一个可以工作的集群需要ndb_mgm进程以及SQL节点。



集群存储的数据被分为了4个区,编号0,1,2,3。每个分区都在同一个节点组里面有多个拷贝。分区被存储在可替换的节点里,以如下的方式:

分区0存储在节点组0里面;主副本在节点1,一个后备副本在节点2里面。

分区1存储在节点组1里面;主副本在节点3,一个后备副本在节点4里面。与分区0的顺序相反。

分区2存储在节点组0里面;主副本在节点2,一个后备副本在节点1里面。

分区3存储在节点组1里面;主副本在节点4,一个后备副本在节点3里面。与分区2的顺序相反。

这样设计的好处是,只要节点组里面还有一个节点在工作,那么集群就可以拥有一个完备的数据的拷贝可用。下个图将展示这个内容。



在这个例子中,集群有两个节点组,每个节点组有两个节点,只要每个节点组里面至少有一个节点在工作,那么就可以保证集群是活的。然而,要是节点组里面的所有节点都失败了,那么集群将失去一个完整的分区,那么集群也不能为客户端提供完备的数据访问了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: