一,配置,所有主机的,ssh密钥认证
二,数据库授权,
三配额文件,
,/etc/masterha_default.cnf
(服务器默认),
,用户=尼古拉斯
,密码=测试
,ssh_user=根
,master_binlog_dir=
/zx/mysql/数据 ,remote_workdir=/var/log/尼古拉斯/app1
#,secondary_check_script=masterha_secondary_check - s master1 - s master2
,ping_interval=3
,master_ip_failover_script=/etc/尼古拉斯/脚本/master_ip_failover
#,shutdown_script=/etc/mha/scripts/power_manager
#,report_script=/etc/mha/scripts/send_master_failover_mail
# master_ip_online_change_script=/etc/尼古拉斯/脚本/master_ip_online_change
[root@manager尼古拉斯)#猫/etc/mha/app1.cnf
(服务器默认)
manager_log=/var/log/尼古拉斯/app1/经理。日志
manager_workdir=/var/log/尼古拉斯/app1。日志
master_binlog_dir=
/zx/mysql/数据 密码=测试
ping_interval=2
repl_password=zhangxu
repl_user=repl_user
ssh_user=根
用户=尼古拉斯
(server1)
candidate_master=1
check_repl_delay=0
主机名=master2
端口=3306
[server2]
candidate_master=1
check_repl_delay=0
主机名=master1
端口=3306
[root@manager尼古拉斯)#猫脚本/master_ip_failover
# !/usr/bin/env perl
使用严格的;
使用致命的警告=比;“所有”,
使用Getopt::长;
我的(
命令,ssh_user美元,orig_master_host美元,美元orig_master_ip,
$ orig_master_port new_master_host美元new_master_ip美元,美元new_master_port
),
我的贵宾美元=?92.168.248.100”;#虚拟IP
我的网关美元=?92.168.1.1”;#网关IP
我的美元界面=癳th2”;
我的美元关键=?”;
ssh_start_vip美元="/sbin/ifconfig接口:美元关键vip;美元/sbin/arp -界面- c 3美元- s vip网关在美元/dev/null 2祝辞,1”;
我美元ssh_stop_vip="接口:美元/sbin/ifconfig关键”;
GetOptions (
'命令=s '=比;\ $命令,
ssh_user=年代'=比;\ ssh_user美元,
orig_master_host=年代'=比;\ orig_master_host美元,
orig_master_ip=年代'=比;\ orig_master_ip美元,
' orig_master_port=我=比;\ orig_master_port美元,
new_master_host=年代'=比;\ new_master_host美元,
new_master_ip=年代'=比;\ new_master_ip美元,
' new_master_port=我=比;\ new_master_port美元,
),
退出,main ();
子主要{
打印“\ n \ nIN脚本测试====ssh_stop_vip==ssh_start_vip美元===\ n \ n ";
如果($命令eq“停止”| | $命令eq stopssh) {
# $ orig_master_host orig_master_ip美元,美元orig_master_port传递。
#如果你在全球管理大师ip地址目录数据库,
# orig_master_ip失效。
我的exit_code=1美元。
eval {
打印”禁用VIP大师:$ orig_master_host \ n ";
,stop_vip ();
美元exit_code=0;
};
如果$ @ {
警告“有错误:$ @ \ n”;
退出exit_code美元;
}
退出exit_code美元;
}
elsif($命令eq“开始”){
#所有参数传递。
#如果你在全球管理大师ip地址目录数据库,
#激活new_master_ip这里。
#你也可以允许写访问(创建用户,设置read_only=0,等等)。
我exit_code=10美元;
eval {
打印”使VIP -贵宾在新主人- new_master_host美元\ n”;
,start_vip ();
美元exit_code=0;
};
如果$ @ {
警告$ @,
退出exit_code美元;
}
退出exit_code美元;
}
elsif eq($命令“状态”){
打印”检查脚本的状态. .好的\ n”;
“ssh ssh_user \ @ orig_master_host美元\“ssh_start_vip美元\”,
退出0;
}
其他{
和使用();
退出1;
}
}
#一个简单的系统调用,使新主人的VIP
子start_vip () {
“ssh ssh_user \ @ new_master_host美元\“ssh_start_vip美元\”,
}
二,数据库授权,
三配额文件,
,/etc/masterha_default.cnf
(服务器默认),
,用户=尼古拉斯
,密码=测试
,ssh_user=根
,master_binlog_dir=
/zx/mysql/数据 ,remote_workdir=/var/log/尼古拉斯/app1
#,secondary_check_script=masterha_secondary_check - s master1 - s master2
,ping_interval=3
,master_ip_failover_script=/etc/尼古拉斯/脚本/master_ip_failover
#,shutdown_script=/etc/mha/scripts/power_manager
#,report_script=/etc/mha/scripts/send_master_failover_mail
# master_ip_online_change_script=/etc/尼古拉斯/脚本/master_ip_online_change
[root@manager尼古拉斯)#猫/etc/mha/app1.cnf
(服务器默认)
manager_log=/var/log/尼古拉斯/app1/经理。日志
manager_workdir=/var/log/尼古拉斯/app1。日志
master_binlog_dir=
/zx/mysql/数据 密码=测试
ping_interval=2
repl_password=zhangxu
repl_user=repl_user
ssh_user=根
用户=尼古拉斯
(server1)
candidate_master=1
check_repl_delay=0
主机名=master2
端口=3306
[server2]
candidate_master=1
check_repl_delay=0
主机名=master1
端口=3306
[root@manager尼古拉斯)#猫脚本/master_ip_failover
# !/usr/bin/env perl
使用严格的;
使用致命的警告=比;“所有”,
使用Getopt::长;
我的(
命令,ssh_user美元,orig_master_host美元,美元orig_master_ip,
$ orig_master_port new_master_host美元new_master_ip美元,美元new_master_port
),
我的贵宾美元=?92.168.248.100”;#虚拟IP
我的网关美元=?92.168.1.1”;#网关IP
我的美元界面=癳th2”;
我的美元关键=?”;
ssh_start_vip美元="/sbin/ifconfig接口:美元关键vip;美元/sbin/arp -界面- c 3美元- s vip网关在美元/dev/null 2祝辞,1”;
我美元ssh_stop_vip="接口:美元/sbin/ifconfig关键”;
GetOptions (
'命令=s '=比;\ $命令,
ssh_user=年代'=比;\ ssh_user美元,
orig_master_host=年代'=比;\ orig_master_host美元,
orig_master_ip=年代'=比;\ orig_master_ip美元,
' orig_master_port=我=比;\ orig_master_port美元,
new_master_host=年代'=比;\ new_master_host美元,
new_master_ip=年代'=比;\ new_master_ip美元,
' new_master_port=我=比;\ new_master_port美元,
),
退出,main ();
子主要{
打印“\ n \ nIN脚本测试====ssh_stop_vip==ssh_start_vip美元===\ n \ n ";
如果($命令eq“停止”| | $命令eq stopssh) {
# $ orig_master_host orig_master_ip美元,美元orig_master_port传递。
#如果你在全球管理大师ip地址目录数据库,
# orig_master_ip失效。
我的exit_code=1美元。
eval {
打印”禁用VIP大师:$ orig_master_host \ n ";
,stop_vip ();
美元exit_code=0;
};
如果$ @ {
警告“有错误:$ @ \ n”;
退出exit_code美元;
}
退出exit_code美元;
}
elsif($命令eq“开始”){
#所有参数传递。
#如果你在全球管理大师ip地址目录数据库,
#激活new_master_ip这里。
#你也可以允许写访问(创建用户,设置read_only=0,等等)。
我exit_code=10美元;
eval {
打印”使VIP -贵宾在新主人- new_master_host美元\ n”;
,start_vip ();
美元exit_code=0;
};
如果$ @ {
警告$ @,
退出exit_code美元;
}
退出exit_code美元;
}
elsif eq($命令“状态”){
打印”检查脚本的状态. .好的\ n”;
“ssh ssh_user \ @ orig_master_host美元\“ssh_start_vip美元\”,
退出0;
}
其他{
和使用();
退出1;
}
}
#一个简单的系统调用,使新主人的VIP
子start_vip () {
“ssh ssh_user \ @ new_master_host美元\“ssh_start_vip美元\”,
}