加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

CENTOS中如何利用Keepalived构建双主MySQL+双机热备

发布时间:2016-11-06 07:44:45 所属栏目:Linux 来源:网络整理
导读:系统环境:CentOS 6.3 x64 MySQL版本:mysql-5.6.10 Keepalived版本:keepalived-1.2.7 MySQL-VIP:192.168.7.253 MySQL-master1:192.168.7.201 MySQL-master2

connect_port 3306

}

}

}

----------------------

编写检测服务down后所要执行的脚本

# vi /etc/rc.d/keepalived.sh

-------------

#!/bin/sh

/etc/init.d/keepalived stop

-------------

# chmod +x /etc/rc.d/keepalived.sh

注:此脚本是上面配置文件notify_down选项所用到的,keepalived使用notify_down选项来检查real_server的服务状态。

当发现real_server服务故障时,便触发此脚本.

我们可以看到,脚本就一个命令:

通过pkill keepalived强制杀死keepalived进程,从而实现了MySQL故障自动转移.

另外,我们不用担心两个MySQL会同时提供数据更新操作,因为每台MySQL上的keepalived的配置里面只有本机MySQL的IP+VIP,而不是两台MySQL的IP+VIP.

以上脚本是为了在测试环境实现VIP切换功能,生产环境建议使用如下脚本

---------------------------------

#!/bin/bash

# 环境变量

PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH

# 暂停5秒执行,防止数据库人工正常重启

sleep 5

# mysql_id(存活=1 死掉=0)

mysql_id=`ps -C mysqld --noheader |wc -l`

# 判断mysql_id若死掉,则重启mysql一次,若仍然无法启动mysql则杀掉keepaliaved进程实现VIP切换

if [ $mysql_id -eq 0 ];then

/etc/init.d/mysqld restart

sleep 5

if [ $mysql_id -eq 0 ];then

/etc/init.d/keepalived stop

fi

fi

---------------------------------

启动keepalived

# /etc/init.d/keepalived start

查看连接状态

# ps -aux | grep keepalived

返回:

---------------

root 1387 1 0 21:13 ? 00:00:00 keepalived -D

root 1390 1387 0 21:13 ? 00:00:00 keepalived -D

root 1391 1387 0 21:13 ? 00:00:00 keepalived -D

root 1976 1911 0 21:16 pts/0 00:00:00 grep keepalived

--------------------

测试

查看VIP信息

# ip addr

--------------------------

............

inet 192.168.7.201/24 brd 192.168.7.255 scope global eth0

inet 192.168.7.253/32 scope global eth0

inet6 fe80::20c:29ff:feb2:9199/64 scope link

valid_lft forever preferred_lft forever

--------------------------

注:如果出现主从在切换VIP时,主的VIP未自动关闭,从的正常开启,导致都获取到VIP,造成互相冲突的情况,可手动输入如下命令删除一方的VIP地址

# ip addr del "虚拟ip" dev eth0

但此方法只是一个临时的解决方案,当手动删除VIP后,重启keepalived服务会无法正常开启vip,需要重启服务器方能恢复。

查看vrrp通信

# tcpdump vrrp

-------------------------

.....

18:10:56.365730 IP 192.168.7.201 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 52, prio 40, authtype simple, intvl 1s, length 20

18:10:57.366825 IP 192.168.7.201 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 52, prio 40, authtype simple, intvl 1s, length 20

18:10:58.367914 IP 192.168.7.201 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 52, prio 40, authtype simple, intvl 1s, length 20

-------------------------

注:如果主keepalived挂掉,这里的日志会切换到备keeplived的信息

找一台局域网PC,然后去ping MySQL的VIP,这时候MySQL的VIP是可以ping的通的

查看本栏目更多精彩内容:http://www.bianceng.cn/OS/Linux/

停止MySQL服务,看keepalived健康检查程序是否会触发我们编写的脚本,去kill掉keepalived进程

# service mysqld stop

# ps -aux | grep keepalived

无返回结果

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读