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的功能,更可贵的是如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。

参考文章:
1. MMM高可用mysql方案
2. MySQL高可用集群之MySQL-MMM
3. mysql master高可用性管理工具

三、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”启动
参考文章:
1. Keepalived+LVS+Mysql-Cluster(7.1.10)
http://blog.chinaunix.net/uid-20639775-id-201612.html
  http://blog.chinaunix.net/uid-20639775-id-201960.html
  http://blog.chinaunix.net/uid-20639775-id-187440.html
  http://blog.chinaunix.net/uid-20639775-id-187431.html
  http://blog.chinaunix.net/uid-20639775-id-267189.html
2. MySQL集群安装与配置
https://www.centos.bz/2012/11/mysql-cluster-install-configure/
3.MySQL Cluster集群安装及使用 
http://lizhenliang.blog.51cto.com/7876557/1290451
4.Mysql cluster 7.0集群安装配置 
  http://blog.chinaunix.net/uid-20639775-id-154598.html
5.MySQL Cluster 详细配置文件(config.ini)
  http://blog.chinaunix.net/uid-20639775-id-154599.html
6.MySQL Cluster的备份和恢复 
  http://blog.chinaunix.net/uid-20639775-id-154619.html
7. 推荐两个mysql cluster自动配置的网站 
http://www.mysqlab.net/tool/mysql-cluster/config.generator/computers/4/cpus/1/memory/16/replica/2
http://www.severalnines.com/config

五、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)复制以及相似应用。目的在于从应用细节上实现抽象的,隔离的复制。虽然这个接口的主要目标是基于认证的多主复制,但同样适用于异步和同步的主从复制。
参考文章:
1. MySQL/Galera集群-多主高可用性负载均衡
http://www.ttlsa.com/mysql/mysqlgalera-multi-master/
2. CentOS 6下安装部署Galera Cluster for MySQL集群
http://www.webmaster.me/server/install-galera-cluster-on-centos-6.html
3. MySQL Galera Cluster数据库集群配置教程
http://www.server110.com/mysql/201312/4087.html
4. MySQL Galera 集群的安装过程
http://blog.chinaunix.net/uid-20785090-id-4643650.html

你可能感兴趣的:(Mysql)