这一小节中,我们来继续讲解 MySQL Cluster 中的基本概念:数据节点(主要讲解数据在数据节点的存储方式,以及针对数据节点本身,一些经常提到的专业术语)。
在 MySQL Cluster 集群环境中,数据是单独存储在指定的服务器上,在这些服务器上,MySQL 中的数据采用了分布式+数据冗余的方式来进行存储,也就是说,任何一个节点的宕机并不会导致数据的丢失,基于安全的考虑,在生产环境中数据节点的服务器配置,我们一般至少要配备 3 台。
讲到这里,有一个存储层面的知识点,那就是在 MySQL Cluster 集群中,数据在数据节点中是以 NDB 存储引擎的方式存储,而非我们熟知的 InnoDB 存储引擎。
不仅如此,在数据节点上的数据存储是可以配置多份镜像的(镜像指的是数据的副本),因为这些数据分散存储在多个数据节点上,如果某一个节点或某几个节点宕机,仍然存在数据丢失的风险。所以我们可以在数据节点上把这些数据进行多份的存储(具体存储几份是由参数 NoOfReplicas 来决定,该参数的配置我会在接下来的小节“Linux 安装和配置-SQL节点和数据节点配置”中进行演示)。
以上是数据在存储层面的几个注意事项,除此之外,你还要注意数据节点、节点组、段副本之间的关系,它们经常被混淆,接下来我们简单解释一下这 3 个术语。
数据节点
整体上讲,MySQL Cluster 环境中的每个数据节点服务都是由 ndbd 进程来提供服务的。
root 1297 1 0 Mar08 ? 00:00:22 /usr/local/mysql/bin/ndbd --initial root 3436 3391 0 19:00 pts/1 00:00:00 grep --color=auto mysql
每个数据节点存储着一个或多个片段副本,也就是分配给该节点所在节点组的分区副本。
节点组
节点组,节点组由一个或多个节点组成,并存储分区或片段副本集,MySQL Cluster 集群中节点组的数量不能直接配置,节点组的数量是由数据节点数量和片段副本数量来决定的。即:节点组的个数=数据节点个数/NoOfReplicas 参数值。
段副本
段副本,即是一个集群分区的副本,节点组中的每个节点存储一个分片副本(有时也称为分区副本)。段副本的数量等于每个节点组的节点数量。一个段副本完全属于单个节点,一个节点可以存储多个片段副本。
好了,以上就是关于 MySQL Cluster 集群中,关于数据节点的理论性内容的讲解,从下一小节开始,我们将用 7 个小节结合实例来讲解 MySQL Cluster 集群的配置及日常使用。