12.masterha_master_switch
masterha_manager是一种监视和故障转移的程序。另一方面,masterha_master_switch程序不监控主。 masterha_master_switch可以用于主故障转移,也可用于在线总开关。
1. Manual Failover //手动切换:
有时你可能想做手动故障转移。masterha_master_switch命令可以用来运行手册故障转移。 下面是一个例子。
$ masterha_master_switch --master_state=dead --conf=/etc/app1.cnf --dead_master_host=host1
虽然masterha_manager命令监控主,并自动进行故障转移,masterha_master_switch旨在用于当你想做手动故障转移。masterha_master_switch需要以下参数。
2. Non-Interactive Failover //交互式故障转移
如果你设置"--interactive=0" 在masterha_master_switch,它自动执行故障转移(交互式)。
$ masterha_master_switch --master_state=dead --conf=/etc/conf/masterha/app1.cnf --dead_master_host=host1 --new_master_host=host2 --interactive=0
这实际上是相同的masterha_manager什么内部运行。这种非交互式故障转移是有用的,如果你已经证实了master死了,但你想尽快做故障转移。非交互式故障转移也是有用的,如果你使用其他现有的主监控软件和要调用的非交互式故障转移命令软件。典型的例子是masterha_master_switch调用从集群软件像起搏器。
3.Scheduled(Online) Master Switch //online 主开关
有时你可能想做预定的主切换,即使当前的master正在运行。典型的例子是取代部分损坏的硬件或升级主服务器。你不能取代一个RAID控制器或增加内存没有停止服务器。在这种情况下,您需要分配一个预定的维护时间,你必须迁移到不同的服务器的master。
masterha_master_switch命令可以用来运行计划总开关。
$ masterha_master_switch --master_state=alive --conf=/etc/app1.cnf --new_master_host=host2
--master_state=alive必须设置。程序流来调度主开关是稍微不同的从主故障转移。例如,你不需要关闭主服务器,但你需要确保写查询不在主上执行。通过设置主ip网上变更脚本,您可以控制阻塞当前master不允许写(即drop可写的用户,设置read_only = 1,等等)在执行FLUSH TABLES WITH READ LOCK,和如何让写在新master。
Online master switch开始只有当所有下列条件得到满足。
1. IO threads on all slaves are running // 在所有slave上IO线程运行。
2. SQL threads on all slaves are running //SQL线程在所有的slave上正常运行。
3. Seconds_Behind_Master on all slaves are less or equal than --running_updates_limit seconds // 在所有的slaves上 Seconds_Behind_Master 要小于等于 running_updates_limit seconds
4. On master, none of update queries take more than --running_updates_limit seconds in the show processlist output // 在主上,没有更新查询操作多于running_updates_limit seconds 在show processlist输出结果上。
这些限制的原因是出于安全原因,并切换到新主人尽快。masterha_master_switch需要以下参数切换时主在线。
具体原版参考:http://code.google.com/p/mysql-master-ha/wiki/masterha_master_switch