keepalived+MySQL双主搭建
server1:MySQL5.7.14+keepalived1.+172.16.16.34
server2:MySQL5.7.14+keepalived1.+172.16.16.35
VIP:172.16.16.20
我们两台机器是搭建的MySQL双主,我们平时只会通过VIP对MySQL进行读写,我们要实现的是,当VIP所在的主机的MySQLDOWN掉以后,VIP能够切换到另外一台机器上并且继续提供服务。
yum install -y keepalived
[root@localhost maxiangqian]# rpm -ql keepalived
[root@localhost maxiangqian]# vi /etc/keepalived/keepalived.conf
vrrp_instance VI_20 {
state BACKUP
nopreempt
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
172.16.16.20
}
}
/etc/init.d/keepalived start
[root@localhost maxiangqian]# ip addr |grep 172.16
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc mq state UP qlen
inet 172.16.16.34/ brd 172.16.16.255 scope global eth0
inet 172.16.16.20/ scope global eth0
/etc/init.d/keepalived stop
vrrp_script checkmysql {
script "/etc/keepalived/checkmysql.sh"
interval #监控脚本,每十秒运行一次
}
vrrp_instance VI_20 {
state BACKUP #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态
nopreempt #非抢占模式
interface eth0
virtual_router_id
priority #权重,同一个vrrp_instance的MASTER优先级必须比BACKUP高。我们使用非抢占模式,设置相同即可
advert_int #MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒
authentication {
auth_type PASS #验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS
auth_pass
}
track_script { #执行定义的监控脚本
checkmysql
}
virtual_ipaddress {
172.16.16.20/
}
}
#!/bin/sh
#isok=$(sed -n '2p' /etc/keepalived/result.txt)
isok=$(/usr/local/mysql/bin/mysql -uroot -p123456 -e 'select 1' |sed -n '2p')
function error_query(){
service keepalived stop
echo "172.16.16.34 mysql down, keepalived 切换" | mail -s "34MySQL+keepalived通知" ma.xiangqian@sf-express.com
}
echo "$isok"
if [ "$isok" != "1" ]
then
#echo 'diaoyong error'
error_query
fi
现在我们执行以下语句,从新load以下keepalived的配置文件:
/etc/init.d/keepalived reload
server1和server2都要执行重新load一下新的配置文件,下面我们测试一下当server1 MySQL DOWN掉的话会发生什么:
server1:shutdown MySQL
server1和server2:tail -f /var/log/messages
server1信息:
May :: localhost Keepalived_healthcheckers[]: TCP connection to [172.16.16.34]: failed !!!
May :: localhost Keepalived_healthcheckers[]: Removing service [172.16.16.34]: from VS [172.16.16.20]:
May :: localhost Keepalived_healthcheckers[]: IPVS : Virtual service [172.16.16.20]: illegal timeout.
May :: localhost Keepalived_healthcheckers[]: Executing [/etc/keepalived/shutdown.sh #检测到服务down后执行的脚本] for service [172.16.16.34]: in VS [172.16.16.20]:
May :: localhost Keepalived_healthcheckers[]: Lost quorum -= > for VS [172.16.16.20]:
May :: localhost Keepalived_vrrp[]: VRRP_Script(checkmysql) failed
May :: localhost Keepalived_vrrp[]: VRRP_Instance(VI_20) Entering FAULT STATE
May :: localhost Keepalived_vrrp[]: VRRP_Instance(VI_20) removing protocol VIPs.
May :: localhost Keepalived_vrrp[]: VRRP_Instance(VI_20) Now in FAULT state
May :: localhost Keepalived_healthcheckers[]: Netlink reflector reports IP 172.16.16.20 removed
server2信息:
May :: mxqmongodb2 Keepalived_healthcheckers[]: IPVS : Virtual service [172.16.16.20]: illegal timeout.
May :: mxqmongodb2 Keepalived_healthcheckers[]: Using LinkWatch kernel netlink reflector...
May :: mxqmongodb2 Keepalived_healthcheckers[]: Activating healthchecker for service [172.16.16.35]:
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Script(checkmysql) succeeded
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Instance(VI_20) Transition to MASTER STATE
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Instance(VI_20) Entering MASTER STATE
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Instance(VI_20) setting protocol VIPs.
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Instance(VI_20) Sending gratuitous ARPs on eth0 for 172.16.16.20
May :: mxqmongodb2 Keepalived_healthcheckers[]: Netlink reflector reports IP 172.16.16.20 added
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Instance(VI_20) Sending gratuitous ARPs on eth0 for 172.16.16.20
我们可以看到虚IP链接已经切换了,我们从客户端两个时间点执行MySQL的操作也可以很明显看到切换:
mysql> select @@server_id;
+-------------+
| @@server_id |
+-------------+
| |
+-------------+
row in set mysql> select @@server_id;
+-------------+
| @@server_id |
+-------------+
| |
+-------------+
row in set
keepalived+MySQL双主搭建的更多相关文章
- MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释)
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 前言:生产环境中一台mysql主机存在单 ...
- MySQL 高可用性—keepalived+mysql双主
MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释) - 我的博客 - CSDN博客https://blog.csdn.net/qq_36276335/articl ...
- 基于 MySQL 5.6 keepalived的双主搭建
环境介绍: 说明 IP 节点1 192.168.56.56 节点2 192.168.56.57 w_ip 192.168.56.6 安装keepalived tar -zxvf keepalived- ...
- Keepalived+MySQL双主
一.Keepalived+MySQL Replication的应用场景 MySQL的高可用方案有cluster,MMM,MHA等,这些高可用方案都要三台服务器以上,成本有点高,今天介绍一个低成本高可用 ...
- keepalived+mysql双主复制高可用方案
MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...
- nginx+mysql双主搭建
说明:mysql双主架构经过测试在生产环境中使用没有问题,但是还是建议使用读写分离, Mysql主主同步环境部署: centos 7.4 三台云主机:mysql1 :10.1.1.142 mysql2 ...
- keepalived+mysql双主热备
这里使用keepalived实现mysql的双主热备高可用 实验环境: 主机名 IP 系统版本 软件版本 master 192.168.199.6/vip:192.168.199.111 Rhel7. ...
- Keepalived + Mysql 双主
VIP 192.168.1.41 Master 192.168.1.42 Slave 192.168.1.43 .配置 yum -y install mysql-server chkconfig -- ...
- Keepalived+MySQL双主架构
l 架构准备 Node1 192.168.15.3 Node2 192.168.15.4 VIP 192.168.15.254 l 软件 MySQL 5.6 Keepalive yum insta ...
随机推荐
- ORACLE MERGE INTO UPDATE DELETE 用法
ORACLE MERGE INTO UPDATE DELETE 用法 使用该MERGE语句从一个或多个源中选择行以进行更新或插入表或视图.您可以指定条件以确定是更新还是插入目标表或视图. 此语句是组合 ...
- SpringBoot集成WebSocket【基于纯H5】进行点对点[一对一]和广播[一对多]实时推送
代码全部复制,仅供自己学习用 1.环境搭建 因为在上一篇基于STOMP协议实现的WebSocket里已经有大概介绍过Web的基本情况了,所以在这篇就不多说了,我们直接进入正题吧,在SpringBoot ...
- js面向对象(二)——继承
上一篇随笔讲了封装,这一篇我们说说继承,还是那上一篇猫和狗说事儿 function Dog(name,s){ this.name=name; this.sex=s; } Dog.prototype.t ...
- vue2.0修饰符sync用法
如果子组件是一个弹窗,我们想通过点击关闭按钮来关闭子组件弹窗,子组件弹窗的v-show由变量isVisible控制,这个变量通过props由父组件来注入, 而子组件无法改变props里面的变量的值,但 ...
- Digispark(ATTINY85) 微型开发板驱动安装与开发环境配置教程
前几天无聊就弄了弄这个玩,网上教程可能有点杂,在这里就总结一下. Digispark开发板(也就是badusb)能干什么,自己搜去,/坏笑. 1.准备材料:Attiny85微型 USB接口开发板 Di ...
- Python调用C++DLL函数出错String类型问题
调用c++ 函数原型如下,一直失败,请个日志断点发现 参数未能正确解析. int EXPORT init_ner(string cfg_path); typedef int (*Proc_init_n ...
- mysql 导入 excel 数据
客户准备了一些数据存放在 excel 中, 让我们导入到 mysql 中.先上来我自己把数据拷贝到了 txt 文件中, 自己解析 txt 文件,用 JDBC 循环插入到数据库中. 后来发现有更简单 ...
- Ubuntu14.04下编译安装或apt-get方式安装搭建Apache或Httpd服务(图文详解)
不多说,直接上干货! 写在前面的话 对于 在Ubuntu系统上,编译安装Apache它默认路径是在/usr/local/apache2/htdocs 或者编译安装httpd它默认路径是在/usr/lo ...
- document.frames与window.frames在不同浏览器中的使用
问题: document.frames 只有 IE Opera 支持.等同于 window.frames.用来取得当前页面内 window 对象的集合. 在 Firefox Chorome Safar ...
- orcale 之 数据完整性约束
数据完整性约束是对数据描述的某种约束的条件,在关系型数据库中一般有:完整性约束,实体完整性约束,参照完整性约束和用户自定义完整性约束. 实体完整性约束 在数据库中一张表一般对应一个现实生活中的实体,比 ...