设为首页 加入收藏

TOP

MySQL高可用系列之MHA(二)(四)
2015-07-24 12:04:15 来源: 作者: 【 】 浏览:49
Tags:MySQL 可用 系列 MHA
word=(new master's password)

如果采用的是在Master上绑定共享VIP方式,那么在Master关闭阶段,只需shutdown_script之后关闭主机电源即可,不需要做其它的事情;在新的Master启动阶段,将这个VIP分配到新的Master上。
如果采用的是目录数据库方式,那么在Master关闭阶段,需要删除或修改dead master这条记录;在新的Master启动阶段,需要插入或修改new master这条记录。
此外,可能还需要做一些其它的事情,比如:SET GLOBAL read_only=0,创建拥有写权限的用户等,以便应用可以在新的Master上执行写操作。
MHA Manager检查脚本返回的代码,并据此执行不同的操作,若脚本退出时返回代码0或10,MHA Manager继续操作;若脚本退出时返回0或10之外的代码,
MHA Manager将终止而不会继续故障切换。该参数默认值为空,所以MHA Manager缺省也不会调用任何东西。
master_ip_online_change_script (App/Global)
这个参数与master_ip_failover_script类似,但不是用于Master故障切换的,而是一个Master在线修改命令(masterha_master_switch –master_state=alive),不同阶段传递的参数也不一样,如下:
? Current master write freezing phase(当前Master写冻结阶段)
--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)
? New master granting write phase(新Master授权写阶段)
--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)
在写操作禁用阶段后,MHA在当前的Master上执行“FLUSH TABLES WITH READ LOCK”命令,此时可通过一些逻辑操作来执行Master切换。在给新的Master赋予写操作权限阶段,可以执行一些类似master_ip_failover_script功能的操作,比如:创建一个特权用户,执行“SET GLOBAL read_only=0”命令,修改目录数据库等。如果脚本返回的代码不是0或10,MHA将终止操作,不会进行Master切换。
该参数默认值为空,所以MHA Manager缺省不会调用任何东西。
有些情况下,为了避免脑裂问题,可能需要强制关闭Master以隔离该节点,防止其重启服务。
该参数就是为了实现这个目的的,它调用一个强制关闭master的脚本,比如:
shutdown_script=/usr/local/sample/bin/power_manager
(示例脚本位于MHA Manager源码包中)
在调用shutdown_script之前,MHA Manager先执行一个内部检查,看Master所在的服务器是否还可以通过SSH方式连接,若可以连接(比如:操作正常,而mysqld故障的情况),MHA Manager将传递如下参数:
--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连接,则传递如下参数:
--command=stop
--host=(master's hostname)
--ip=(master's ip address)
该示例脚本的工作原理大致如下:
如果成功传递了--command=stopssh,那么说明Master所在的服务器系统是正常运行的,此时将通过SSH方式连接到该服务器,通过系统命令“kill -9”杀掉所有的mysqld和mysqld_safe进程;
如果--pid_file也成功传递,那么脚本将试图杀掉指定的某个进程,而不是所有的mysqld进程,这适用于一台服务器上安装多个MySQL实例的情况。若mysqld进程成功杀掉,则脚本返回代码10,MHA Manager据此再次连接Master,并保存必要的二进制日志。
如果不能通过SSH方式连接到Master服务器,或者传递的命令为--command=stop,那么脚本将尝试关闭该服务器的电源。关闭电源命令依赖于H/W,不同服务器也不尽相同,对于HP(iLO)来说,使用ipmitool或SSL命令;对于Dell(DRAC)来说,使用dracadm命令。若成功关闭了服务器电源,则脚本返回代码0,否则返回代码1。
如果返回的代码为0,MHA Manager则开始故障切换过程,如果返回的是0或10之外的代码,MHA Manager将终止故障切换。
该参数缺省值为空,所以不会执行任何操作。
另外,在启动监控时,MHA Manager会调用shutdown_scrip脚本,并传递如下参数:
--command=status
--host=(master's hostname)
--ip=(master's ip address)
这里,我们可以检查脚本设置,电源控制依赖于H/W,因此强烈建议检查电源状态,若有某些错误,也可在启动监控之前注意到。
report_script (App/Global)
当故障转移成功完成,或者因错误而结束时,可以通过该参数来发送一个报告,此时会传递如下参数:
--orig_master_host=(dead master's hostname)
--new_master_host=(new master's hostname)
--new_slave_hosts=(new slaves' hostnames,delimited by commas:多个slave用逗号分割)
--subject=(mail subject:报告主题)
-

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇aix下实现goldengate随os启动而自.. 下一篇MySQL更新和删除

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: