mysql健康检查,haproxy系列—定制mysql健康检查程序

随着生产环境用户访问的与日俱增,数据库访问压力也随之增大,近期准备对生产环境中的单一数据库进行扩容,增加多台slave数据库,进行读写分离操作,经过若干测试,最终选择使用Haproxy方案,在haproxy版本选型时,选择了1.4的版本,因为在1.4.9开始,haproxy 增加了option mysql-check 健康检查功能,其工作原理是建立对应的Mysql连接,然后断开来判断数据库当前的健康状况。而实际生产环境中对数据一致性要求较高,不仅需要对mysql进行健康检查,也需要的slave节点的repliation状态

(Slave_IO_Running,Slave_SQL_Running,Seconds_Behind_Master)进行检查,故现阶段的haproxy健康检查功能无法满足需求,需自己进行定制.

其检查流程为:

(1) 检查时指定需要检查的主机,端口,用户名,密码(可为空),同时需要指定检查的数据库类型(对于master类型数据库,则只需连接进去然后通过”select version()”来检查健康状态,对于slave类型的数据库,则需要增加”show slave status” replication 状态检查)

(2)结果采用HTTP方式返回,指定不同的状态码对应不同的检查状态,如下所示:

· 200 为服务器端健康检查OK(健康)

———————————————————————-

·401 为检查段MySQLdb python模块没有安装(此程序采用python开发)

·405 为当前检查程序不支持该版本的mysqld (其主要原因是因为在不同的mysqld版本中,其”show slave status”的输出格式不同)

·400 为其他检查端未知异常

———————————————————————-

·501 为服务端(被检查端)连接失败 (其原理是捕捉错误码为2003的mysql报错)

·502 为服务端(被检查端)认证失败(其原理是捕捉错误码为1045的mysql报错)

·503 为服务端(被检查端)连接成功,但是执行查询失败(如无权限等情况)

·504 为服务端(被检查端)连接成功,且该服务端为slave类型,此时replication状态无法查询(如没有启动slave)

·505 为服务端(被检查端)连接成功,且该服务端为slave类型,此时检查replication 状态,显示”Slave_IO_Running”不等于”Yes”

·506 为服务端(被检查端)连接成功,且该服务端为slave类型,此时检查replication 状态,显示”Slave_SQL_Running”不等于”Yes”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值