Mysql集群
高性能、高可用性、冗余和可扩展性都是数据库规划时需要考虑的重要因素,常常采用商用高可用性硬件和均衡负载等方案来录求改善复制拓扑方法。尽管这样常常可以满足大部分需求,但是如果需要无单点故障的方案,而且要求极高的吞吐量,上线时间达到99.999%,那么就可以考虑使用mysql集群技术。
一、mysql集群概述
1、什么是mysql集群
mysql集群是一个无共享的、分布式节点架构的存储方案,其目的是提供容错性和高性能。数据在单个数据节点上存储和复制,每个数据节点运行在独立的服务器上并维护数据的一份拷贝。每个集群还有管理节点。数据更新使用读已提交隔离级别来保证所有节点数据的一致性,使用两阶段提交机制保证所有节点都有相同的数据。
无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见。传播更新使用一种复杂的通信机制,这一机制专用来提供跨网络的高吞吐量。该架构通过多个mysql服务器分配负载,从而最大程度地达到高性能,通过在不同位置存储数据保证高可用性和冗余。
2、mysql集群组件
Mysql集群的典型部署是在某个网络的不同机器上安装集群组件。因此,mysql集群又称网络数据库(network database, NDB)。本文所述的“mysql集群”指的是mysql服务器和NDB组件,而“NDB”或“NDB集群”则特指集群组件。
Mysql集群是一个数据库系统,使用mysql服务器作为前端来支持标准的SQL查询。名为ndbcluster的存储引擎是连接mysql服务器和集群技术的接口,所以,如果没有NDB集群组件,就不能使用ndbcluster存储引擎。
但是,如果没有mysql服务器也可以使用NDB集群技术,不过这样的话,就需要写一些NDB API的底层编程。
NDB API是面向对象的,实现了索引、扫描、事务和事件处理。
3、集群与复制的区别
通常认为集群包含成员、消息、冗余和自动故障转移等功能,而复制仅仅是一个服务器向另一个服务器发送消息的方式。
二、mysql集群安装
1、 mysql集群架构
mysql集群有如下三层:
(a) 应用程序层:负责与mysql服务器通信的各种应用程序。