超全面的MHA介绍与实验部署

说简单也简单的MHA高可用介绍

文章目录

前言

一、MHA概述

1.1: 什么是MHA
1.2:MHA场景
1.3:MHA的优点

二、MHA部署实验

2.1:实验思路
2.2:故障模拟
2.3:实验环境
2.3.1:案例需求
2.3.2:实验部署

前言

前面我们阐述了主从复制读写分离的基本原理,那么假如,我们其中一台服务器宕机出现故障之后,服务是不是就已经无法正常进行了你?那么我们应该怎么样解决呢??这时候我们就要用到MHA了

一、MHA概述

1.1:什么是MHA

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。除了failover之外,MHA还支持在线master切换,非常安全和高效,大概只需要(0.5 ~ 2秒)的阻塞写时间。

1.2:MHA场景

目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当slave。当然,如果你处于成本考虑,也可以使用两个节点的MHA,一主一从(实测过的)。

总结一下,MHA提供了如下功能:

master自动监控,故障转移一体化(Automated master monitoring and failover)

MHA可以在一个复制组中监控master的状态,如果挂了,就可以自动的做failover

MHA通过所有slave的差异relay-log来保证数据的一致性

MHA在做故障转移,日志补偿这些动作的时候,通常只需要10~30秒

通常情况下,MHA会选择最新的slave作为new master,但是你也可以指定哪些是候选maser,那么新master选举的时候,就从这些host里面挑

导致复制环境中断的一致性问题,在MHA中是不会发生的,请放心使用

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

手工-交互式master故障转移(Interactive manually initiated Master Failover)

  • MHA可以配置成手工-交互式方式进行故障转移,不支持监控master的状态

非交互式master故障转移 (Non-interactive master failover)

  • 非交互式,自动的故障转移,不提供监控master状态功能,监控可以交给其他组件做(如:Pacemaker heartbeat)

在线master切换 (Online switching master to a different host)

  • 如果你有更快,更好的master,计划要将老master替换成新的master,那么这个功能特别适合这样的场景。
1.3:MHA的优点
  • master failover和slave promotion非常快速。

  • 自动探测,多重检测,切换过程中支持调用其他脚本的接口。

  • master crash不会导致数据不一致,自动补齐数据,维护数据一致性。

  • 不需要修改复制的任何设置,简单易部署,对现有架构无影响。

  • 不需要增加很多额外的机器来部署MHA,支持多实例集中管理。

  • 没有任何性能影响。

  • 支持在线切换。

  • 跨存储引擎,支持任何引擎。

二、MHA部署实验

2.1:实验思路

如何搭建MHA以及数据库的搭建,还有主从的配置

MySQL节点上分别安装数据库,MySQL版本用5.7,cmake版本用2.8版本,node版本用0.57以上,0.56无法支持linux7.0版本。因为MHA特别挑版本。这边我们在主节点上做实验

2.2:故障模拟

我们宕掉一台主服务器,查看是不是会地址漂移

2.3:实验环境
2.3.1:案例需求

本案例要求通过 MHA 监控 MySQL 数据库在故障时进行自动切换,不影响业务

2.3.2:实验部署
  • 安装编译依赖环境
[root@master mysql]# yum -y install ncurses-devel gcc-c++ perl-Module-Install

  • 安装gmake编译软件
[root@master opt]# tar zxvf cmake-2.8.6.tar.gz 
[root@master opt]# cd cmake-2.8.6/
[root@master cmake-2.8.6]# ./configure 
[root@master cmake-2.8.6]# gmake && gmake install

  • 安装MySQL5.7版本,详细过程可以查看我前面的教程
  • 修改3台数据库的主配置文件/etc/my.cnf文件,server-id不能一样
####主服务器配置####
server-id = 11
l
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值