测试环境

节点1 172.16.200.231 6666               master        
节点2 172.16.200.27 6666 slave1                       
节点3 172.16.200.60 5200   slave2       

安装软件包

节点3:安装MHA-manager

  1. wget http://www.mysql.gr.jp/frame/modules/bwiki/index.php?plugin=attach&pcmd=open&file=mha4mysql-manager-0.56-0.el6.noarch.rpm&refer=matsunob

依赖包

  1. yum -y install perl-DBD-MySQL

所有节点:安装MHA-note

  1. wget http://www.mysql.gr.jp/frame/modules/bwiki/index.php?plugin=attach&pcmd=open&file=mha4mysql-manager-0.56-0.el6.noarch.rpm&refer=matsunobu

依赖包

  1. yum -y install perl-DBD-MySQL
  2. yum -y install perl-Config-Tiny
  3. yum -y install perl-Log-Dispatch
  4. yum -y install perl-Parallel-ForkManager

配置

  1. [root@python /]# cat /etc/mha/test.cnf
  2.  
  3. [server default]
  4.  
  5. # working directory on the manager
  6.  
  7. manager_workdir=/var/log/masterha/test
  8.  
  9. # manager log file
  10.  
  11. manager_log=/var/log/masterha/test/test.log
  12.  
  13. # working directory on MySQL servers
  14.  
  15. remote_workdir=/var/log/masterha/test
  16.  
  17. master_binlog_dir=/data0/mysql/6666_test
  18.  
  19. repl_user=repl
  20.  
  21. repl_password='repl'
  22.  
  23. ssh_user=root
  24.  
  25. [server1]
  26.  
  27. hostname=172.16.200.231
  28.  
  29. port=
  30.  
  31. user=root
  32.  
  33. password=''
  34.  
  35. [server2]
  36.  
  37. hostname=172.16.200.60
  38.  
  39. port=
  40.  
  41. user=root
  42.  
  43. password=''
  44.  
  45. [server3]
  46.  
  47. hostname=172.16.200.27
  48.  
  49. port=
  50.  
  51. user=root
  52.  
  53. password=''

注:gtid模式可以设置[binlog1]模块,此处已开启gtid模式但是没有设置binlog server

Requirement

  • SSH认证
  • candidate masters要开启log-bin
  • 关闭自动清理relay log的选项,改为定期使用MHA note提供的脚本purge_relay_logs手动进行

0 5 * * * app /usr/bin/purge_relay_logs --user=root --password=PASSWORD --disable_relay_log_purge >> /var/log/masterha/purge_relay_logs.log 2>&1

  • Do not use LOAD DATA INFILE with Statement Based Binary Logging

If you want to use LOAD DATA, SET sql_log_bin=0; LOAD DATA … ; SET sql_log_bin=1; is more recommended approach.

  • 都需要有复制账号

验证

  1. masterha_check_ssh --conf=/etc/mha/test.cnf
  2. masterha_check_repl --conf=/etc/mha/test.cnf

注:通过打印perl代码可以看出每台主机先ssh到自己再ssh到其他几点上进行验证,所以除了各节点之间进行秘钥配置外,还需要各自对自己进行秘钥设置

检查通过之后启动manager

  1. masterha_manager --conf=/etc/mha/test.cnf

查看manager状态,已正常启动,实时监测各节点

  1. masterha_check_status --conf=/etc/mha/test.cnf
  2. test (pid:20483) is running(0:PING_OK), master:172.16.200.231

开始演练测试

手动failover,需要先关闭manager 监控

  1. masterha_stop --conf=/etc/mha/test.cnf
  2. masterha_master_switch --master_state=dead --conf=/etc/mha/test.cnf

过程:

  • 检查是否存在全局配置文件/etc/masterha_default.cnf
  • 读取指定的配置文件,监测各节点的数据库状态以及GTID是否开启
  • FLUSH NO_WRITE_TO_BINLOG TABLES
  • 检查复制状态
  • 检查配置文件中是否指定candidate masters
  • 如果没有指定,则将应用日志最新的slave提升为master
  • old master上执行FLUSH TABLES WITH READ LOCK
  • 获得old master上的当前的binlog文件号和position
  • new master应用中继日志到和old master数据一致
  • 其他的slave应用所有的中继日志
  • 其 他的slave指向new master:CHANGE MASTER TO MASTER_HOST='172.16.200.60', MASTER_PORT=5200, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='xxx';

MySQL高可用之MHA搭建的更多相关文章

  1. mysql高可用架构MHA搭建(centos7+mysql5.7.28)

    无论是传统行业,还是互联网行业,数据可用性都是至关重要的,虽然现在已经步入大数据时代,nosql比较流行,但是作为数据持久化及事务性的关系型数据库依然是项目首选,比如mysql. 现在几乎所有的公司项 ...

  2. MySQL高可用方案MHA自动Failover与手动Failover的实践及原理

    集群信息 角色                             IP地址                 ServerID      类型 Master                     ...

  3. MySQL高可用方案MHA在线切换的步骤及原理

    在日常工作中,会碰到如下的场景,如mysql数据库升级,主服务器硬件升级等,这个时候就需要将写操作切换到另外一台服务器上,那么如何进行在线切换呢?同时,要求切换过程短,对业务的影响比较小. MHA就提 ...

  4. 【DB宝42】MySQL高可用架构MHA+ProxySQL实现读写分离和负载均衡

    目录 一.MHA+ProxySQL架构 二.快速搭建MHA环境 2.1 下载MHA镜像 2.2 编辑yml文件,创建MHA相关容器 2.3 安装docker-compose软件(若已安装,可忽略) 2 ...

  5. MySQL高可用之MHA (转)

    MySQL高可用之MHA MHA简介 MHA是由日本人yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的MySQL高可用方案.MHA能够在30秒内实现故障切换,并能在故障 ...

  6. mysql高可用方案MHA介绍

    mysql高可用方案MHA介绍 概述 MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10-30秒内),完成故障切换,部署MHA, ...

  7. MySQL高可用方案--MHA部署及故障转移

    架构设计及必要配置 主机环境 IP                 主机名             担任角色 192.168.192.128  node_master    MySQL-Master| ...

  8. MySQL高可用之MHA的搭建 转

     http://www.cnblogs.com/muhu/p/4045780.html http://www.cnblogs.com/gomysql/p/3675429.html http://www ...

  9. MySQL高可用之MHA的搭建

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

随机推荐

  1. 《Vuser虚拟用户开发》读书笔记

    学会了Vuser开发只是算了性能测试入了门.要做好性能测试还需要了解系统的功能,架构和设计测试用例. 脚本选用什么协议的依据是需要模拟的客户端与服务器之间的通信采用什么协议.与具体的开发技术并无直接的 ...

  2. 芯航线FPGA学习套件之多通道串行ADDA(TLV1544,TLC5620)模块测试手册

    芯航线FPGA学习套件之多通道串行ADDA模块测试手册   本手册以简明扼要的方式介绍芯航线FPGA学习套件提供的ADDA模块的测试方法:   连接开发板,如下所示: 2.将ADDA V1.1模块与开 ...

  3. a标签样式

    .a{            cursor:pointer;            color: blue;            text-decoration:none;        }

  4. [问题2014S06] 解答

    [问题2014S06]  解答  (本解答由巴闻嘉同学给出) 设特征多项式 \[f(x)=\det(xI_V-\varphi)=x^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0,\ ...

  5. Java开发中经典的小实例-(用*打印图案)

    public class Test19 {    public static void main(String[] args) {        // TODO Auto-generated meth ...

  6. 【WEB】HTTP协议

    http1.0和http1.1 区别,http1.1可以发送多个http请求

  7. Java面向对象三大特点之继承

    概念: 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. 生活中的继承: 兔子和羊属于食草动物类,狮子和豹属于食肉动物类 ...

  8. Uiautomator ——API详解

    版权声明:本文出自carter_dream的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4921701.html 简单的例子 以一个简 ...

  9. 初学者用div+css结构写网页的几个误区

    1.用div+css结构制作静态html网页不等于彻底抛弃古老的table写法.之所以不建议用table来布局网页是因为在网页加载很慢的时候要等table结构加载完成才能看到网页,其次是table的布 ...

  10. ocLazyLoad angular 按需加载

    ionic 框架 1.引用 index.html 加载 <script type="text/javascript" src="lib/oclazyload/ocL ...