MySQL-Cluster 是 MySQL 官方推出的一款商业的集群组件,虽然目前在国内市面上使用的不是很多,在我看来,主要原因有两个:
- MySQL-Cluster 这款产品刚推出不久,目前存在的 Bug 比较多,大家都不愿意当小白鼠;
- MySQL-Cluster 是一款商业化产品,使用一些高级功能需要收费。
不过这款产品十分有潜力,在功能上非常强大。比如 MySQL-Cluster 提供了数据的强冗余特性,在不同数据节点上将业务数据进行了多份的存储,同时对于存储在数据库的中的数据,采用了分布式的方式进行存储,即采用无共享的存储方式,可以支持大数据量的存储和计算。
另外,在 MySQL-Cluster 集群架构中,将整个集群环境分为了管理节点、SQL 节点和数据节点,每个节点负责不同的内容,比如:
- 管理节点负责监测整个集群进行运行情况,以及监控 SQL节点和数据节点;
- SQL节点负责处理应用发来的 SQL 语句并对其进行解析;
- 数据节点负责按照 SQL 节点解析之后的语言,进行抽取和过滤数据。
简单的 MySQL-Cluster 集群架构示意图如下:
因为每个节点又采用了多节点部署模式:某一个节点的故障并不会影响到整个集群的正常运行,这样不仅增强了 MySQL-Cluster 集群的健壮性,同时也增强了集群内数据的安全性。
另外,在 MySQL-Cluster 集群环境下,采用的存储过程不是我们目前主流的 InnoDB,而是 NDB,即一种运行在内存中的存储引擎,这个存储引擎在存储数据和读取数据上效率非常高。还有,NDB 存储引擎同样是支持事务以及支持行级锁的。按照目前 MySQL 官方的发展方向,在未来很有可能使用 NDB 来代替 InnoDB 存储引擎。
而我们在配置 MySQL-Cluster 集群环境时,需要多台计算机来配置,每台计算机可以充当单一的角色也可以充当多个角色,但是监控节点一般是单独放在某一个节点上的。
以上就是 MySQL-Cluster 概念的简单介绍,对于我提及“管理节点、SQL 节点和数据节点”,我们将利用后三个小节详细讲解。