免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9286 | 回复: 5
打印 上一主题 下一主题

keepalived脚本无法监控到mysql的运行状态 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-14 16:20 |只看该作者 |倒序浏览
说明:我两台mysql主主同步,之间使用keepalived提供一个虚拟IP地址,并实时监控自身服务的运行状况,一旦mysql挂掉就杀掉自己的keepalived进程,这么一来另一台就可以立即提供服务,但是现在我的mysql停止后   监控脚本并没有执行,有遇到这个问题的吗?求指点
keepalived配置文件内容
! Configuration File for keepalived
global_defs {
     notification_email {
     xxxxxx@xxxx
     }
     notification_email_from xxxxxx@xxxx
     smtp_server 127.0.0.1
     smtp_connect_timeout 30
     router_id MySQL-ha
     }

vrrp_instance VI_1 {
     state BACKUP   #两台配置此处均是BACKUP
     interface eth0
     virtual_router_id 99
     priority 100   #优先级,另一台改为90
     advert_int 1
     nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
     authentication {
     auth_type PASS
     auth_pass 1111
     }
     virtual_ipaddress {
     192.168.2.150
     }
     }

virtual_server 192.168.2.150 3306 {
     delay_loop 2   #每个2秒检查一次real_server状态
     lb_algo wrr   #LVS算法
     lb_kind DR    #LVS模式
     persistence_timeout 60   #会话保持时间
     protocol TCP
     real_server 192.168.2.142 3306 {
     weight 3
     notify_down /usr/local/mysql/bin/MYSQL.sh  #检测到服务down后执行的脚本
     TCP_CHECK {
     connect_timeout 10    #连接超时时间
     nb_get_retry 3       #重连次数
     delay_before_retry 3   #重连间隔时间
     connect_port 3306   #健康检查端口
     }
     }
检测到服务down后执行的脚本内容
#!/bin/bash

MYSQL=/usr/local/mysql/bin/mysql
MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PASSWORD='xxxxx'

CHECK_TIME=3

#mysql is working MYSQL_OK is 0 , mysql down MYSQL_OK is 1
MYSQL_OK=1

function check_mysql_helth (){
$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p $MYSQL_PASSWORD -e "show status;" > /dev/null 2>&1
if [ $? = 0 ] ;then
MYSQL_OK=0
else
MYSQL_OK=1
fi
return $MYSQL_OK
}

while [ $CHECK_TIME -ne 0 ]
do
let "CHECK_TIME -= 1"

check_mysql_helth

if [ $MYSQL_OK = 0 ] ; then
CHECK_TIME=0
exit 0
fi

if [ $MYSQL_OK -eq 1 ] && [ $CHECK_TIME -eq 1 ]
then
   /etc/init.d/keepalived stop
exit 1
fi

sleep 1

done

论坛徽章:
0
2 [报告]
发表于 2012-12-15 06:49 |只看该作者
对MYSQL的监控需要与MYSQL建立一次完整的对话,仅仅测试MYSQL的端口不行(MYSQL会拒绝大量的错误连接),昨天晚上查阅了一下HAPROXY对MYSQL的健康检查(mysql-check),发现这个是比较简单的方法。

当然调用一个MYSQL连接脚本来判断MYSQL的健康比较容易些,因为这种方式时效性差些容易误判。

论坛徽章:
0
3 [报告]
发表于 2013-02-19 16:21 |只看该作者
keepalived 这个应该如何弄呢?请问楼主是如何解决的?

论坛徽章:
0
4 [报告]
发表于 2013-02-20 11:26 |只看该作者
监控mysql的状态,建议安装nagios,里面有个check_mysql足够胜任的。


/usr/lib64/nagios/plugins/check_mysql

论坛徽章:
4
CU大牛徽章
日期:2013-04-17 11:50:25CU大牛徽章
日期:2013-04-17 11:50:33CU大牛徽章
日期:2013-04-17 11:50:39CU大牛徽章
日期:2013-04-17 11:50:44
5 [报告]
发表于 2013-04-25 10:55 |只看该作者
确定mysql停止,脚本执行了么? 可以随便写一句判断脚本是否执行了
如果脚本执行了,那就检查脚本吧,检查你的判断是否满足条件。
如果脚本没执行那就检查配置文件中的写法。

论坛徽章:
0
6 [报告]
发表于 2014-03-13 16:00 |只看该作者
   /etc/init.d/keepalived stop

换成
pkill keepalived


就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP