MHA工作组件

MHA(Master High Availability)是一种MySQL高可用解决方案,由日本DeNA公司开发,主要用于在故障切换和主从提升时进行快速切换,并最大程度保证数据一致性。
MHA主要由两部分组成:
1、MHA Manager(管理节点),管理节点部署在群集之外,主要用于定期监测群集中的主节点,并在主从切换时负责管理调度切换流程。
2、MHA Node(数据节点),数据节点部署在每个群集节点上,负责在主从切换时对比和应用差异日志。

管理节点主要包含以下工具:

masterha_check_ssh              检查MHA的SSH配置状况
masterha_check_repl 检查MySQL复制状况
masterha_manger 启动MHA
masterha_check_status 检测当前MHA运行状态
masterha_master_monitor 检测master是否宕机
masterha_master_switch 控制故障转移(自动或者手动)
masterha_conf_host 添加或删除配置的server信息

数据节点主要包含以下工具:

save_binary_logs                保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的slave
filter_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已不再使用这个工具)
purge_relay_logs 清除中继日志(不会阻塞SQL线程)

MHA工作原理

对于基于BINLOG位点同步的复制,使用SHOW SLAVE STATUS获取复制信息:

 A)    Master_Log_File+Read_Master_Log_Pos确定从库读取到主库Binlog位置
B) Relay_Log_File+Relay_Log_Pos确定从库存放主库Binlog位置
C) Relay_Master_Log_File+Exec_Master_Log_Pos确定从库执行主库Binlog位置

对于基于GTID同步的复制,使用SHOW SLAVE STATUS获取复制信息:

A)    Retrieved_Gtid_Set确定从库读取到主库的BINLOG范围
B) Executed_Gtid_Set确定从库执行到主库的BINLOG范围

MHA主要特性

、MHA切换不依赖实例使用存储引擎和BINLOG格式;
、MHA不会增加MySQL服务器性能开销,除MHA管理节点外无需增加额外服务器;
、在MySQL服务器上部署MHA数据节点不会影响当前实例运行;
、MHA实现自动故障切换,也可以手动触发在线切换;
、MHA可以实现秒级的故障切换;
、MHA可以将任意slave提升master,也可以在切换时指定master候选节点;
、MHA提供扩展接口,允许在MHA切换过程中的特定时间点执行用户自定义脚本。

MHA可扩展性

A)seconary_check_script
当检测到master节点连接失败时调用,从多个网络路径判断master是否发生宕机。 B)shutdown_script
在故障转移前调用,可以通过SSH登录到master节点进行数据库关闭和服务器关机等操作。 C)master_ip_failover_script
在故障转移前和转移到新master节点后调用,用于切换群集使用的VIP或域名或其他操作。 D)report_script
在故障切换完成后被调用,用于通知故障切换的执行结果。

MHA支持与限制

、只支持BINLOG V4版本,要求MySQL .0或更高版本。
、候选master节点必须开启log-bin参数,如果所有从节点都为开启,则不进行故障转移。
、在MHA .52版本前不支持多master模式
、MHA默认不支持多级主从复制,通过修改配置文件和设置multi_tier_slave参数

参考链接

MHA原理:https://code.google.com/p/mysql-master-ha/wiki/HowMHAWorks
MHA原理PPT:http://www.slideshare.net/matsunobu/automated-master-failover
MHA安装包:https://github.com/linyue515/mysql-master-ha/

MySQL MHA工作原理的更多相关文章

  1. mysql索引工作原理、分类

    一.概述 在mysql中,索引(index)又叫键(key),它是存储引擎用于快速找到所需记录的一种数据结构.在越来越大的表中,索引是对查询性能优化最有效的手段,索引对性能影响非常关键.另外,mysq ...

  2. MySQL:索引工作原理

    索引查找:通过索引键找到索引的叶子节点,再通过叶子节点的标记快速找到表中对应的行数据,再返回指定的列 索引找查是通过索引键定先位到一块局部区域,再开始扫描匹配的数据的. 为什么需要索引(Why is ...

  3. MySQL索引工作原理

    为什么需要索引(Why is it needed)?当数据保存在磁盘类存储介质上时,它是作为数据块存放.这些数据块是被当作一个整体来访问的,这样可以保证操作的原子性.硬盘数据块存储结构类似于链表,都包 ...

  4. Mysql 复制工作原理

    数据库配置的时候,一定要开启二进制日志,如果开始没开启后来再想开启的话,必须重启. 基于日志点的复制 备份数据库工具 ----------------------------------------- ...

  5. MHA工作原理

    http://my.oschina.net/u/1440383/blog/313798?fromerr=Tvth3ODF

  6. Mysql 工作原理

    刚开始接触一个新的事物的时候,我觉得很有必要从其工作原理入手,弄清楚这个东西的来龙去脉,为接下来的继续深入学习做好铺垫,掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路. ...

  7. MYSQL MHA

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

  8. MySQL主从同步原理

    mysql主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从部署必要条件 主库开启binlo日志(设置log-bin参数) 主从server-id不同 从库可以连同 ...

  9. MYSQL + MHA +keepalive + VIP安装配置(二)--MHA的配置

    一.总概 1.MHA介绍 MHA(Master High Availability)是自动的master故障转移和Slave提升的软件包.它是基于标准的MySQL复制(异步/半同步).      MH ...

随机推荐

  1. spark 监控--WebUi、Metrics System(转载)

    转载自:https://www.cnblogs.com/barrenlake/p/4364644.html Spark 监控相关的部分有WebUi 及 Metrics System; WebUi用于展 ...

  2. Navicat连接MySQL8.0出现1251-Client does not support authentication protocol requested by server;

    因为安装的MySQL是8.0版本的,因为在安装的时候采用了新的加密方式. 我们需要使用 cmd命令,连接mysql 1.   更改加密方式 mysql> ALTER USER 'root'@'l ...

  3. SpringMVC request 得到文件路径

    1.java中的路径 File directory = new File("abc"); // 对于getCanonicalPath()函数,“."就表示当前的文件夹,而 ...

  4. 【专】linux nameserver导致的故障

    前言: 大家都知道linux下添加dns服务器,修改/etc/resolv.conf,添加nameserver 119.29.29.29这样一行即可.但是胡乱添加nameserver也会导致故障 ,此 ...

  5. nginx过滤access_log中HEAD、OPTIONS请求记录

    网上很多教程说是这样做: if ($request_method = HEAD) { access_log off; } 试了之后是不行的,正确的做法如下: http { map $request_m ...

  6. vue使用px2rem

    配置 flexible 安装 lib-flexible 在命令行中运行如下安装: 1 npm i lib-flexible --save 引入 lib-flexible 在项目入口文件 main.js ...

  7. 破解MySQL登录密码的几种方法

    工具列表 Medusa Ncrack Hydra Metasploit Medusa medusa  -h 192.168.1.106 –U /root/Desktop/user.txt –P /ro ...

  8. 前端与编译原理 用js去运行js代码 js2run

    # 前端与编译原理 用js去运行js代码 js2run 前端与编译原理似乎相隔甚远,各种热门的框架都学不过来,那能顾及到这么多底层呢,前端开发者们似乎对编译原理的影响仅仅是"抽象语法树&qu ...

  9. turtle1

    #画风车 from turtle import * pensize(2) for i in range(4): seth(360-i*90) fd(150) rt(90) circle(-150,45 ...

  10. LeNet-5 卷积神经网络结构图

    LeNet-5是Yann LeCun在1998年设计的用于手写数字识别的卷积神经网络,当年美国大多数银行就是用它来识别支票上面的手写数字的,它是早期卷积神经网络中最有代表性的实验系统之一.可以说,Le ...