默认的脚本有:

常使用的

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 {

  1. my $output1 = `ssh -o ConnectTimeout=15 -o ConnectionAttempts=3 $orig_master_host /sbin/ip addr del $vip/24 dev $if`;
  2. 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`;