太阳集团所有网址16877:MySQL高可用架构之MHA

MHA高可用架构与Atlas读写分离,mha架构atlas读写

概述:

1.1 MHA简介

MySQL 高可用性包括MySQL Cluster 或者Heartbeat DBRB 架构,但其方案的复杂性比较大,故此架构起来会比较麻烦,与之相对应的,利用MySQL复制特性来实现高可用的的方案就显得比较简单了

1.1.1 MHA软件介绍

  MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在10~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

  MHA能够在较短的时间内实现自动故障检测和故障转移,通常在10-30秒以内;在复制 框架中,MHA能够很好地解决复制过程中的数据一致性问题,由于不需要在现有的 replication中添加额外的服务器,仅需要一个manager节点,而一个Manager能管理多套复制,所以能大大地节约服务器的数量;另外,安装简单,无性能损耗,以及不需要修改现 有的复制部署也是它的优势之处。

  MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中 (通过将从库提升为主库),大概0.5-2秒内即可完成。

  该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。

  在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MySQL 5.5的半同步复制,可以大大降低数据丢失的风险。
  MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。
  目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器,出于机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝TMHA已经支持一主一从。

利用复制特性的高可用有MMM和MHA,其中MMM问题比较多,故此推荐使用MHA比较靠谱

1.1.2 MHA工作原理

 

工作原理说明:

 

   1、保存master上的所有binlog事件
    2、找到含有最新binlog位置点的slave
    3、通过中继日志将数据恢复到其他的slave
    4、将包含最新binlog位置点的slave提升为master
    5、将其他从库slave指向新的master原slave01 并开启主从复制
    6、将保存下来的binlog恢复到新的master上

 

1、监控所有node节点MHA功能说明:

2、自动故障切换(failover)
     前提是必须有三个节点存在,并且有两个从库
      (1)选主前提,按照配置文件的顺序进行,但是如果此节点后主库100M以上relay-log 就不会选
      (2)如果你设置了权重,总会切换带此节点;一般在多地多中心的情况下,一般会把权重设置在本地节点。
      (3)选择s1为新主
      (4)保存主库binlog日志
3、重新构建主从
      (1)将有问题的节点剔除MHA
          进行第一阶段数据补偿,S2缺失部分补全90
      (2)s1切换角色为新主,将s2指向新主S1
            s2  change master to s1
      (3) 第二阶段数据补偿
            将保存过来的新主和原有主缺失部分的binlog,应用到新主。
      (4)虚拟IP漂移到新主,对应用透明无感知
      (5)通知管理员故障切换

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

1.1.3 MHA高可用架构图

太阳集团所有网址16877 1 

对应网站:

1.1.4 MHA工具介绍

  MHA软件由两部分组成,Manager工具包和Node工具包,具体的说明如下:

  Manager工具包主要包括以下几个工具:

masterha_check_ssh             #检査 MHA 的 ssh-key^
masterha_check_repl            #检査主从复制情况
masterha_manger                #启动MHA
masterha_check_status          #检测MHA的运行状态^
masterha_mast er_monitor       #检测master是否宕机一
masterha_mast er_switch        #手动故障转移—
masterha_conf_host             #手动添加server倍息一
masterha_secondary_check       #建立TCP连接从远程服务器v
masterha_stop                  #停止MHA

Node工具包主要包括以下几个工具:    

save_binary_1ogs       #保存宕机的master的binlog
apply_diff_relay_logs   #识别relay log的差异
filter_mysqlbinlog           #防止回滚事件一MHA已不再使用这个工具
purge_relay_logs           #清除中继曰志一不会阻塞SQL线程

1.1.5 MHA的优点

1、自动故障转移
2、主库崩溃不存在数据不一致的情况
3、不需要对当前的mysql环境做重大修改
4、不需要添加额外的服务器
5、性能优秀,可以工作再半同步和异步复制框架
6、只要replication支持的存储引擎mha都支持

 

1.2 环境说明

   在本次的实验中,共需要用到三台主机,系统、软件说明如下。

该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。

1.2.1 系统环境说明

db01主机(master)

[[email protected] ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[[email protected] ~]# uname -r
2.6.32-696.el6.x86_64
[[email protected] ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[[email protected] ~]# getenforce 
Disabled
[[email protected] ~]# hostname -I
10.0.0.51 172.16.1.51

db02主机(slave1)

太阳集团所有网址16877 2 1 [[email protected] ~]# cat /etc/redhat-release 2 CentOS release 6.9 (Final) 3 [[email protected] ~]# uname -r 4 2.6.32-696.el6.x86_64 5 [[email protected] ~]# /etc/init.d/iptables status 6 iptables: Firewall is not running. 7 [[email protected] ~]# getenforce 8 Disabled 9 [[email protected] ~]# hostname -I 10 10.0.0.52 172.16.1.52 View Code db02主机环境说明 

db03主机(slave1,MHA Manages、Atlas节点)

太阳集团所有网址16877 3 1 [[email protected] ~]# cat /etc/redhat-release 2 CentOS release 6.9 (Final) 3 [[email protected] ~]# uname -r 4 2.6.32-696.el6.x86_64 5 [[email protected] ~]# /etc/init.d/iptables status 6 iptables: Firewall is not running. 7 [[email protected] ~]# getenforce 8 Disabled 9 [[email protected] ~]# hostname -I 10 10.0.0.53 172.16.1.53 View Code  db03主机环境说明 

MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。

1.2.2 mysql软件说明

         三台服务器上都全新安装mysql 5.6.36 :

[[email protected] ~]# mysql --version
mysql  Ver 14.14 Distrib 5.6.36, for Linux (x86_64) using  EditLine wrapper

  关于mysql数据库具体的安装方法参考:

MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。

1.3 基于GTID的主从复制配置

在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MySQL 5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。

1.3.1 先决条件

  

1.1 MHA简介 1.1.1 MHA软件介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的...

目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器,出于机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝TMHA已经支持一主一从。

我们自己使用其实也可以使用1主1从,但是master主机宕机后无法切换,以及无法补全binlog。master的mysqld进程crash后,还是可以切换成功,以及补全binlog的。

MHA的工作原理

太阳集团所有网址16877 4

本文由太阳集团所有网址16877发布于太阳集团城网址送彩金,转载请注明出处:太阳集团所有网址16877:MySQL高可用架构之MHA

您可能还会对下面的文章感兴趣: