第1.00版
1.综述
数据库位于现代企业应用的核心,它储存了组织机构中最有价值的资产,包括商家信息、商品信息、订单信息和历史数据。另外,组织机构依赖于数据库来运行他们关键业务应用。几小时甚至是几分钟的宕机,往往会造成收入的大量流失和客户的不满。因此,保证数据库高可用是所有组织机构优先考虑的事情。对于希望在当今瞬息万变的经济环境立于不败之地并取得成功的企业来说,构建一个具有高可用性的 IT 基础架构至关重要。
2.实现目标
通过技术手段实现MySql数据库的高可用性,从而减少停工时间保证服务的正常稳定运行。
3.架构分析
Mysql作为一款开源软件经过多年的发展,已经形成很多套实现高可用方案,并且均都投入生产使用,主要为这几种:mysql + replication 、mysql + heartbeat + 共享存储、mysql + drbd + heartbeat 、 mysql cluster。以下将依次对各个方案进行分析。
3.1 异步集群(MySQL Replication)
3.1.1 概述
Mysql的复制(Replication)是一个异步的复制,从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave)。实现整个复制操作主要由三个进程完成的,其中两个进程在Slave(Sql进程和IO进程),另外一个进程在 Master(IO进程)上。
3.1.2 方案拓扑图
Mysql+replication主从复制拓扑图
方案具体解释:
要实施复制,首先必须打开Master端的binary log(bin-log)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。
3.1.3 优缺点
优点:
1)易实施、成本低、经济实惠;
2)后期维护方便;
3)由于整套系统架构简单,不涉及到存储及双机软件,因此系统出现故障率很低;
4)方便做到读写分离;
5)速度较快;
缺点:
1)在主机出现问题后不能自动切换到备份机,需要人工干涉更改IP地址;
2)数据放在几台服务器上,冗余一般;
3)扩展性差;
4)无法实现高可用性和负载均衡(只能在程序级别实现读写分离,减轻对主数据库的压力);
5)配置和管理较差,可能会丢失数据;
3.1.4 服务器要求
至少2台服务器。
3.1.5 承载量
3.2 mysql + heartbeat + 共享存储
3.2.1 概述
HA双机热备软件将操作环境推广到一种群集操作系统。群集是一种松散耦合的计算节点集合,提供网络服务或应用程序(包括数据库、web 服务和文件服务)的单一客户视图。
HA双机热备软件的目标是:
1:减少或消灭由软件或硬件故障引起的系统停机时间
2:提供增强的系统可用性,能够不必关掉整个群集就可执行维护
3.2.2 Mysql+heartbeat+共享存储方案拓扑图
方案具体解释:
本方案采用高可靠性的HA双机热备软件来保证服务的高稳定性及连续性。默认情况下两台mysql机器只有一台机器在工作,当工作机mysql主机出现问题后,系统将自动切换到mysql备机上继续提供服务,而整个过程只需要30秒的时间,当mysql主机故障维修完毕后,服务将自动切换回mysql主机上继续提供服务。
3.2.3 Mysql+heartbeat+共享存储优缺点
优点:。
缺点:。
优点:
1)安全性、稳定性高,出现故障系统将自动切换,从而保证服务的连续性;
缺点:
1)相对mysql replication成本提高,需要有共享存储设备;
3.2.4 服务器要求
至少2台服务器。
3.2.5 承载量
3.3 Mysql+drbd+heartbeat
3.3.1 概述
此方案除了刚刚介绍完的heartbeat外,主要用了DRBD这个工具,DRBD是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能.当你将数据写入本地
文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中.
本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用.
3.3.2 Mysql+drbd+heartbeat方案拓扑图
3.3.3 Mysql+drbd+heartbeat优缺点
优点:
1)安全性、稳定性高,出现故障系统将自动切换,从而保证服务的连续性;
2)相对mysql+heartbeat+存储来说对大优点是节约了存储这个硬件设备
缺点:
1)mysql主机宕机,切换到备机,备机接管服务,待主机修复完配置failback机制的话会发生脑裂情况,需要手工执行命令进行主机接管;
3.3.4 服务器要求
至少2台服务器。
3.3.5 承载量
3.4 同步集群Mysql cluster
3.4.1 概述
MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。在MyQL 5.0及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。
MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。
MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。
所有的这些节点构成一个完成的MySQL集群体系。数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“NDB存储服务器”。
通过将MySQL Cluster 引入,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的 Cluster 数据管理。
3.4.2 Mysql cluster方案拓扑图
3.4.3 Mysql cluster优缺点
优点:
1)安全性、稳定性高,可以在线增加节点,官方声称可用度可达到99.999%;
2)内存级别的,对硬件要求较低,但是对内存要求较大。换算比例为:1:1.1;
3)数据同时放在几台服务器上,冗余较好;
4)扩展性强;
5)可以实现高可用性和负载均衡,实现对大型应用的支持;
6)配置和管理方便,不会丢失数据;
7)必须是特定的mysql版本,如:已经编译好的max版本;
缺点:
1)至少三个节点,对主机的数量又要求,无形增加方案成本、对于数据节点要求内存一直、对于引擎只能使用ndb、不支持外键功能、管理复杂;
2)速度一般;
3)建表需要声明为engine=ndbcluster
3.4.4 服务器要求
至少5台服务器。
3.4.5 承载量
4.可行性方案选择
在上面列出的四种方案,我们都根据公司的对数据库的生产要求,做了一些筛选。
mysql cluster 这个方案管理复杂ndb引擎的硬性要求凸显出来的一些大的,我们将此先做了排除。
Mysql replication 这个方案公司目前正在使用,但是对mysql的同步的主机的高可用没有保障,固先保留。
Mysql + drbd + heartbeat这个方案虽然能方便的做到主机到备机的切换,也能节约硬件的成本,但是备机向主机回切的过程中drbd的容易产生脑裂情况,须手工执行命令,此方案也先保留。
最后就剩下了myslq + heartbeat + 共享存储方案,此方案对硬件有要求需要一个共享存储设备,在出现问题后的故障切换以及主机恢复资源的回切都表现的相当良好,固此方案将被优先考虑。