MySQL 数据库高可用性架构汇总

一、MHA MHA 通过管理节点自动化主服务器故障转移,快速将从服务器晋级为主服务器(通常在 10-30s),而不影响复制的一致性, 适用于任何存储引擎。管理节点需要 ssh 链接 myql 服务器,高可用方面是一个相对成熟的解决方案。 主要特性: 1. 主服务器的自动监控和故障转移 2. 交互式主服务器故障转移 3. 非交互式的主故障转移 4. 在线切换主从服务器 主要组成:master mysql ,slave mysql ,slave myql(master 备节点),管理节点 参考文章: 1.mysql-master-ha:mysql master 高可用性管理工具 2.mysql mha 主从自动切换 高可用

二、MMM MMM 即 Master-Master Replication Manager for MySQL(mysql 主主复制管理器)关于 mysql 主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟 ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。MySQL 本身没有提供 replication failover 的解决方案,通过 MMM 方案能实现服务器的故障转移,从而实现 mysql 的高可用。MMM 不仅能提供浮动 IP 的功能,更可贵的是如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。

三、Heartbeat+DRBD+mysql 高可用方案 采用 Heartbeat 双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由 DRBD 这个工具来保证。默认情况下只有一台 mysql 在工作,当主 mysql 服务器出现问题后,系统将自动切换到备机上继续提供服务,当主数据库修复完毕,又将服务切回继续由主 mysql 提供服务。 适用于数据库访问量不太大,短期内访问量增长不会太快,对数据库可用性要求非常高的场景。

四、Mysql cluster MySQL Cluster 实际上是在无共享存储设备的情况下实现的一种完全分布式数据库系统,其主要通过 NDB Cluster(简称 NDB)存储引擎来实现。MySQL Cluster 刚刚诞生的时候可以说是一个可以对数据进行持久化的内存数据库,所有数据和索引都必须装载在内存中才能够正常运行,但是最新的 MySQL Cluster 版本已经可以做到仅仅将所有索引和索引数据装载在内存中即可,实际的数据可以不用全部装载到内存中,架构如下图所示:

由上图可知 MySQL Cluster 由 一组计算机构成,每台计算机上均运行着多种进程,包括 MySQL 服务器,NDB Cluster 的数据节点,管理服务器,三个节点的功能如下: 1、 管理(MGM)节点:这类节点的作用是管理 MySQL Cluster 内的其他节点,如提供配 置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置, 应在启动其他节点之前首先启 动这类节点。MGM 节 点是用命令“ndb_mgmd”启动的。 2、 数据节点:这类节点用于保存 Cluster 的数据。数据节点的数目与 副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有 4 个数据节点。不过没有必要设置多个副本。数据节点是用命令“ndbd”启动的。 3、 SQL 节点:这是用来访问 Cluster 数据的节点。对于 MySQL Cluster,客户端节点是使用 NDB Cluster 存储引擎的传统 MySQL 服务器。通常,SQL 节点是使用命令“mysqld –ndbcluster”启动的,或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动。

五、MySQL/Galera 集群-多主高可用性负载均衡 Galera 是一个 MySQL(也支持 MariaDB,Percona)的同步多主集群软件,目前只支持 InnoDB 引擎。Galera 集群的复制功能基于 Galera library 实现, 为了让 MySQL 与 Galera library 通讯,特别针对 MySQL 开发了 wsrep API。Percona 和 MariaDB 发布版本中,包含了 Galera 集群。 主要功能: 1.同步复制 2.真正的 multi-master,即所有节点可以同时读写数据库 3.自动的节点成员控制,失效节点自动被清除 4.新节点加入数据自动复制 5.真正的并行复制,行级 6.用户可以直接连接集群,使用感受上与 MySQL 完全一致

Galera 本质是一个 wsrep 提供者(provider),运行依赖于 wsrep 的 API 接口。Wsrep API 定义了一系列应用回调和复制调用库,来实现事务数据库同步写集(writeset)复制以及相似应用。目的在于从应用细节上实现抽象的,隔离的复制。虽然这个接口的主要目标是基于认证的多主复制,但同样适用于异步和同步的主从复制。

转载:https://www.2cto.com/database/201612/572250.html