mysql master挂了_mysql使用keepalived搭建双master

这里的双master并不是2个都同时对应用开放写,只是同一个时刻只有1个mysql对外开放写,另一个作为slave接受从master同步过来的数据,当master挂掉后,通过keepalived的VIP转移,使slave变成master,从而形成高可用的环境

keepalived的master配置如下

vrrp_script mycheck {

script "/usr/local/keepalived/shutdown.sh"

interval 2                      # check every 2 seconds

weight 2                        # default prio: +2 if connect ok

}

global_defs {

router_id NodeA

}

vrrp_instance VI_1 {

state BACKUP

interface eth1

virtual_router_id 151

priority 201

advert_int 1

nopreempt

authentication {

auth_type PASS

auth_pass pass

}

virtual_ipaddress {

192.168.0.100

}

track_script {

mycheck

}

}

slave配置如下:

vrrp_script mycheck {

script "/usr/local/keepalived/shutdown.sh"

interval 2 # check every 2 seconds

weight 2 # default prio: +2 if connect ok

}

global_defs {

router_id NodeB

}

vrrp_instance VI_1 {

state BACKUP

interface eth1

virtual_router_id 151

priority 100

advert_int 1

nopreempt

authentication {

auth_type PASS

auth_pass pass

}

virtual_ipaddress {

192.168.0.100

}

track_script {

mycheck

}

}

几点要说明的:

1.配置成nopreempt表示非抢占,即master由挂掉的状态恢复后,并不抢占VIP,slave端继续提供服务

2.由于nopreempt只有BACKUP中支持,所以上面master和slave都配置成了BACKUP

3.VIP转移只有在keepalived挂掉的情况下才会出现(不一定,等会说明),也就是说机器宕机是可以的,但是mysql本身挂掉了并不能导致keepalived挂掉,所以要检测mysql是否挂掉

4.通过检测mysql占用端口,比如3306并不难严谨,检测mysql进程是否存在也不是很严谨,最好的办法应该是执行mysql的命令如下:

mysql -uroot -proot -h 192.168.0.47 --connect_timeout=5 -e "select 1;" 5.有时候即使keepalived进程不在了,但是VIP还存在,通过ipconfig可能看不到VIP,可以通过

ip -o -f inet addr show 就可以看到VIP还是存在的

所以为了保险起见最好加上:

ip addr del 192.168.0.100 dev eth1 即

删除VIP

6.数据同步那块可以依赖mysql自己,也可以使用ali的otter来进行同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值