什么是 MHA

MHA(Master High Availability) 是自动的 master 故障转移和 slave 提升的软件包。它是基于标准的 MySQL 复制(异步/半同步).

MHA 有两部分组成:MHA Manager(管理节点)和 MHA Node(数据节点)。

MHA Manager 可以单独部署在一台独立机器上管理多个 master-slave 集群,也可以部署在一台 slave 上。MHA Manager 探测集群的 node 节点,当发现 master 出现故障的时候,它可以自动将具有最新数据的 slave 提升为新的 master,然后将所有其它的 slave 指向新的 master。整个故障转移过程对应用程序是透明的。

MHA node 运行在每台 MySQL 服务器上(master/slave/manager),它通过监控具备解析和清理 logs 功能的脚本来加快故障转移的过程。

作为前提条件,应先配置 MySQL 复制,并设置 SSH 公钥免密码登录。下面以 CentOS 为例来说明,最好先安装 EPEL(http://fedoraproject.org/wiki/EPEL),不然 YUM 可能找不到某些软件包。MHA 由 Node 和 Manager 组成,Node 运行在每一台 MySQL 服务器上, 也就是说,不管是 MySQL 主服务器,还是 MySQL 从服务器,都要安装 Node,而 Manager 通常运行在独立的服务器上,但如果硬件资源吃紧,也可以用一台 MySQL 从服务器来 兼职 Manager 的角色。

MHA 工作原理和工具包

工作原理

从宕机崩溃的 master 保存二进制日志事件(binlog events) -识别含有最新更新的 slave

应用差异的中继日志(relay log)到其它 slave

应用从 master 保存的二进制日志事件(binlog events) -提升一个 slave 为新 master

使其它的 slave 连接新的 master 进行复制

Manager 工具

masterha_check_ssh : 检查 MHA 的 SSH 配置

masterha_check_repl : 检查 MySQL 复制

masterha_manager : 启动 MHA

masterha_check_status : 检测当前 MHA 运行状态

masterha_master_monitor : 监测 master 是否宕机

masterha_master_switch : 控制故障转移(自动或手动)

masterha_conf_host : 添加或删除配置的 server 信息

Node 工具(这些工具通常由 MHA Manager 的脚本触发,无需人手操作)

save_binary_logs : 保存和复制 master 的二进制日志

apply_diff_relay_logs : 识别差异的中继日志事件并应用于其它 slave

filter_mysqlbinlog : 去除不必要的 ROLLBACK 事件(MHA 已不再使用这个工具)

purge_relay_logs : 清除中继日志(不会阻塞 SQL 线程)

安装

略 。。。

通过集成的 perl 脚本实现 VIP 漂移

master_ip_failover_script

master_ip_online_change_script

两个文件的配置保持相同,具体如下(默认下载到的是没有如下的,需要手工修改): my $vip = ' 192.168.3.240 '; # Virtual IP

my $net_mask = "24"; #子网野码

my $key = "9999"; #为了标识的唯一性

my $nic = "em1"; #网卡名

my $ssh_start_vip = "sudo /sbin/ifconfig $nic:$key $vip/$net_mask;/sbin/arping -b -c 2 -w 30 -I $nic $vip"; #启动并朝交换机发送广播

my $ssh_stop_vip = "sudo /sbin/ifconfig $nic:$key down"; #关闭命令

保留中继日志和定期清理

默认情况下,从服务器上的中继日志在 SQL 线程执行完后会被自动删除的。但是这些 中继日志在恢复其他从服务器时候可能会被用到,因此需要禁用中继日志的自动清除和定期 清除旧的中继日志。定期清除中继日志需要考虑到复制延时的问题。删除大的文件需要一定 的时间,会导致严重的复制延时。为了避免复制延时,暂时为中继日志创建硬链接。

MHA 节点包含 pure_relay_logs 命令工具,它可以为中继日志创建硬链接,执行 SET GLOBAL relay_log_purge=1,等待几秒中以便 SQL 线程切换到新的中继日志,再执行 SET GLOBAL relay_log_purge=0。

注意点

mha manager 并会初始化虚拟 ip,只会切换 IP,所以请在开启 mha manager 前,在 master 增加 VIP

如果 master 以前是 slave,并且 slave 线程停止掉了,请 reset 掉,不然启动 manager 时会报错

防止脑裂发生,当网络抖动或者交换机异常的时候(默认check 3s 共三次),需要添加定期 check 网络问题,如果脑裂,需要有能力依靠 binlog 补齐,并快速关闭脑子机器所在 vip(经验是如果是 1主 2从 的架构,选择已经完成主从 Or 选择活跃连接数较高的一组为最新)

mha manager 至少需要两台机器来进行 double check,三台就更好了

切换脚本可以做一些二次开发,比如添加重新修改监控、中继日志清理程序调整 & 各种各家不通的操作

非 root 打通的 SSH,需要注意用户权限添加到 MySQL 用户组,注意 ifconfig 权限需要给到,建议使用非 root 打通

具体切换过程,推荐大家先从看日志开始,日志还是很全面的

如果是云上可以基于各种LB 来实现 VIP 的功能,需要修改切换脚本 (借用某 DBA 大佬的话,都云了,还用 MHA 个毛,直接买啊!)

mysql中的mha简介_mha 简介相关推荐

  1. 在MySQL中创建视图的X种方式

    在本教程中,您将学习如何使用CREATE VIEW语句在MySQL中创建视图. CREATE VIEW语句简介 要在MySQL中创建新视图,请使用CREATE VIEW语句. 在MySQL中创建视图的 ...

  2. MySQL的show profile(已过时)简介以及该功能在MySQL 5.7中performance_schema中的替代

    本文出处:http://www.cnblogs.com/wy123/p/6979499.html show profile 命令用于跟踪执行过的sql语句的资源消耗信息,可以帮助查看sql语句的执行情 ...

  3. Mysql高级调优篇——前言简介

    本篇开始就进入Mysql高级篇,当然我讲解的身份是Java开发工程师,并非专业的DBA,所以我们以写出高效,好用,Sql优化和开发相关的数据库方面的知识落地为目的,帮助开发解决一些sql上的问题,为迈 ...

  4. mysql recyclebin_MySQL防误删插件Recycle-Bin简介

    1. Recycle_bin简介 Recycle_bin是一款MySQL插件,可以在不修改任何MySQL代码的情况下,自动备份MySQL中被Drop的数据库/表,在出现人为误操作删表时,可以快速的进行 ...

  5. python isnumeric函数用法_Python中isnumeric()方法的使用简介

    Python中isnumeric()方法的使用简介 更新时间:2015年05月19日 09:35:06 投稿:goldensun 这篇文章主要介绍了Python中isnumeric()方法的使用,is ...

  6. Linux驱动调试中的Debugfs的使用简介

    Linux驱动调试中的Debugfs的使用简介 (2012-03-31 14:14) 在调试linux驱动的时候,可以用debugfs来调试,debugfs类似字符设备驱动一样,甚至更简单,不需要主设 ...

  7. Linux驱动调试中的Debugfs的使用简介 CONFIG_DEBUG_FS 的功能与配置

    Linux驱动调试中的Debugfs的使用简介 (2012-03-31 14:14) 在调试linux驱动的时候,可以用debugfs来调试,debugfs类似字符设备驱动一样,甚至更简单,不需要主设 ...

  8. ML之FE:特征工程中数据缺失值填充的简介、方法、全部代码实现之详细攻略

    ML之FE:特征工程中数据缺失值填充的简介.方法.全部代码实现之详细攻略 目录 特征工程中数据缺失值填充的简介.方法.经典案例

  9. Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略

    Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略 目录 sklearn.preprocessing中的Stand ...

最新文章

  1. 股骨截骨php钢板,股骨远端截骨(DFO)术前设计及手术步骤【附视频】
  2. 如何下载 Intel Integrated Performance Primitives –intel IPP
  3. 科大星云诗社动态20210831
  4. boost::core模块实现constexpr的地址
  5. 同方自主可控系统服务器,自主可控 同方超强TR1210服务器!
  6. KVM 虚拟化环境安装
  7. linux-basic(8)linux磁盘与文件系统管理
  8. java zip压缩_压缩工具
  9. 宏碁(acer)被攻击:黑客索要 3.25 亿元赎金
  10. 实践单元测试-Using NUnit 大纲
  11. POJ1741 Tree(点分治)
  12. JavaScript类与原型——组织JavaScript代码
  13. 计算机本科结题验收报告怎么写,课题结题鉴定书
  14. 如何在国外做好自然科学研究-2
  15. PHP程序员全栈,PHP程序员画的 “全栈工程师技能树” 思维导图
  16. 在windows平台上打造Linux开发环境-洋葱先生-杨少通
  17. 女生宿舍,男生请勿进
  18. EOS区块链一周要闻回顾(2.24-3.01)
  19. 华南师范大学计算机学院学硕,华南师范大学计算机学院研究生导师简介肖菁
  20. 软件自动升级解决方案(一)

热门文章

  1. Q版格斗游戏《口袋战士NOVA》开发心得[原创]
  2. Logistic回归做分类或预测(实战代码)
  3. Slicer4j运行defects4j(二)--运行benchmarks项目
  4. 学完计算机图形学可以做什么,计算机图形学心得体会.doc
  5. redis客户端连接
  6. 贪吃蛇C语言代码(简单易懂)
  7. 如题,如何在IDEA的settings属性中,通过设置快捷键实现字符串中的英文字母转大小写?
  8. 学一下这个60秒的男人
  9. taro单选框、多选框当前勾选的值
  10. 供应链单据套打设置保存提示:未知错误,activeX部件不能创建对象,组件跟踪到:Kingdee.K3.ExcelPrint.ComLibary.dll