
Keeplived+mysql高可用
一、实验环境




系统:centos 7
mysql版本:mysql-5.7.13
Keepalived:keepalived-1.2.13.tar.gz
mysql-vip:
mysql-master1:192.168.111.130
mysql-master2:192.168.111.131

主主同步就是互为主从关系,在任何一台机器上写入都会同步。
若mysql服务器开启了防火墙,需要关闭防火墙或者创建规则。
1、修改mysql的配置文件
master上配置:
#vim /etc/my.cnf

重启mysql服务
#service mysqld restart
Master1上配置:
#vim etc/my.cnf

重启mysql服务
#service mysqld restart
将master设为master1的主服务器

查看master上当前的binlog状态

在master1上配置将master设为自己的主服务器并开启slave功能。

查看从的状态,以下黄色部分两个值必须为YES,代表从服务器能正常连接主服务器

将master1设为master的主服务器

查看master1上当前的binlog状态

在master上配置将master1设为自己的主服务器并开启slave功能。

查看从的状态,以下黄色部分两个值必须为YES,代表从服务器能正常连接主服务器

测试主主同步
Master操作:

查看master1上是否同步了数据

从上图可以看出master1同步了master的数据。
在master1上插入数据看是否同步到master主机上
Master1操作:

查看master上是否同步了数据

从上图可以看出master同步了master1的数据
MySQL主主同步完成!!!
Keepalived安装配置
实现数据库的高可用防止单点故障的发生
在编译安装Keepalived之前,必须先安装内核开发包kernel-devel以及openssl-devel,popt-devel等支持库。
#yum install -y kernel-devel openssl-devel popt-devel
安装配置keepalived


添加为系统服务

Master1上也要和master一样安装keepalived
防火墙配置规则如下

在master上修改keepalived主配置文件


Master1上配置


Master和master1上都添加此检测脚本,作用是当mysql停止工作时自动关闭本机的keepalived,从而实现将故障机器踢出(因每台机器上keepalived只添加了本机为realserver)。
当mysqld正常启动起来后,要手动启动keepalived服务。
#mkdir /etc/keepalived/bin
#vim /etc/keepalived/bin/mysql.sh

#chmod +x /etc/keepalived/bin/mysql.sh
添加一个网卡ens33:0 做vip使用
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-ens33 ifcfg-ens33:0
#vim ifcfg-ens33:0

Master1上完成相同操作。
进行测试
在master和master1上分别执行ip addr show dev ens33:0
Master查看结果:

Master1上查看结果:

由上图可看出master是主服务器,master1是备用服务器
停止MySQL服务,看keepalived健康检查程序是否出发我们编写的脚本。
停止master主机上的mysql服务

Master1上查看结果:

这说明在主服务上停止MySQL服务,触发了我们编写的脚本,进行自动故障切换。
MySQL远程登录测试

客户端登录测试
因为master已停止由master1提供服务

开启master的mysql

以上说明在客户端的查询请求由master相应,故障切换成功
