测试环境

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

安装软件包

节点3:安装MHA-manager

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

依赖包

yum -y install perl-DBD-MySQL

所有节点:安装MHA-note

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

依赖包

yum -y install perl-DBD-MySQL
yum -y install perl-Config-Tiny
yum -y install perl-Log-Dispatch
yum -y install perl-Parallel-ForkManager

配置

[root@python /]# cat /etc/mha/test.cnf

[server default]

# working directory on the manager

manager_workdir=/var/log/masterha/test

# manager log file

manager_log=/var/log/masterha/test/test.log

# working directory on MySQL servers

remote_workdir=/var/log/masterha/test

master_binlog_dir=/data0/mysql/6666_test

repl_user=repl

repl_password='repl'

ssh_user=root

[server1]

hostname=172.16.200.231

port=

user=root

password=''

[server2]

hostname=172.16.200.60

port=

user=root

password=''

[server3]

hostname=172.16.200.27

port=

user=root

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.

  • 都需要有复制账号

验证

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

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

检查通过之后启动manager

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

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

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

开始演练测试

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

masterha_stop --conf=/etc/mha/test.cnf
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. Linux C Programing - Terminal(1)

    #include <stdio.h> //getchar() putchar() printf() gets() puts() sprintf() #include <stdlib. ...

  2. SPOJ 375. Query on a tree (树链剖分)

    Query on a tree Time Limit: 5000ms Memory Limit: 262144KB   This problem will be judged on SPOJ. Ori ...

  3. Intellij IDEA debug介绍

    先编译好要调试的程序. 1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可. 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试. IDE下方出现Debug视图,红色的箭头指 ...

  4. MVC中Razor的使用 及路径问题

    语法: @ 可以编写一条C#语句@{} 可以编写一组C#语句@: 将文字内容直接输出到页面上去@() 在一句中将一段C#代码包括起来,证明这一句完整的C#代码 引用命名空间:@using 空间名称 H ...

  5. [转]unicode,ansi,utf-8,unicode big endian的故事

    unicode,ansi,utf-8,unicode big endian的故事很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的 ...

  6. SQL疑难杂症【4 】大量数据查询的时候避免子查询

    前几天发现系统变得很慢,在Profiler里面发现有的SQL执行了几十秒才返回结果,当时的SQL如下: 可以看得出来,在652行用了子查询,恰巧目标表(QS_WIP)中的记录数为100000000+, ...

  7. XAF应用开发教程(八) 汉化与多国语言支持

    使用了XAF开发时,汉化是一个比较常的问题. 要实现汉化很简单: 1.在这里下载汉化资源文件.这里演示的版本是15.1.X的 2.文件下载后将:文件解压到目录    <你的项目>\BIN\ ...

  8. 避免jsp传参返回乱码问题

    $("#searchForm input").each(function(i){ var obj=$(this); var va=obj.val(); obj.val(decode ...

  9. Linux_导出函数

    1.linux 下查看 .so 导出函数列表(http://blog.csdn.net/wangweixaut061/article/details/7164809) nm -D 7z.so objd ...

  10. Android性能优化篇

    很多App都会遇到以下几个常见的性能问题: 启动速度慢:界面跳转慢:事件响应慢:滑动和动画卡顿. 一.启动速度优化. 优化初始化任务: 1. 把一些初始化任务懒加载初始化 2. 把初始化任务并行化(异 ...