keepalived mysql监控_使用KeepAlived搭建MySQL高可用环境

global_defs {

router_id HA_MySQL

}

vrrp_script check_mysql { ######定义监控mysql的脚本

script "/root/check_mysql.sh"

interval 2 ######监控时间间隔

weight 2 ######负载参数

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 100

advert_int 1

nopreempt

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.113.215

}

}

track_script { ######执行监控mysql进程的脚本

check_mysql

}

virtual_server 192.168.113.215 3306 {

delay_loop 2

lb_algo wrr

lb_kind DR

persistence_timeout 60

protocol TCP

real_server 192.168.113.142 3306 {

weight 3

notify_down /root/shutdown.sh

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

}

check_mysql.sh

MYSQL=/usr/local/mysql/bin/mysql

MYSQL_HOST=localhost

MYSQL_USER=root

MYSQL_PASSWORD=cc.123

$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD -e "show status;" >/dev/null 2>&1

#$mysqlclient --host=$host --port=$port --user=$user --password=$password -e "show databases;" > /dev/null 2>&1

if [ $? == 0 ]

then

echo " $host mysql login successfully "

exit 0

else

#echo " $host mysql login faild"

/etc/init.d/keepalived stop

exit 2

fi

shutdown.sh

#!/bin/bash

#pkill keepalived

service keepalived stop

其中

priority                      表示优先级

virtual_ipaddress      虚拟的IP地址(VIP)

delay_loop                每个2秒检查一次real_server状态

notify_down              检测到服务down后执行的脚本

connect_timeout      连接超时时间

nb_get_retry             重连次数

delay_before_retry   重连间隔时间

connect_port            健康检查端口

shutdown.sh 可以考虑加入邮件告警的功能。

#!/bin/bash

pkill keepalived

在两个服务器上启动MySQL和KeepAlived服务

service mysql start

service keepalived start

Master的server_id为1

Slave的server_id为2

然后 连接VIP的MySQL,可以看到已经连接到了Master服务器(server_id为1)

29254281_14088901415ktB.png

如果kill掉Master的MySQL,KeepAlived会自动转移到Slave

在Master服务器上执行

killall mysqld

然后再次查看server_id,

短暂的失去连接之后,再次连接上VIP,server_id已经变为2,说明VIP已经指向了Slave

29254281_1408890396C3OE.png

nopreempt参数表示Master恢复正常之后,是否将VIP继续指向Master

这样的话,会再次引发切换。

两台服务器的KeepAlived会有心跳检测,

如果Master的MySQL服务挂了(3306端口挂了),那么他会选择自杀.

Slave的KeepAlived通过心跳检测发现这个情况,就会将VIP的请求接管。

KeepAlived还有很多参数没有明白是什么意思

生产环境的切换脚本,在Slave提升为Master之后,应该等待所有的中继日志应用完毕,否则可能丢失数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值