首页 > 代码库 > MySQL学习笔记02MySQL集群相关概念

MySQL学习笔记02MySQL集群相关概念

1.1.1. MySQL集群基本框架

本文所介绍的MySQL集群指基于NDBClusterMySQL 集群。 一个MySQL集群包含一个或多个Management NodeData NodeSQL Node

管理节点Management Node:用于对集群本身的管理,运行ndb_mgmd服务。应当首先启动管理节点,再启动其它节点。

数据节点Data Node:用于存储集群的数据,运行ndbmtdndbd服务。数据节点支持复制。

SQL节点SQL Node:用于对外提供SQL查询服务,运行mysqld服务,其中的数据表使用ndbcluster存储引擎。

NDBClusterNDBClusterMySQL提供的一种基于内存的存储引擎,提供了高可用和数据持久化的特性。 MySQL还提供了其它的存储引擎,包括MyISAMInnoDB以及Memory等几种。

MySQL集群的节点之间的关系可以使用下图描述。

 技术分享

 

1.1.2. 节点分组、数据分区以及复制

 

(1)MySQL Cluster的数据表在数据节点中的分布方式:

MySQL Cluster中的数据节点可以成一个或多个节点组(Node Group)。而一个数据表可以分成一个或多个分区(Partition)。每个分区的数据存在在一个节点组中的多个节点中,这些节点中的分区互为复制(Replicas)

下图展示了一个数据表分为4个分区P1,P2,P3,P4时各个分区在4个节点N1,N2,N3,N4组成的2个节点组G1,G2中的分布情况。P1P2分布于G1中,P3P4分布于G2中。任何一个分区至少同时存储于2个节点中。

 技术分享

 

 

 

(2)这种基于节点分组和数据分区的分布方式的优点:

在任何数据节点的单点失败时,该节点所存储的数据在其它节点还存在至少一份复制品。从而避免了单点故障造成集群失效。

 

 

 

 

1.1.3. NDBClusterInnoDB的比较

NDBClusterInnoDB这两种存储引擎的比较结果见下表:

本表数据来源于MySQL集群官方文档https://dev.mysql.com/doc/index-cluster.html

 

特性

InnoDB

NDBCluster

MySQL server版本

5.7

5.7

InnoDB版本

5.7.20

5.7.20

NDBCluster版本

N/A

7.5.8/7.6.4

数据量

64TB

128TB

事务隔离级别

所有级别

READ COMMITTED

MVCC

支持

不支持

数据压缩

支持

不支持

大的数据行(>14KB)

VARBINARY,VARCHAR,

BLOB,TEXT

BLOB,TEXT

复制

MySQL Replication

异步复制、半同步复制

集群内部:自动同步复制;

集群之间:异步复制(MySQL Replication)

读操作横向扩展(scale out)

MySQL Replication

集群内部:自动分区;

集群之间:复制。

写操作横向扩展(scaleout)

不支持。

应用程序级别的分区

支持。

集群内部:自动分区。

高可用(HA)

InnoDB cluster

NDBCluter 99.999%

节点失效恢复和故障转移

MySQL 分组复制

NDBCluster体系结构提供支持

节点失效恢复时间

>=30

<=1

实时性能

N/A

支持

并发写

支持

最多48个并发写

复制冲突检测和解决

支持

支持

哈希索引

不支持

支持

在线添加节点

MySQL分组复制添加读写节点

添加任何节点

 

 

 

 

 

 

1.1.4. NDBCluster的限制

 

使用NDBCluster存储引擎时存在以下的限制:

(1)不支持临时数据表。

(2)不能为TEXTBLOG类型的列建立索引。

(3)不支持FULLTEXT全文索引。

(4)使用哈希索引时不应该有NULL,否则导致全表扫描。

(5)不支持前缀索引。

(6)(BIT)列不能作为主键。

(7)AUTO_INCREMENT列只能用于主键。

(8)外键限制:被引用的外键字段如果不是主键,则必须有UNIQUE索引。

(9)ON UPDATE CASCADE:当主表中的字段为主表的主键时,不被支持。

(10)事务隔离级别:仅支持READ COMMITTED隔离级别。

 

MySQL学习笔记02MySQL集群相关概念