使用HAProxy对MySQL进行负载均衡和状态监控
转载请保留原文内容,并声明转载地址:http://www.doczj.com/doc/e23a311eff00bed5b9f31de0.html/blog/1284.html
乐搜(http://www.doczj.com/doc/e23a311eff00bed5b9f31de0.html)使用HAProxy已经很久了,但主要用在前端web请求的负载均衡和状态监控上,对于后端的Memcached以及MySQL却一直没有应用,最近对系统架构进行了小规模的整理,把MySQL 也收编到了HAProxy下,经过一段时间的使用,体验还是不错的。
详细的HAProxy的安装配置我就不说了,主要针对HAProxy如何监控检测后端MySQL服务器的状态说两句。
我们的环境由两台master和若干台slave数据库组成,在HA的配置中,可以设置灵活的策略和进行slave 的分组,如果系统更大了,将还会根据业务系统来拆分若干个master和slave组。
声明:以下内容应用和验证环境是基于FreeBSD 8.2 环境,MySQL在5.1以上版本,理论上Linux 的各个版本基本都能通过,如果有不能通过的情况,请别随意张口扔板砖,欢迎添加评论留言向我提问HA对MySQL状态监控实现的方式很多,不过大多逻辑都一样,使用自己编写的脚本程序(可以是shell、php、perl等你熟悉的语言)监控mysql的运行情况,然后通过HTTP的方式输出运行结果给HA,我使用的是shell程序来实现的监控,结合FreeBSD的inetd服务来实现监控端口的提供
1. 监控脚本编写
下面是我写的一段监控shell脚本,用于监控其中一台叫mdb1的master数据库replication运行:
1.#!/usr/local/bin/bash
2.MYSQL_HOST="mdb1"
3.MYSQL_PORT="3307"
4.MYSQL_USERNAME="michael"
5.MYSQL_PASSWORD="michael@http://www.doczj.com/doc/e23a311eff00bed5b9f31de0.html"
6.
7./usr/local/bin/mysql -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USERNAME
-p$MYSQL_PASSWORD -e "show slave status\G;" > /tmp/check_mdb1_rep.txt
8.iostat=`grep "Slave_IO_Running" /tmp/check_mdb1_rep.txt |awk '{print
$2}'`
9.sqlstat=`grep "Slave_SQL_Running" /tmp/check_mdb1_rep.txt |awk '{print
$2}'`