<代码> (root@manager脚本)#猫/脚本/master_ip_failover # !/usr/bin/env perl 使用严格的; 使用致命的警告=比;& # 39;所有# 39;; 使用Getopt::长; 我的( 命令,ssh_user美元,美元orig_master_host, orig_master_ip orig_master_port美元,美元 new_master_host new_master_ip, new_master_port美元美元 ); 我$ vip=& # 39; 192.168.20.100& # 39;;,,,,#这里指定VIP地址 我的美元关键=& # 39;0 & # 39;; 我的$ ssh_start_vip=?sbin/ifconfig ens33:关键vip"美元;;,,,,#这条指令是启动贵宾 我的$ ssh_stop_vip=?sbin/ifconfig ens33:关键down"美元;;,,,#这条指令是停止贵宾 GetOptions ( & # 39;命令=& # 39;=比;\ $命令, & # 39;ssh_user=& # 39;=比;\ ssh_user美元, & # 39;orig_master_host=& # 39;=比;\ orig_master_host美元, & # 39;orig_master_ip=& # 39;=比;\ orig_master_ip美元, & # 39;orig_master_port=我# 39;=比;\ orig_master_port美元, & # 39;new_master_host=& # 39;=比;\ new_master_host美元, & # 39;new_master_ip=& # 39;=比;\ new_master_ip美元, & # 39;new_master_port=我# 39;=比;\ new_master_port美元, ); 退出,main (); 子主要{ 打印“\ n \ nIN脚本测试====ssh_stop_vip==ssh_start_vip美元===\ n \ n"; 如果($命令eq“stop"| | $命令eq“stopssh"){ 我exit_code=1美元; eval { 打印“禁用VIP大师:$ orig_master_host \ n"; ,stop_vip (); 美元exit_code=0; }; 如果($ @){ 警告,有错误:$ @ \ n"; 退出exit_code美元; } 退出exit_code美元; } elsif($命令eq“时){ 我exit_code=10美元; eval { 打印“启用VIP -贵宾新主人——new_master_host美元 \ n"; ,start_vip (); 美元exit_code=0; }; 如果($ @){ 警告$ @; 退出exit_code美元; } 退出exit_code美元; } elsif($命令eq“status"){ 打印“检查脚本的状态. .好的\ n"; #“ssh ssh_user \ @cluster1 \“美元;ssh_start_vip \“美元”; 退出0; } 其他{ 和使用(); 退出1; } } #一个简单的系统调用,让贵宾在新主人 子start_vip () { “ssh ssh_user \ @ new_master_host \“美元;ssh_start_vip \“美元”; } #一个简单的系统调用,禁用old_master上的贵宾 子stop_vip () { 返回0,除非($ ssh_user); “ssh ssh_user \ @ orig_master_host \“美元;ssh_stop_vip \“美元”; } 子使用{ 打印 “用法:master_ip_failover——命令=启动|停止| stopssh |状态— orig_master_host=主机——orig_master_ip=ip——orig_master_port=端口 new_master_host=主机——new_master_ip=ip——new_master_port=港\ n"; } (root@manager ~) #我/脚本/master_ip_failover,,,,,,#需要保证脚本有可执行权限 -rwxr-xr-x 1根根2006年2月,24 16:32/脚本/master_ip_failover 代码>
2,修改经理配置文件
<代码> [root@manager ~] #猫/etc/masterha/app1.cnf,,,,,#配置文件指定脚本的位置 (服务器默认) manager_workdir=/var/log/masterha/app1 manager_log=/var/log/masterha/app1/manager.log 用户=经理 密码=123. com ssh_user=根 repl_user=mharep repl_password=123. com ping_interval=1 master_ip_failover_script=/脚本/master_ip_failover,,#增加改行,指定脚本的位置即可。 (server1) 主机名=192.168.20.2 端口=3306 master_binlog_dir=/usr/地方/mysql/数据 candidate_master=1 (server2) 主机名=192.168.20.3 端口=3306 master_binlog_dir=/usr/地方/mysql/数据 candidate_master=1 (server3) 主机名=192.168.20.4 端口=3306 master_binlog_dir=/usr/地方/mysql/数据 no_master=1 代码>
做到这里,就可以保证在切换主人时,贵宾地址也会随之切换到新主人的主机上。