一、MHA简介

MHA(Master High Availability)目前在mysql高可用方面比较成熟。是一套优秀的作为
mysql高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA
能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA
能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

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

二、搭建过程

server2  :master  node

Server3和server4: slave  node

Server5:Manager

在server2、3、4为gtid主从复制的环境下进行mysql的高可用搭建。(gtid的主从复制的搭建,可以参考之前博客https://www.cnblogs.com/uthnb/p/9719800.html)

1)首先进行软件的安装:(在server2、3、4为gtid主从复制的情况进行如下操作)

Server2:

---> yum  install  mha4mysql-node-0.56-0.el6.noarch.rpm

Server3:

---> yum  install  mha4mysql-node-0.56-0.el6.noarch.rpm

--->  mysql  -p

Mysql >  set  global  read_only=1            # 设置节点为只读

Server4:

---> yum  install  mha4mysql-node-0.56-0.el6.noarch.rpm

---> mysq  -p

Mysql > set global  read_only=1

Server5:

---> yum  install  mha4mysql-node-0.56-0.el6.noarch.rpm  
mha4mysql-manager-0.56-0.el6.noarch.rpm

perl-Config-Tiny-2.12-7.1.el6.noarch.rpm   
perl-Email-Date-Format-1.002-5.el6.noarch.rpm

perl-Log-Dispatch-2.27-1.el6.noarch.rpm    perl-Mail-Sender-0.8.16-3.el6.noarch.rpm

perl-Mail-Sendmail-0.79-12.el6.noarch.rpm  
perl-MIME-Lite-3.027-2.el6.noarch.rpm

perl-MIME-Types-1.28-2.el6.noarch.rpm      
perl-Parallel-ForkManager-0.7.9-1.el6.noarch.rpm

2)对manager(server5)进行配置

--->  mkdir /etc/masterha

--->  cd  /etc/masterha

--->  vim  app1.cnf

[server default]

manager_workdir=/etc/masterha

manager_log=/etc/masterha/manager.log

master_binlog_dir=/var/lib/mysql

#master_ip_failover_script= /usr/local/bin/master_ip_failover

#master_ip_online_change_script= /usr/local/bin/master_ip_online_change

password='Xniu+123'

user=root ping_interval=1

remote_workdir=/tmp0

repl_password='Xniu+123'

repl_user=repl

#report_script=/usr/local/send_report

#secondary_check_script= /usr/local/bin/masterha_secondary_check -s server03 -s server02             #shutdown_script=""

ssh_user=root

[server2]

hostname=172.25.2.2

port=3306

[server3]

hostname=172.25.2.3

port=3306

candidate_master=1

check_repl_delay=0

[server4]

hostname=172.25.2.4

port=3306

--->  masterha_check_ssh --conf=/etc/masterha/app1.cnf   # 此时会出现三个节点之间ssh连接验证问题。

解决方法:在server5中生成密钥并分发给各个节点即可。

--->  ssh-keygen            # 全部回车

--->  ssh-copy-id  172.25.2.5            # 把本机设置为锁

--->  scp -r .ssh/ server2:              # 把生成的key复制给各个节点

--->  scp -r .ssh/ server3:

--->  scp -r .ssh/ server4:

# 再次执行ssh的检测,是以下状态代表成功

--->  masterha_check_ssh  --conf=/etc/masterha/app1.cnf

--->  masterha_check_repl  --conf=/etc/masterha/app1.cnf       # 进行repl同步复制的检测,会出现如下问题

# 解决方法如下:在server2中进行root用户的授权,在srver3和4中对repl用户授权

Server2:   # 创建监控用户

Mysql > grant all  on *.* root@’%’ identified by  ‘Xniu+123’;

Server3和server4:

Mysql> grant replication slave on *.* to repl@’%’ identified  by  ‘Xniu+123’;

# 修改之后,在执行repl的检测是ok的。

3)查看MHA MANAGER的状态

---> masterha_check_status --conf=/etc/masterha/app1.cnf  # 此时监控还没有打开

4)启动MHA Manager监控

5) 查看启动日志

# 最后一行Ping(SELECT) succeeded, waiting until MySQL doesn't respond.."说明整个系统已经开始监控了。

mysql5.7高可用架构之MHA的更多相关文章

  1. MySQL系列:高可用架构之MHA

    前言 从11年毕业到现在,工作也好些年头,入坑mysql也有近四年的时间,也捣鼓过像mongodb.redis.cassandra.neo4j等Nosql数据库.其实一直想写博客分享下工作上的零零碎碎 ...

  2. mysql高可用架构之MHA,haproxy实现读写分离详解

    MySQL高可用架构之MHA 一.运维人员需要掌握的MySQL技术: 1.基本SQL语句 2.基本的管理[库表数据的管理    权限的管理] 3.容灾       保证数据不丢失. 二.工作中MySQ ...

  3. (转)MySQL高可用架构之MHA

    MySQL高可用架构之MHA  原文:http://www.cnblogs.com/gomysql/p/3675429.html 简介: MHA(Master High Availability)目前 ...

  4. mysql实现高可用架构之MHA

    一.简介 MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能.MHA 在监控到 mas ...

  5. mysql +keeplive+drbd高可用架构(MHA基于监听端口VIP的高可用)

    1MySQL+DRBD+keepalived高可用架构 DRBD(DistributedReplicatedBlockDevice)是一个基于块设备级别在远程服务器直接同步和镜像数据的开源软件,类似于 ...

  6. mysql高可用架构之-MHA学习

    此博文参考  博主:mysql高级DBA yayun  完成 简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司 ...

  7. MySQL 高可用架构 之 MHA (Centos 7.5 MySQL 5.7.18 MHA 0.58)

    目录 简介 环境准备 秘钥互信 安装基础依赖包 安装MHA组件 安装 MHA Node组件 安装 MHA Manager 组件 建立 MySQL 一主三从 初始化 MySQL 启动MySQL 并简单配 ...

  8. MySQL高可用架构之MHA

    简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是 ...

  9. MySQL高可用架构之MHA 原理与实践

    MHA简介 关于MHA MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automating master failover 功能.MHA在监控到mas ...

随机推荐

  1. 网络量化——Quantized Convolutional Neural Networks for Mobile Devices

    论文地址:https://arxiv.org/abs/1512.06473 源码地址:https://github.com/jiaxiang-wu/quantized-cnn 1. 主要思想 这篇文章 ...

  2. 机器学习-数据可视化神器matplotlib学习之路(一)

    直接上代码吧,说明写在备注就好了,这次主要学习一下基本的画图方法和常用的图例图标等 from matplotlib import pyplot as plt import numpy as np #这 ...

  3. C# 窗口模拟点击按钮或关闭窗口

    public class CloseForm { [DllImport("user32", EntryPoint = "FindWindow")] privat ...

  4. XML序列化、反序列化

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Run ...

  5. sudo: unable to resolve host myhostname: Connection timed out

    第一种 原因,/etc/hostname 中的hostname 与/etc/hosts 里面的不对应,导致无法解析 将两个文件的hostname改成一样的即可. /etc/hostname aaa / ...

  6. es6模块 nodejs模块和 typescript模块

    es6模块 import和export nodejs模块 require和module.exports typescript模块 module和export

  7. Lua面向对象 --- 封装

    工程结构: Player.lua: Player = {} function Player:new() local self = {} setmetatable(self, {__index = Pl ...

  8. docker on mac:误删default vm的处理方法

    通过docker-machine 重新建一个vm,在virtualbox里可以直接看到多出来一个vm docker-machine create --driver virtualbox default

  9. 20170324xlVBA最简单分类计数

    Sub NextSeven_CodeFrame() Application.ScreenUpdating = False Application.DisplayAlerts = False Appli ...

  10. Jersey 2.x 从Maven Archetype 创建一个新项目

    创建 Jersey 工程需要使用 Apache 的 Maven 软件工程和管理工具.所有的Jersey产品模块都可以在 Maven中央库 中找到.这样的话 Jersey 可以非常容易和其他基于 Mav ...