MySQL数据库高可用性架构

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

一、MHA

MHA :mysql-master-ha:mysql master 高可用性管理工具

通过管理节点自动化主服务器故障转移,快速将从服务器晋级为主服务器(通常10-

30s),而不影响复制的一致性,使用与任何存储引擎。

管理节点需要ssh连接mysql服务器,高可用方面是一个相对成熟的解决方案。

主要特性:

1.主服务器的自动监控和故障转移

2.交互性服务器故障转移

3.非交互性的主故障转移

4.在线切换主从服务器主要组成:

   1)master mysql

   2)slave mysql

   3)slave mysql

二、MMM

MMM: Master-Master Replication Manager for MySQL(mysql 主主复制管理器)

1.这是一个关于mysql主主复制配置的监控,故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入

2.这个套件也能对居于标准的主从配置的任意数量的从服务器进行负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip

3.除此之外,它还有实现数据备份,节点之间重新同步功能的脚本。

4.MySql本身没有提供replication failover(故障转移)的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。MMM不仅能提供浮动IP的功能,更可贵的是如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手动更改同步配置。

三、Hertbeat+DRBD+MySql高可用方案

采用HeartBeat双击热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证。默认情况下只有一台mysql在工作,当主sql服务器出现问题后,系统将自动切换到备机上继续提供服务,当主数据库修复完毕,又将服务切回继续由主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.cnblogs.com/mercuryji/p/mysql_cluster.html