1,背景

MHA的目的在于维持MySQL Replication中Master库的高可用性,其最大特点是可以修复多个Slave之间的差异日志,最终使所有Slave保持数据一致,然后从中选择一个充当新的Master,并将其它Slave指向它

当master出现故障时,通过对比slave之间I/O线程读取masterbinlog的位置,选取最接近的slave做为latestslave。 其它slave通过与latest slave对比生成差异中继日志。在latest slave上应用从master保存的binlog,同时将latest slave提升为master。最后在其它slave上应用相应的差异中继日志并开始从新的master开始复制。

在MHA实现Master故障切换过程中,MHA Node会试图访问故障的master(通过SSH),如果可以访问(不是硬件故障,比如InnoDB数据文件损坏等),会保存二进制文件,以最大程度保 证数据不丢失。MHA和半同步复制一起使用会大大降低数据丢失的危险。流程如下:
• 从宕机崩溃的master保存二进制日志事件(binlog events)。
• 识别含有最新更新的slave。
• 应用差异的中继日志(relay log)到其它slave。
• 应用从master保存的二进制日志事件(binlog events)。
• 提升一个slave为新master并记录binlog file和position。
• 使其它的slave连接新的master进行复制。
• 完成切换manager主进程OFFLINE

功能:

MHA具有如下几个功能:
(1) Master自动监控和故障转移
           基于现有的MySQL主从复制环境,MHA可以监控Master,当发现其故障时,自动进行切换。
(2) 互动(手动)Master故障转移
           可以只使用MHA的故障转移功能,而不监控Master,当其故障时,手动调用MHA来进行故障切换。
(3)非交互式自动故障转移
          MHA还支持非交互式的Master故障切换(不监控Master,但实现自动故障切换),这个特性其实是将Master的监控和VIP接管交给第三方工具来做,比如Heartbeat,MHA只负责Master故障转移和Slave之间的数据同步。
(4) 在线切换Master到不同的主机
           在有些情况下,比如更换Raid控制器,升级主机硬件等,则需要将其上的Master实例迁移到其它主机上,MHA支持快速的Master切换和短暂的写操作阻塞,通常只需0.5-2秒的downtime,这是可以接受的,也方便了DBA的操作。

一些问题: 后端数据库切换不应影响到前端应用访问

方案:1)vip   第三方软件如keeplived      2)全局目录数据库

2,配置

首先manage,后端主从之间配置ssh可互相登陆,MHA使用该功能在主节点服务挂掉后网络正常下可复制日志。

在管理节点上安装两个包:
mha4mysql-manager
mha4mysql-node

配置文件:
cat  /etc/mastermha/app1.cnf
[server default]
##管理账户(完全权限)
user=sqluser
password=redhat
manager_workdir=/data/mastermha/app1/
manager_log=/data/mastermha/app1/manager.log
remote_workdir=/data/mastermha/app1/
##ssh用户
ssh_user=root
##复制日志账号(replication  slave 权限)
repl_user=repluser
repl_password=redhat
ping_interval=
[server1]
hostname=192.168.36.72
candidate_master=
[server2]
hostname=192.168.36.73
candidate_master=
[server3]
hostname=192.168.36.74
在被管理节点安装:
mha4mysql-node

主从之间ssh验证 

ssh-keygen
ssh-copy-id   互相拷贝

master数据库配置文件   :
log_bin
server_id=
skip_name_resolve=
#创建用于主从复制用户和管理端用于管理后端服务其的用户,即该操作在所有后端主从节点操作,如果已搭建好主从结构建立连接,只在主库操作。
show master logs
grant    replication slave   on   *.*    to repluser@'192.168.8.%'   identifiedby   ‘redhat';
grant    all    on   *.*     to sqluser@'192.168.8.%’    identified by    ‘magedu';

slave配置文件 :
[mysqld]
server_id= 不同节点此值各不相同
log-bin
read_only
relay_log_purge=
skip_name_resolve=
#连接主库
CHANGE MASTER TO
  MASTER_HOST='master ip ',
  MASTER_USER='repluser',
  MASTER_PASSWORD='redhat',
  MASTER_PORT=,
  MASTER_LOG_FILE='master2-bin.001',
  MASTER_LOG_POS=245

测试方式(主从及管理端配置之后操做测试):
masterha_check_ssh   --conf=/etc/mastermha/app1.cnf
masterha_check_repl --conf=/etc/mastermha/app1.cnf
masterha_manager --conf=/etc/mastermha/app1.cnf
/data/mastermha/app1/manager.log    

服务为脚本,主库挂掉,程序改变提升某一slave为master恢复之后,程序不再启动,为一次性
 

MHA配置的更多相关文章

  1. mha配置参数详解

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  2. MySQL MHA配置常见问题

    MHA在MySQL数据库中被广泛使用,它小巧易用,功能强大,实现了基于MySQL replication架构的自手动主从故障转移,从库重定向到主库并自动同步.尽管如此,在部署配置的过程中,由于疏忽总难 ...

  3. MySQL MHA配置

    MySQL环境: master:192.168.202.129:3306 slave:192.168.202.129:3307,192.168.202.129:3307,192.168.202.130 ...

  4. MHA配置参数详解 【转】

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  5. MySQL高可用之MHA配置

    本文简单介绍了MySQL的高可用实现方式之一的MHA MHA:Master High Availability,对主节点进行监控,可实现自动故障转移至其它从节点:通过提升某一从节点为新的主节点,基于主 ...

  6. mysql高可用架构 -> MHA配置binlog-server-06

    前期准备 1.准备一台新的mysql实例(db03),GTID必须开启. 2.将来binlog接收目录,不能和主库binlog目录一样 停止mha masterha_stop --conf=/etc/ ...

  7. mysql高可用架构 -> MHA配置VIP漂移-05

    VIP漂移的两种方式 1)通过keepalived的方式,管理虚拟IP的漂移 2)通过MHA自带脚本方式,管理虚拟IP的漂移 MHA脚本方式 虚拟ip漂移的脚本下载地址 -> wget http ...

  8. MYSQL + MHA +keepalive + VIP安装配置(一)--MYSQL安装配置

    一.总概: 本文介绍了MySQL高可用性的实现方案MHA,MHA由Node和Manager组成,Node运行在每一台MySQL服务器上,不管是MySQL主服务器,还是MySQL从服务器,都要安装Nod ...

  9. MHA安装配置

    1. 前言 MHA可以在较短的时间内实现自己主动故障检測和故障转移,通常在10-30秒以内;在复制框架中,MHA可以非常好地解决复制过程中的数据一致性问题,因为不须要在现有的replication中加 ...

随机推荐

  1. SQL语句规范

    SQLStructure Query Language,结构化查询语言 1.规范(1)mysql对于SQL语句不区分大小写,SQL语句关键字尽量大写 show databases;show DataB ...

  2. 西安邀请赛-D(带权并查集+背包)

    题目链接:https://nanti.jisuanke.com/t/39271 题意:给定n个物品,m组限制,每个物品有个伤害值,现在让两个人取完所有物品,要使得两个人取得物品伤害值之和最接近,输出伤 ...

  3. 坦克大战--Java类型 ---- (1)音乐播放

    实现原理 我用接口java.applet.AudioClip实现音乐播放,那么我们需要了解这个接口的情况. 我们主要使用其中的三个方法: (1)void loop(); //循环播放(2)void p ...

  4. oracle 重置密码(一般电网,国企需要的二级等保)

    oracle 10g,11g 可以查找以下,12c没有测试 一.查看profile配置并记录;二.在重置密码之前修改profile(PASSWORD_REUSE_MAX.PASSWORD_REUSE_ ...

  5. 常用的TCP/UDP端口

    已知的TCP/UDP端口可以在wikipedia上找到: List of TCP and UDP port numbers, 太多了,按组列举了最常用的,如下: FTP:21SSH:22Telnet: ...

  6. java实现spark常用算子之frist

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  7. Object 对象(对象的分类、属性(属性名和属性值)、基本数据类型与引用数据类型区别)

    Object——引用数据类型 基本数据类型的不足之处:基本数据类型是单一的值,不能表现出值与值之间的所属关系 object分为内建对象.宿主对象和自定义对象 a 内建对象:ES标准中定义的对象,在任何 ...

  8. monkey基础使用教程,如何安装和monkey分析日志

    1.概念 什么是monkey,monkey的作用是什么? Monkey是Android自身提供的,可以通过adb shell模拟用户行为,发送一些伪随机用户事件到目标设备上. Monkey和它的直接意 ...

  9. (转)java并发编程:CopyOnWriteArrayList

    原文链接:http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容, ...

  10. LRU算法介绍和在JAVA的实现及源码分析

    一.写随笔的原因:最近准备去朋友公司面试,他说让我看一下LRU算法,就此整理一下,方便以后的复习. 二.具体的内容: 1.简介: LRU是Least Recently Used的缩写,即最近最少使用. ...