设为首页 加入收藏

TOP

MySQL高可用系列之MHA(二)(五)
2015-07-24 12:04:15 来源: 作者: 【 】 浏览:42
Tags:MySQL 可用 系列 MHA
-body=(body:报告内容)
该参数缺省为空,示例脚本为(MHA Manager package)/samples/send_report。
init_conf_load_script App/Global
若想在配置文件中使用纯文本(比如password和repl_password),可使用该参数,脚本返回“name=value”对,可以覆盖全局配置文件中的参数,比如:
#! /usr/bin/perl
Print "password=$ROOT_PASS\n";
Print "repl_password=$REPL_PASS\n"
该参数默认为空。
备注:
? Local Scope??作用于每个服务器本地,在应用配置文件(app1.conf)中的[server_xxx]下配置;
? App Scope??作用于每一套MySQL Replication,在应用配置文件(app1.conf)中的[server_default]下配置;
? Global Scope??全局配置参数,适用于用一个Manager节点管理多套MySQL Replication的情况,在全局配置文件中(masterha_default.cnf)配置。?

了解了原理,我们再来坐下以下实验,来真正试下MySQL高可用架构

二.MHA+Keepalived

在mastersql和backupsql中都安装keepalived软件(可参考http://blog.csdn.net/dbaxiaosa/article/details/22940483)

(1)安装依赖包

(2)编译安装

# tar zxvf keepalived-1.1.19.tar.gz
# cd keepalived-1.1.19
# ./configure --sysconf=/etc/ --with-kernel-dir=/usr/src/kernels/2.6.18-308.el5-x86_64/

(3)配置mastermysql上的keepalived

[root@node1 ~]# more /etc/keepalived/keepalived.conf
#writed by test 20140722

#global define
global_defs {
router_id mysqlmha
}

vrrp_script check_run {
script "/etc/keepalived/check_mysql.sh"
interval 1
}

############################################################
# internet
############################################################
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100 #master>slave slave90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

track_script {
check_run
}
virtual_ipaddress {
192.168.3.33

}
}

(4)配置backupmysql上的keepalived

[root@node2 keepalived]# more /etc/keepalived/keepalived.conf
#writed by test 20140722

#global define
global_defs {
router_id mysqlmha
}

vrrp_script check_run {
script "/etc/keepalived/check_mysql.sh"
interval 1
}

############################################################
#
############################################################
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90 #master>slave slave90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

track_script {
check_run
}
virtual_ipaddress {
192.168.3.33

}
}

(5)编辑脚本文件

大体意思是只要检测到mysql服务停止keepalived服务也停止 ,因为keepalived是通过组播方式告诉本网段自己还活着 当mysql服务停止后keepalived还依然运行 这时就需要停止keepalived让另一个主机获得虚拟IP,可以在后台运行这个脚本 也可以在keepalived配置文件加入这个脚本。
mastermysql上

[root@node1 ~]# more /etc/keepalived/check_mysql.sh
#20140722
#!/bin/bash

MYSQL=/usr/bin/mysql
MYSQL_HOST=192.168.3.27
MYSQL_USER=root
MYSQL_PASSWORD=mysql
CHECK_TIME=3

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

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=1
else
MYSQL_OK=0
fi
return $MYSQL_OK
}
while [ $CHECK_TIME -ne 0 ]
do
let "CHECK_TIME -= 1"
check_mysql_helth
if [ $MYSQL_OK = 1 ] ; then
CHECK_TIME=0
exit 0
fi
if [ $MYSQL_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ]
then
pkill keepalived
exit 1
fi
sleep 1
done

该脚本需要有执行权限,通过以下命令加上执行权限
[root@node2 keepalived]# chmod +x check_mysql.sh
[root@node2 keepalived]# ll
total 8
-rwxr-xr-x 1 root root 654 Jul 24 17:15 check_mysql.sh
-rw-r--r-- 1 root root 634 Jul 29 16:16 keepalived.conf

backupmysql上(脚本需要执行权限)

[root@node2 keepalived]# more check_mysql.sh
#20140722
#!/bin/bash

MYSQL=/usr/bin/mysql
MYSQL_HOST=192.168.3.28
MYSQL_USER=root
MYSQL_PASSWORD=mysql
CHECK_TIME=3

#mysql is working

首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇aix下实现goldengate随os启动而自.. 下一篇MySQL更新和删除

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: