1 MySQL Cluster概述
1.1 MySQL Cluster基本概念
MySQL Cluster是一种MySQL集群的技术,是由一组计算机构成的,每台计算机可以存放一个或者多个节点,其中包括MySQL服务器、NDB Cluster的数据节点、其他管理节点,以及专门的数据访问程序,这些节点组合在一起,就可以为应用提供高性能、高可用性和可缩放性的Cluster数据管理。
MySQL Cluster的访问过程大致是这样的,应用通常使用一定的负载均衡算法将对数据的访问分散到不同的SQL节点,SQL节点对数据节点进行数据访问并从数据节点返回数据结果,管理节点仅仅只是对SQL节点和数据节点进行配置管理。
1.2 MySQL Cluster节点
MySQL Cluster按照节点类型可以分为3种类型的节点,分别是管理节点、SQL节点、数据节点,实际上,数据保存在NDB存储服务器的存储引擎中,表结构保存在MySQL服务器中,应用程序通过MySQL服务器访问数据,而集群管理服务器则通过管理工具ndb_mgmd来管理NDB存储服务器。
1.2.1 管理节点
管理节点主要用来对其它节点进行管理,通常通过配置config.ini文件来配置集群中有多少需要维护的副本,配置每个数据节点上为数据和索引分配多少内存、IP地址,以及在每个数据节点上保存数据的磁盘路径。
管理节点通常管理Cluster配置文件和Cluster日志,Cluster中的每个节点从管理服务器检索配置信息,并请求确定管理服务器所在位置的方式,如果节点内出现新的事件时,节点将这类事件的信息传输到管理服务器,将这类信息写入到Cluster日志中。
一般在MySQL Cluster体系中至少需要一个管理节点,另外值得注意的是,因为数据节点和SQL节点在启动之前需要读取Cluster的配置信息,所以通常管理节点是最先启动的。
1.2.2 SQL节点
SQL节点就是mysqld服务器,应用不能直接访问数据节点,只能通过SQL节点访问数据节点来返回数据,任何一个SQL节点都是连接到所有的存储节点的,所以当任何一个存储节点发生故障时,SQL节点都可以把请求转移到另一个存储节点执行。通常来说,SQL节点越多越好,SQL节点越多,分配到每个SQL节点的负载就越小,系统的整体性能就越好。
1.2.3 数据节点
数据节点用来存放Cluster里面的数据,MySQL Cluster在各个数据节点之间复制数据,任何一个节点发生了故障,始终会有另外的数据节点存储数据。