在前面了解了浅谈MySQL高可用复制架构以后,认识到通过简单配置步骤,就能构建出强大的数据库架构,但从复制架构可以看出无论是主备切换,还是主从换位等操作,或多或少都需要一些“短暂的维护”和人工参与,因此若要想达到4个9或者5个9的高可用,光用复制架构还远远不够。

除了复制架构以外,MySQL还有一个同样令人瞩目的高可用架构-集群架构。

基本概念

MySQL集群是一个无共享的、分布式节点架构的高实用、高冗余存储方案,它采用了NDB Cluster 存储引擎,其目的是提供容错性和高性能。数据在单个数据节点上进行存储和复制,每个数据节点运行在独立的服务器上,并维护数据的一份拷贝。数据更新使用Read-Committed Isolation来保证所有节点数据的一致性,使用两阶段提交保证所有节点的状态一致。无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见。

MySQL集群最初将所有的数据都保存在内存中,没有任何永久性存储,后来逐步允许将数据存储在磁盘上。通过存储引擎层将MySQL服务器作为查询引擎,可以使MySQL集群的性能达到最佳。这样,就可以把应用透明的从MySQL迁移到MySQL集群中去。

核心架构

MySQL集群架构主要由三类组件构成:

ü  MySQL应用服务节点

ü  MySQL Network Database 数据存储节点

ü  MySQL NDB Management 管理节点

1)  MySQL应用服务节点

由一组MySQL服务器组成,有时也称为SQL节点,即mysqld服务。可以提供服务接口服务(SQL、LDAP、Web服务等),支持一个或多个查询检索应用,然后将数据从存储节点返回。MySQL应用服务节点服务器支持水平扩展,提供负载均衡的能力。

2)MySQL数据存储节点

将数据存储于无共享架构中,支持服务器水平扩展,一个数据节点损坏了,其他的数据节点都拥有相同的拷贝,仍然可以对外提供服务,而这对于外部应用来说是透明的,外部应用完全察觉不到MySQL集群中有某个节点的故障。MySQL数据存储节点提供的主要功能:

l  存储和管理内存数据或磁盘数据

l  自动或用户自定义分区管理数据

l  在数据节点彼此之间进行同步复制

l  事务处理和数据检索

3)MySQL NDB Management 管理节点

MySQL集群的心脏,负责管理集群,并使配置信息对于其他的节点都可用。管理节点用于启动集群,或是在系统经过重新配置的情况下,管理节点可以轻易的启停集群,而不影响数据存储节点和应用服务节点的运行。默认情况下,管理节点还提供仲裁服务。通常只需配置一个管理节点;然而为了排除单点故障需要,有可能的话,尽量增加管理节点的数量。管理节点只在集群启动和发生配置变化的时候起作用,集群启动以后,不论管理节点处于什么状态, 整个集群都将保持其在线和可用状态。

mysql集群 负载均衡 mysql集群架构_MySQL

上图摘取于MySQL官网,示意了最少的MySQL集群冗余拓扑。分别由两个管理节点、两个数据节点和两个应用服务(SQL)节点构成

小结

MySQL集群的强大之处在于将表分区,然后将它们有序组织分布到独立的节点上去,并且所有节点都支持水平扩展。MySQL集群的并行架构与多主数据库相当,这样系统就可以并发地执行大量的读写操作,所有的更新对所有存储在数据节点的应用程序节点(通过SQL命令或NDB API)都立即可用。