mha 简介

什么是 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 打通
  • 具体切换过程,推荐大家先从看日志开始,日志还是很全面的
  • MySQL高可用架构之MHA 原理与实践
  • 如果是云上可以基于各种LB 来实现 VIP 的功能,需要修改切换脚本 (借用某 DBA 大佬的话,都云了,还用 MHA 个毛,直接买啊!)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354