文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MHA常用脚本简介

2024-04-02 19:55

关注

master_ip_failover

常见的HA环境下,大多是情况会给master分配一个虚拟IP,如果master宕机,HA软件像一个Pacemaker将虚拟IP转移到备用的master上.

另外一种常见的方法就是创建一个全局目录数据库,包含所有应用和writer/reader ip地址.例如{app_master1,192.168.0.1},{app_master2,192.168.0.2}...,代替使用虚拟IP,这种情况,你需要在master宕机的时候更新目录数据库.

两种方法都有好的或者不好的地方,MHA不强制要求使用哪一种,但是提供了master_ip_failover_script参数来完成此目的.换句话说,你需要写一个脚本来调整应用服务连接到新的master,然后定义master_ip_failover_script的参数,下面是一个实例:

 master_ip_failover_script= /usr/local/sample/bin/master_ip_failover

你可以从(MHA Manager package)/samples/scripts/master_ip_failover找到一个简单的脚本.这个脚本在manager的tarball和GitHUb branch中才包含.

MHA manager会调用master_ip_failover_script三次,第一次,在开始master monitor之前调用(目的是检查脚本是否可用),第二次是在调用shutdown_script脚本前调用,第三次是在new master应用完所有的差异日志以后,MHA manager会传递给脚本如下参数.(你不用在配置文件中指明这些参数)


power_manager (防止脑裂)

你可能需要强制关闭master服务器,避免他再次提供服务,这对于避免脑裂很重要.下面是一个实例:

  shutdown_script= /usr/local/sample/bin/power_manager

你可以从(MHA Manager package)/samples/scripts/power_manager找到一个简单的脚本.这个脚本在manager的tarball和GitHUb branch中才包含.

在调用shutdown_script脚本之前,MHA manager内部会通过ssh尝试连接到mysql master,如果ssh可以连接(意思就是OS是存活的,但是Mysqld没有运行),MHAmanager就会传递下面的参数:

--command=stopssh (这个意思就是指停止服务,不会关机)

--ssh_user=(ssh username so that you can connect to the master)

--host=(master's hostname)

--ip=(master's ip address)

--port=(master's port number)

--pid_file=(master's pid file)

如果master主机的ssh不能连接,那么MHA会使用如下参数:

--command=stop (这个会通过fence设备关掉电源)

--host=(master's hostname)

--ip=(master's ip address)

这个脚本的大概功能如下,如果--command=stopssh被调用,脚本会使用killall -9 杀掉目标服务器上所有的mysqld_safe服务.如果--pid_file被设置,脚本尝试kill指定的进程.如果脚本执行成功,那么脚本会退出返回状态10.如果退出状态为10,MHA manager后面会通过ssh连接到master,获取需要的binary log.如果脚本通过ssh连接到服务器失败,那么就会传递--command=stop参数,这个参数尝试关闭机器的电源,关闭电源依赖于H/W.HP(ILO),DELL(DRAC).如果power off成功,脚本会然会状态0,其他情况会返回状态1.当返回状态是0的时候MHA manager 开始failover.如果返回状态不是0或者10,那么MHA manager会意外终止.这个参数默认是空,所以MHA manager不会调用任何脚本.

另外,MHA manager在启动monitoring之前调用shutdown_script.这时候会传递下面的参数.目的是检测脚本是否可用,如果发现错误,你可以提前知道.

--command=status

--host=(master's hostname)

--ip=(master's ip address)


send_report

你希望当failover发生以后可以发送一个报告(例如email),report_script可以达到这个目的,MHA manager传递下面的参数.

--orig_master_host=(dead master's hostname)

--new_master_host=(new master's hostname)

--new_slave_hosts=(new slaves' hostnames, delimited by commas)

--subject=(mail subject)

--body=(body)

默认这个参数是空的,所以MHA manager不调用任何脚本.

你可以从(MHA Manager package)/samples/scripts/send_report找到一个简单的脚本.这个脚本在manager的tarball和GitHUb branch中才包含.


master_ip_online_change

这是几个简单版本的master_ip_failover_script参数,但是master failover命令并不调用它.master online change命令会调用它.(masterha_master_switch --master_state=alive),传递以下参数:

Current master write freezing phase

--command=stop or stopssh

--orig_master_host=(current master's hostname)

--orig_master_ip=(current master's ip address)

--orig_master_port=(current master's port number)

--orig_master_user=(current master's user)

--orig_master_password=(current master's password)

--orig_master_ssh_user=(from 0.56, current master's ssh user)

--orig_master_is_new_slave=(from 0.56, notifying whether the orig master will be new slave or not)

New master granting write phase

--command=start

--orig_master_host=(orig master's hostname)

--orig_master_ip=(orig master's ip address)

--orig_master_port=(orig master's port number)

--new_master_host=(new master's hostname)

--new_master_ip=(new master's ip address)

--new_master_port(new master's port number)

--new_master_user=(new master's user)

--new_master_password=(new master's password)

--new_master_ssh_user=(from 0.56, new master's ssh user)

MHA在当前的master write freezing阶段后执行FLUASH TABLES WITH READ LOCK, 在new mastergranting write阶段你可以执行一些类似master_ip_failover_script的操作.比如创建一个有写入权限的用户,执行SET GLOBAL read_only=0,更新目录数据库等.如果你的脚本退出返回状态不是1或者10,那么MHA manager将会意外终止,停止master switch.

这个参数默认为空,所以MHA manager不做任何调用.

你可以从(MHA Manager package)/samples/scripts/master_ip_online_change找到一个简单的脚本.这个脚本在manager的tarball和GitHUb branch中才包含.

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯