MHA配置
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配置的更多相关文章
- mha配置参数详解
mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...
- MySQL MHA配置常见问题
MHA在MySQL数据库中被广泛使用,它小巧易用,功能强大,实现了基于MySQL replication架构的自手动主从故障转移,从库重定向到主库并自动同步.尽管如此,在部署配置的过程中,由于疏忽总难 ...
- MySQL MHA配置
MySQL环境: master:192.168.202.129:3306 slave:192.168.202.129:3307,192.168.202.129:3307,192.168.202.130 ...
- MHA配置参数详解 【转】
mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...
- MySQL高可用之MHA配置
本文简单介绍了MySQL的高可用实现方式之一的MHA MHA:Master High Availability,对主节点进行监控,可实现自动故障转移至其它从节点:通过提升某一从节点为新的主节点,基于主 ...
- mysql高可用架构 -> MHA配置binlog-server-06
前期准备 1.准备一台新的mysql实例(db03),GTID必须开启. 2.将来binlog接收目录,不能和主库binlog目录一样 停止mha masterha_stop --conf=/etc/ ...
- mysql高可用架构 -> MHA配置VIP漂移-05
VIP漂移的两种方式 1)通过keepalived的方式,管理虚拟IP的漂移 2)通过MHA自带脚本方式,管理虚拟IP的漂移 MHA脚本方式 虚拟ip漂移的脚本下载地址 -> wget http ...
- MYSQL + MHA +keepalive + VIP安装配置(一)--MYSQL安装配置
一.总概: 本文介绍了MySQL高可用性的实现方案MHA,MHA由Node和Manager组成,Node运行在每一台MySQL服务器上,不管是MySQL主服务器,还是MySQL从服务器,都要安装Nod ...
- MHA安装配置
1. 前言 MHA可以在较短的时间内实现自己主动故障检測和故障转移,通常在10-30秒以内;在复制框架中,MHA可以非常好地解决复制过程中的数据一致性问题,因为不须要在现有的replication中加 ...
随机推荐
- 统计学习方法 | 第1章 统计学习方法概论 | numpy.linspace()
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 在指定的间隔内返回均匀间隔的数字. 返回nu ...
- luoguP1886 滑动窗口(单调队列模板题)
题目链接:https://www.luogu.org/problem/P1886#submit 题意:给定n个数,求大小为k的滑动窗口中最小值和最大值. 思路:单调队列模板题. AC代码: #incl ...
- Spring_four
Spring_four 基于XML的AOP实现事务控制 坐标xml ; //2.6更新转入账户 accountDao.updateAccount(target); } } 注意:方法级别的事务会覆盖类 ...
- Java代码 简单用于处理和数据库相关的操作
package util; import org.apache.commons.beanutils.BeanUtils; import java.lang.reflect.InvocationTarg ...
- 类型(Type)
A data type is homogeneous collection of values,effectiovely presented,equipped with a set of operat ...
- VS Code 配置碰到的问题
VS Code 呈现缩进参考线以及语法高亮改变 找到 首选项——>设置→搜索renderIntentGuides→将此选项改为true(默认为false),就可以了.
- Shell随机生成字符串
随机生成18位的字符串,数字 大小写字符 斜线 password=`openssl rand -base64 |-`
- 01 Redis基础
NoSQL 学名(not only sql) 特点: 存储结构与mysql这一种关系型数据库完全不同,nosql存储的是KV形式 nosql有很多产品,都有自己的api和语法,以及业务场景 产品种类: ...
- nginx入门,安装
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在 ...
- iOS用contenteditable滚动时,光标不会刷新定位的处理方法
分析 iOS的 wkwebview 在滚动时会暂停许多动画,作为优化 解决思路 监听滚动事件,利用文档重绘即可刷新动画 ps:因为滚动有惯性,touchmove事件只能监听到手指松开的那一刻,所以只能 ...