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. (转) Asp.net中实现同一用户名不能同时登录

    最近找了一些单点登录的,发现了这篇文章,貌似还是可以实现的,先保存了.   Web 项目中经常遇到的问题就是同一用户名多次登录的问题,相应的解决办法也很多,总结起来不外乎这几种解决办法: 将登录后的用 ...

  2. 修改state(react)中的某一个对象中的单个参数

    react项目中我们经常会涉及到修改state中参数的问题,如果参数为常用的基本类型变量,我们可以直接通过this.setState({...})方法来进行修改,但是如果变量为一个对象我们要如何修改呢 ...

  3. (转载)Nim博弈论

    最近补上次参加2019西安邀请赛的题,其中的E题出现了Nim博弈论,今天打算好好看看Nim博弈论,在网上看到这篇总结得超级好的博客,就转载了过来. 转载:https://www.cnblogs.com ...

  4. make j* make j4 make j8 区别

    转载: make -j4是什么意思看书上说1) make(1)只衍生一个作业//作业是什么意思?make(1) 是不是就是make的意思?2) 在双处理器上make -j4,难道是让每个处理器跑两个作 ...

  5. Python3学习笔记-更新中

    1.Python概况 2.Anaconda安装及使用 3.Pycharm安装及使用 4.Hello World!!! 5.数据类型及类型转换 6.分支结构 7.循环语句 8.异常

  6. 如何决定使用 HashMap 还是 TreeMap? (转)

    问:如何决定使用 HashMap 还是 TreeMap? 介绍 TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照 ...

  7. redis 单线程的理解

    单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程.其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会 ...

  8. go build命令详解

    原文地址讲解:https://blog.csdn.net/zl1zl2zl3/article/details/83374131

  9. 附录1:arrayanalysis的本地使用(质量控制)

    访问:https://github.com/BiGCAT-UM/affyQC_Module,点击“Download ZIP”,下载得到affyQC_Module-master.zip,解压得到一个af ...

  10. 类型(Type)

    A data type is homogeneous collection of values,effectiovely presented,equipped with a set of operat ...