默认的脚本有:
常使用的
master_ip_failover :使用故障高可用切换的主要脚本
master_ip_online_change:手动切换M-S的脚本
app.conf :一般写的是全局参数(全局指多个M-S集群的)+某个节点生效参数
masterha_default.conf:写的都是全局参数
(masterha_default.conf、app.conf 这两个文件可能会合并成一个文件)
其他:
shutdown_script=”power_manager” :关闭mysql的脚本
report_script=”/etc/mha/end_report”:当master发生切换的时候会发送邮件等信息。这个一般有监控软件就不需要这个脚本了
====================================================================
app.conf :
[server default] (全局通用文件,node有集群时候)
mha manager工作目录
manager_workdir =/data/mha/app1(mha工作目录)
manager_log = /var/log/masterha/app1/app1.log(mha日志目录)
remote_workdir = /data/mha/app1 (mha远程工作目录,基本废弃了)
[server1] (自定义的)
hostname=zst2
port=3310
master_binlog_dir = /data/mysql/mysql3310/logs
candidate_master = 1 仲裁成为master的优先级
check_repl_delay = 0 #当slave比master延迟超过了100M的relay_log,即100M relay_log 没有被应用 (默认)的时候该节点不会升为master, 为0时忽略
[server2]
hostname=zst3
port=3310
master_binlog_dir = /data/mysql/mysql3310/logs
candidate_master=1
check_repl_delay=0
[server3]
hostname=zst4
port=3310
master_binlog_dir = /data/mysql/mysql3310/logs
candidate_master=1
check_repl_delay=0
[binlogserver] 节点中有binlogservier时,一般可设置在manager主机上
hostname=binlogser
master_binlog_dir=/opt/mysql/data
no_master=1 设置改主机永远不成为master
ignore_fail=1 忽略切换事件
==========================================================
masterha_default.conf(可合并在app.conf中)
[server default]
MySQL的用户和密码
user=user1 (MHA连接数据库的用户&密码)
password=user1
系统ssh用户
ssh_user=root 远程ssh的用户默认root,但是实际不可能是root
复制用户
repl_user=repl
repl_password=repl
监控
ping_interval=3 (ping 间隔。默认是3次,每次1s,次参数就是3次,当3次服务器和数据库无响应,就会触发failover,基础网络环境不好的就弄大一些)
shutdown_script=””
切换调用的脚本
master_ip_failover_script= /etc/masterha/master_ip_failover
master_ip_online_change_script= /etc/masterha/master_ip_online_change
second_check_script=”masterha_scondary_check -s 172.0.1.51 -s 172.0.2.51”
如果MHA Manger三次间隔时间都没办法连接master server,就会进入这个阶段如果你设置了 secondary_check_script ,那么MHA会调用脚本做二次检测来判断master是否是真的挂了,该功能主要是应对manager与MHA出现网络抖动时发生不必要的切换
该脚本作用步骤是:
manager (A)>>172.0.1.51(B)>>>master主机
manager (A)>>172.0.2.51(B)>>>master主机
在A(manager>172.0…)成功,但是B不成功则manager认为master挂了(以为该脚本只有在正常manager到master出现3次连不上的时候才会使用)
但是如果在A时就不成功则判定master为活着。
log_level=debug 平时可注释
===================================
模版1
[root@mysql-zst3 masterha]# more app1.conf
[server default]
MySQL的用户和密码
user=user1
password=user1
系统ssh用户
ssh_user=root
复制用户
repl_user=repl
repl_password=repl
监控
ping_interval=3
shutdown_script=””
切换调用的脚本
master_ip_failover_script= /etc/masterha/master_ip_failover
master_ip_online_change_script= /etc/masterha/master_ip_online_change
secondary_check_script=masterha_secondary_check -s
log_level=debug
mha manager工作目录
manager_workdir = /data/mha/app1
manager_log = /data/mha/app1/app1.log
remote_workdir = /data/mha/app1
[server1]
hostname=zst2
port=3310
master_binlog_dir = /data/mysql/mysql3310/logs
candidate_master = 1
check_repl_delay = 0 #用防止master故障时,切换时slave有延迟,卡在那里切不过来。
[server2]
hostname=zst3
port=3310
master_binlog_dir = /data/mysql/mysql3310/logs
candidate_master=1
check_repl_delay=0
[server3]
hostname=zst4
port=3310
master_binlog_dir = /data/mysql/mysql3310/logs
candidate_master=1
check_repl_delay=0
其他脚本注意修改的地方:
master_ip_failover
master_ip_online_change
这里需要注意修改的地方
master_ip_failover
my $vip = “172.0.0.100”;
my $if = “ens32”;
sub add_vip {
my $output1 = `ssh -o ConnectTimeout=15 -o ConnectionAttempts=3 $orig_master_host /sbin/ip addr del $vip/24 dev $if`;my $output2 = `ssh -o ConnectTimeout=15 -o ConnectionAttempts=3 $new_master_host /sbin/ip addr add $vip/24 dev $if`;
}
master_ip_online_change
my $vip = “172.0.0.100”;
my $if = “ens32”;
sub drop_vip {
my $output = `ssh -o ConnectTimeout=15 -o ConnectionAttempts=3 $orig_master_host /sbin/ip addr del $vip/24 dev $if`;
#mysql里的连接全部干掉
#FIXME
}
sub add_vip {
my $output = `ssh -o ConnectTimeout=15 -o ConnectionAttempts=3 $new_master_host /sbin/ip addr add $vip/24 dev $if`;
