MySQL Cluster是MySQL集群的一种常用技能,也是MySQL官方供应的,多主多从构造,该技能许可在无共享的系统中支配“内存中”数据库的Cluster。通过无共享体系构造,系统能够利用廉价的硬件,而且对软硬件无分外哀求。适用于分布式打算环境下的高冗余、高实用版本。对数据库的构造和功能进行了拆分,分成了管理节点、数据存储节点和SQL节点。每个设备可以只发挥个中一部分浸染,并且多个设备之间可以进行组件集群,实现冗余备份,防止单点故障。
MySQL Cluster由一组打算机组成,每台打算机上均运行多种进程,包括MySQL做事器,管理做事器,MySQL Cluster数据节点,以及(可能)专门的数据访问运用程序。
MySQL集群架构如下所示:

MySQL集群架构图
SQL节点:对外供应访问MySQL集群的入口,该节点可以有多个。卖力与WEB运用程序交互,承接来自上层的SQL命令,所有的数据节点可以起到相同的浸染,在任意一个SQL节点上的命令都会在系统中生效,从而可以起到相互备份和负载分担的浸染,可以防止单点故障。
数据节点:用于存储数据,集群中有多个数据节点,每个数据节点都会存储所有数据,这样当一个数据节点宕机后,还会有其他的数据节点存储数据,系统仍旧可以连续利用。数据节点的数目与副本的数目干系,是片段的倍数。例如,对付两个副本,每个副本有两个片段,那么就有4个数据节点。
图-1
如图-1,集群中存在四个数据节点,分别是Node1、Node2、Node3、Node4,集群数据分区存储,个中Node1存储数据的partition 0,同时存储partition 2的一个备份副本用作冗余。其他节点类似。这样设计的好处如以下:图-2,
图-2
在这个例子中可以看出,纵然group0和group1中各有一个Node故障,全体Cluster环境中也会有一份完全的数据,担保系统正常运转。
管理节点:MySQL全局的管理者,起到联系并管理整体架构的浸染。全体集群只有一个管理节点,掌握其他节点启停,查看节点状态等。掩护了集群全局配置信息,因此在全体集议论况中该当优先于所有节点启动。Cluster中的其他节点从管理做事器检索配置信息,并要求确认管理做事器所在位置的办法。当数据节点内发生新的事宜时,该节点将关于这类事宜的信息发送到管理做事器上,写入到Cluster日志中。
二、NDB引擎先容
在MySQL实现集群Cluster架构中,存储节点利用的存储引擎为NDB引擎。NDB引擎是一种分布式的基于内存的引擎,因此作为MySQL集群的Cluster架构中的存储节点,内存一定要足够大。
NDB引擎有以下优点:
基于内存存储,没有磁盘I/O瓶颈,速率快。扩展性好,增加节点即可实现数据库集群Cluster的扩展。冗余性好,单个节点故障,集群还可以供应做事。高可用性:故障检测及迁移,多节点备份。负载均衡:切换某做事访问某节点,分摊单个节点的数据库压力。同时,NDB引擎也有以下缺陷:
由于存储基于内存,因此在设备断电后数据就会丢失。存储空间大小受内存大小限定。多个节点分布式架构整体相应速率会受到网络影响。脑裂:导致数据库节点彼此独立运行的集群故障称为“脑裂”。这种情形可能导致数据不一致,导致无法修复。例如当两个数据节点独立更新同一表上的同一行数据时。