MySQL Cluster集群

MySQL学习笔记


一,集群Cluster

Cluster集群,就是一组节点的组合。这里的节点是一个逻辑概念,一台计算机上可以存放一个节点,也可以存放多个节点。这些节点的功能各不相同,有的用来存储数据(数据节点),有的用来存放表结构(SQL节点),有的用来对其他节点进行管理(管理节点)。这些节点组合在一起,可以为应用提供具有高可用性、高性能和可缩放性的Cluster数据管理。

MySQL使用NDB存储引擎来对数据节点的数据进行存储。

理论上,MySQL Cluster通过数据的分布式存储和可扩展的系统架构,可以满足更大规模的应用,而且通过冗余策略,可以大大地提高系统的可靠性和数据的有效性。


二,MySQL Cluster架构

MySQL Cluster的系统架构如图。
这里写图片描述

从上图中可以看出,MySQL Cluster按照节点类型可以分为3部分。
1,管理节点
管理节点用来对其他节点进行管理。实际操作中,是通过对一个叫做config.ini的配置文件进行维护而起到管理的作用。该文件可以用来配置有多少需要维护的副本、需要在每个数据节点上为数据和索引分配多少内存、数据节点的位置、在每个数据节点上保存数据的磁盘位置、SQL节点的位置等信息。管理节点只能由一个,配置要求不高。

2,SQL节点
SQL节点可以理解为应用和数据节点之间的一个桥梁。应用不能直接访问数据节点,只能先访问SQL节点,然后SQL节点再去访问数据节点来返回数据。Cluster中可以有多个SQL节点,通过每个SQL节点查询到的数据都是一致的,通常来说,SQL节点越多,分配到每个SQL节点的负载就越小,系统的整体性能就越好。

3,数据节点
数据节点用来存放Cluster中的数据,可以有多个数据节点。每个数据节点可以有多个镜像节点。任何一个数据节点发送故障,只要它的镜像节点正常,Cluster就可以正常运行。

这3种逻辑上不同的节点物理上可以存放在不同的服务器上,也可以在同一台服务器上。

MySQL Cluster的访问过程:前台应用一定的负载均衡算法将对数据库的访问分散到不同的SQL节点上,然后SQL节点对数据节点进行数据访问并从数据节点返回结果,最后SQL节点将收到结果返回给前台应用。而管理节点并不参与访问过程,它只用来对SQL节点和数据节点进行配置管理。


三,参考资料

《深入浅出MySQL 数据库开发。优化与管理维护》