Mysql高可用架构
- 复制(Replication) 是本文中所有 MySQL 技术的基础。包括:异步复制、半同步复制,增强半同步复制。
- InnoDB 副本集(MySQL InnoDB ReplicaSet) 无缝衔接其他 MySQL 官方提供的应用程序(MySQL Shell、MySQL Router),提供了另一种易于使用的编程方式来处理复制,属于复制(Replication) 的简易增强版。
- 组复制(MySQL Group Replication(MGR)) 是一种弹性伸缩、高可用、容错的复制拓扑,属于复制(Replication) 的分布式高可用版本,但其本身不提供客户端连接重定向、故障转移、负载均衡等功能。组复制和MHA的区别是,MHA需要设置一个从节点为master candicate才能作为主节点切换,组复制的主和从节点角色可以随意切换。另外MHA可以产生一个vip,这个是组复制没有的,要结合Mycat读写分离才能用同一个ip。
- InnoDB 集群(MySQL InnoDB Cluster)
是 InnoDB 副本集(InnoDB ReplicaSet) 与 组复制(Group Replication) 的合成版。
是 InnoDB 副本集(InnoDB ReplicaSet) 的高可用版,
是 组复制(Group Replication) 的简易(操作与搭建)、自动化、可编程的增强版。 - NDB 集群(MySQL NDB Cluster(MySQL Cluster)) 是 使用由 Oracle 发行的 NDB 商业版存储引擎的 MySQL 版本的服务器组成的无共享架构的内存数据库集群,与标准 MySQL Server 8.0 有很多差异与限制。它适用于分布式计算环境,具有高可用、高冗余的特点。MySQL Cluster 实际上是在无共享存储设备的情况下实现的一种完全分布式数据库系统,其主要通过 NDB Cluster(简称 NDB,network database)存储引擎来实现。
管理节点:用于管理集群其它节点; 守护进程ndb_mgmd. 管理节点是负责管理数据节点和SQL节点的相当于集群的大脑, 数据节点是专门负责集群存储数据的, SQL节点说白了就是给你工具连接用的。
数据节点:用于保存集群的数据; 守护进程ndbd
SQL节点:用于连接数据节点也就是我们常说的MySQL Server;守护进程mysqld
Mysql Cluster介绍
架构图
【概念】:MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统。不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能。和Oracle Real Cluster Application不太一样的是,MySQL Cluster 是一个Share Nothing的架构,各个MySQL Server之间并不共享任何数据,高度可扩展以及高度可用方面的突出表现是其最大的特色。
MySQL Cluster 实际上是在无共享存储设备的情况下实现的一种完全分布式数据库系统,其主要通过 NDB Cluster(简称 NDB,network database)存储引擎来实现。MySQL Cluster 刚刚诞生的时候可以说是一个可以对数据进行持久化的内存数据库,所有数据和索引都必须装载在内存中才能够正常运行,但是最新的 MySQL Cluster 版本已经可以做到仅仅将所有索引装载在内存中即可,实际的数据可以不用全部装载到内存中。
数据保存在“NDB存储服务器”的存储引擎中(数据节点),表(结构)则保存在“MySQL服务器”中(SQL节点)。
三种节点组成:
管理节点:用于管理集群其它节点; 守护进程ndb_mgmd
数据节点:用于保存集群的数据; 守护进程ndbd
SQL节点:用于连接数据节点也就是我们常说的MySQL Server;守护进程mysqld
解释一下 管理节点是负责管理数据节点和SQL节点的相当于集群的大脑, 数据节点是专门负责集群存储数据的, SQL节点说白了就是给你工具连接用的。
同步集群模式:
分为同步集群和异步集群。
1)同步集群:(mysql cluster)
结构:(data + sql + mgm节点)
2) 异步集群(mysql replication)
结构:(master + slave)
原理图
测试环境
本文搭建的MySQL集群以三台机子为例,
一个MySQL群集理想情况下至少有三台服务器,将管理节点单独放到一台服务器上。
IP | 主机名 | 备注 |
192.168.56.202 | node202 | 管理节点 |
192.168.56.203 | node203 | SQL节点 + 数据节点 |
192.168.56.204 | node204 | SQL节点 + 数据节点 |
192.168.56.206 | node206 | client访问测试 |
Mysql Cluster安装和配置
1. 下载MysqlCluster
MySQL :: Download MySQL Cluster