技术开发 频道

MySQL双机互备热备自动切换

  第二部分 自己编写脚本实现的高可用

  一 监控实现原理

  自己编写脚本,实现的功能和heartbeat差不多,都是监控,切换等。

  对于监控,可以监控系统的状态如ping,也可以监控mysql服务状态(本文使用的方法)。

  二 实现脚本

  除了用此脚本替换heartbeat外,其它的实现和配置同上。

  1 监控脚本 mysql_monitor.sh

#!/bin/bash
# author:wdlinux
# url:http:
//www.wdlinux.cn
# description:monitor shell of mysql
local_ip
=192.168.1.92
rip
=192.168.1.91
mysql_in
=/usr/local/mysqlm
mysql_bin
=${mysql_in}/bin/mysql
mysql_user
=root
mysql_pass
=12345
mysql_port
=3306

st
=0
while true;do
if (${mysql_bin} -h"${rip}" -u"${mysql_user}" -p"${mysql_pass}" -P"${mysql_port}" -e "show master status" --connect_timeout=1 > /
dev
/null 2>&1)
then
if (($st==0));then
/etc/rc.d/init.d/mysql_start1.sh stop
let st
=$st+1
fi
else
for ((i=0;i<=3;i++));do
sleep
3
if (${mysql_bin} -h"${rip}" -u"${mysql_user}" -p"${mysql_pass}" -P"${mysql_port}" -e "show master status" --conne
ct_timeout
=1 > /dev/null 2>&1)
then
break
else
if (($i==3));then
echo
"slave to master"
/etc/rc.d/init.d/mysql_start1.sh start
###modify dns prg
exit
fi
fi
done
fi
sleep
3
done
将local_ip,rip作相应的修改,local_ip代表本机IP,rip为另一台机的IP

  2 将监控脚本加入自启动,随系统启动,如

Echo “/etc/rc.d/init.d/mysql_monitor.sh &>> /etc/rc.d/rc.local

  此方法也可以增加一个对外服务IP,如ha实现的一样,这样就省去了修改域名IP等问题。

  但在脚本里,需要增加监控,添加,删除IP的实现和功能。

0
相关文章