mysql地址漂移_基于Keepalvied的Mysql主主漂移(切换)

实验环境

Master1、Amoeba--IP:192.168.1.5

Master2---IP:192.168.1.10

同时安装keepalived

依赖包

[root@dep5 keepalived-1.1.20]# yum install openssl-devel popt-devel -y

make clean&& make clean all

tar -xvf keepalived-1.1.20.tar.gz && cd keepalived-1.1.20 && ./configure --prefix=/usr/local/keepalived && make && make install && cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ && cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ && mkdir /etc/keepalived && cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ && cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

#############必须给检查文件给执行权限

chmod /etc/keepalived/manage_mysql/ -x -R

双主都需要设置用户

grant all on *.* to keepalived@'%' identified by 'keepalived';

双主都需要安装keepalived并且配置

keepalived配置文件

! Configuration File forkeepalived

global_defs {

notification_email {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server192.168.200.1smtp_connect_timeout30router_id MYSQLHA_DEVEL

}

vrrp_script check_mysqld {

script"/etc/keepalived/mysqlcheck/check_mysql.sh"#检查MYSQL 复制状态脚本

interval2weight2}

vrrp_instance VI_1 {

state BACKUP #这里主201和主202都写上BACKUP

interface eth0 #vip对外的网络接口

virtual_router_id66#标识号。。主主要统一起来

priority100#优先级。主202上改成90

advert_int2# nopreempt #不抢占模式。在优先级高的那台设置此参数,一般在主上设置,主的优先级高

authentication {

auth_type PASS

auth_pass1111}

track_script {

check_mysqld #调用MYSQL脚本的函数

}

virtual_ipaddress {192.168.5.10/24}

}

检查Mysql状态脚本

#!/bin/bash

#Totle:check_mysql

#Description:Check mysql status

#system:Use Linux

#======================================

#Set mysql host

#每个机器改成自己的IP地址和远程授权的用户

Host_S=192.168.1.5

User_S=keepalived

Pwss_S=keepalived

Port_S=3306

#======================================

#Function-->Check_mysql_IO

#=====================================

Check_mysql_IO()

{

Check_IO=`mysql -u$User_S -p$Pwss_S -h $Host_S -P $Port_S -e "show slave status\G" | grep "Runnin" | sed 's/ //g' | grep "IO" | awk -F: '{print $NF}' | grep "Yes" | wc -l`

Check_SQL=`mysql -u$User_S -p$Pwss_S -h $Host_S -P $Port_S -e "show slave status\G" | grep "Runnin" | sed 's/ //g' | grep "SQL" | awk -F: '{print $NF}' | grep "Yes" | wc -l`

if [ $Check_IO -ne 1 -o $Check_SQL -ne 1 ]

then

/etc/init.d/keepalived stop

return 1

else

Check_PID=`/etc/init.d/keepalived status | grep "pid" | wc -l`

if [ $Check_PID -eq 1 ]

then

echo "OK"

exit 0

else

/etc/init.d/keepalived start

if [ $? -eq 0 ]

then

echo "keepalived start ok" >/tmp/checkmysql.log

exit 0

else

echo "keepalived start fail..">/tmp/checkmysql.log

return 1

fi

fi

fi

}

#======================================

#Function-->Main

#=====================================

Main()

{

Check_mysql_IO

if [ $? -eq 1 ]

then

echo "Mysql $Host_S IO or SQL error" | mail -s "Mysql IO error" 50738846@qq.com

exit 1

fi

}

Main;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值