简介

keepalived是基于VRRP协议的,全称 Virtual Redundent Routing Protocal 虚拟路由协议,为解决静态路由单点故障引起的网络失效问题设计的一套主备协议

两台互为主备的MySQL服务器运行keepalived,master会向backup节点发送广播信号,当backup节点接收不到master发送的VRRP,会认为master宕机,这时会根据VRRP优先级

选举一个backup来充当master,这个master就会持有vip(对外应用连接IP地址),从而保证线上现有业务的正常运行,高可用完美体现出来

VRRP优先级用0-255来表示,数字越小优先级越低,0代表master放弃持有vip,255表示master持有最高优先级&vip

VRRP中还有一个vrid(虚拟路由标识),同组机器内的vrid必须一致

keepalived服务启动之后有3个进程,watch dog,vrrp,Health-check

vrrp 切换服务    health-check 检查服务器  watch-dog 监控check,vrrp进程

集群搭建思路:

1)2台MySQL服务器互为主从,都可读写 其实就是一台服务器A负责数据的写入,另一台服务器B作为备用

2)使用yum安装keepalived软件包

3)整理好keepalived配置文件,理清keepalived 3种状态,+一个MySQL监控脚本,以便检测宕机,从而顺利切换

4)2台服务器配置keepalived参数种,state都要选择backup + nopreempt这种非抢占模式,避免出现脑裂

实验部署:

A: 192.168.139.144

B: 192.168.139.145

VIP(虚拟IP):  192.168.139.160  ====> 可以通过该IP访问集群的主mysql

注意事项:

1)防火墙必须关闭或者开发数据库端口

2)2台服务器的MySQL配置中server-id 不能一样,否则会报1593 主从同步错误

前提:2台服务器搭建MySQL,版本 5.7.22  ;按照步骤略

步骤一,搭建主主MySQL

1)创建主从同步账号(A,B都执行,且命令相同)

mysql>create user 'bak'@'192.168.139.%' identified by '123456';

mysql>grant replication slave on *.* to 'bak'@'192.168.139.%';

mysql>flush privileges;

2)备库配置同步

mysql>change master to master_host='192.168.139.144',master_user='bak',master_password='123456',master_auto_position=1;

如果报gtid_mode没有为ON

解决办法:

查看当前状态show variables like "%gtid_mode%"   ,我这边显示为off

mysql>set global gtid_mode=off_permissive

mysql>set global gtid_mode=on_permissive

mysql>set global  ENFORCE_GTID_CONSISTENCY=on

mysql>set global gtid_mode=on

打开主从同步开关:

start slave;

查看主从状态:

show slave status\G;

从库2个线程slave_io_running:yes    slave_sql_running:yes   ====>代表正常

3)主库配置主从

mysql>change master to master_host='192.168.139.145',master_user='bak',master_password='123456',master_auto_position=1

开启主从开关:

mysql>start slave;

查看主从状态

mysql>show slave status\G;

从库2个线程slave_io_running:yes    slave_sql_running:yes   ====>代表正常

步骤二,安装keepalived

两台服务器上都安装keepalived

yum install -y keepalived

步骤三,编写MySQL检测脚本

cd /etc/keepalived/

vim checkmysql.sh

内容如下:#!/bin/bash

mysqlstr=/usr/local/mysql/bin/mysql

host=192.168.139.145     ====>host A B 使用各自的IP,密码也是

user=bak

password=123456

port=3306

#####mysql 正常状态为1  否则为0

mysql_status=1

####check mysql status

$mysqlstr -h $host -u $user -p$password -P $port -e "show status;"  > /dev/null 2>&1

if [ $? = 0 ];then

echo "mysql_status=1"

exit 0

else

/etc/init.d/keepalived stop

fi

步骤四,配置keepalived

vim /etc/keepalived/keepalived.conf

#####################设置一个脚本检测MySQL状态,脚本执行间隔为10s 比较合理

vrrp_script vs_mysql_100 {  ====>注意格式,这里的 { 必须在这里,否则会报错,且有一个空格  ====》主备的函数名称最好也要有区别

script "/etc/keepalived/checkmysql.sh"

interval 10

}

#####################

vrrp_instance VI_100 {  ####集群名称(A,B不一致)####

state BACKUP               #####指定keepalived角色,master为主,backup为备,这里2台机器都设置为backup,以免脑裂现象

nopreempt                     #######设置为资源不抢占模式

interface eth0                 ###VIP 绑定的网卡

virtual_route_id 100       ##vrid 的值100,2台机器必须一致

priority 100                     ###优先级,数值越大,优先级越高

advert_int 5                   #####主备之间同步检查时间间隔,设置为5S

authentication {

auth_type PASS

auth_pass 1314         #######验证密码,主备保持一致

}

track_script {

vs_mysql_100             ######调用监控函数,执行监控服务

}

virtual_ipaddress {

192.168.139.160    ####虚拟IP即VIP

}

}

五,启动&检查keepalived

主服务器上执行: /usr/sbin/keepalived   ====》启动后等待几秒,再查看IP

查看日志: cat /var/log/message

检查主服务器上IP信息: ip a ====> 可以看见虚拟IP生成

从服务器执行:/usr/sbin/keepalived

六,验证

其他服务器:

mysql -u bak -p123456 -h 192.168.139.160   ====》连接不上关闭防火墙

进行MySQL后执行\s

可以看见连接数据库是通过虚拟IP(192.168.139.160)实现的

关闭主服务器的MySQL,连接会出现短时间的中断,当VIP漂移至备服务器时,连接恢复

附:如果日志有报错,检查配置文件是否存在格式不对||拼写错误

mysql主节点1593从节点正常_keepalived+双主架构相关推荐

  1. mysql主节点1593从节点正常_mysqlmha高可用架构的安装_MySQL

    MMM无法完全地保证数据的一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景对于那些对数据一致性要求很高的业务,非常不建议采用MMM的这种高可用性架构,那么可以 ...

  2. MySQL双主架构介绍

    文章目录 一.背景 二.MySQL双主(主主)架构方案 三.MySQL双主架构图 四.MySQL双主架构的优缺点 一.背景 MySQL 主从模式优点 容灾:主数据库宕机后,启动从数据库,用于故障切换 ...

  3. mysql双主架构优缺点

    双主架构图 双主架构实现原理 当从库IO线程接受到主库传递来的二进制日志(Binlog)并将之保存为从库的中继日志(relay log),然后从库SQL线程将中继日志(relay log)的事件重做到 ...

  4. mysql+keepalived必须要lvs吗_MySQL 双主热备 + LVS + Keepalived 高可用操作记录

    MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负 ...

  5. mysql+keepalived必须要lvs吗_Mysql双主热备+LVS+Keepalived高可用操作记录

    MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负 ...

  6. keepalived mysql双主架构图_基于MySQL双主的高可用解决方案理论及实践

    MySQL在互联网应用中已经遍地开花,但是在银行系统中,还在生根发芽的阶段.本文记录的是根据某生产系统实际需求,对数据库高可用方案从需求.各高可用技术特点对比.实施.测试等过程进行整理,完善Mysql ...

  7. mysql 5.6 双向互备_mysql双主互备

    5.则配置同步信息. change master to master_host='192.168.1.102',master_port=3306,master_user='replication',m ...

  8. keepalived mysql双主架构图_基于keepalived Mysql双主热备配置

    基于keepalived双主热备: 一.环境: OS:CentOS 6.5 X64 DB Version:Percona Mysql 5.7.15-9-log 路径:/app/mysql57 数据文件 ...

  9. mysql系统搭建互备DB(双主)记录

    背景:所负责的自动化持续交付平台业务量逐渐增长,以防不测,需要搭建备份系统,经过多方考量: 选择采取mysql的主从系统进行备份:互为主从(即所谓双主): PS: 三种备份方式: a.脚本通过mysq ...

最新文章

  1. 数据挖掘如何分箱以及如何对每个箱子中的数据进行平滑处理
  2. 基于hibernate实现的分页技术
  3. 构建高性能J2EE应用的十个技巧
  4. I Hate It(线段树)
  5. matlab拟合分析画不出线,lsqcurvefit曲线拟合后,用polt函数画不出拟合的图形
  6. java基于springboot小区水电量电费管理系统
  7. 面试题:用两个栈实现一个队列 Java语言实现
  8. 我们无法更新系统保留的分区_什么是系统保留分区,您可以删除它吗?(Windows10 科普)2020...
  9. android stop 服务,当调用stopService方法时服务不会停止
  10. lens flare:镜头光晕
  11. 【ZCMU1919】kirito's 星爆气流斩(多重背包)
  12. RFID复习笔记(4)——RFID的射频前端
  13. oracle exp 导出字符集,oracle exp/imp 字符集
  14. 洛谷 P1164 小A点菜(01背包状态转移方程详细推导)
  15. 常用CSS中文字体转Unicode对照表
  16. Excel如何限制单元格只能输入数字?
  17. Adobe Premiere Pro CC 2015打不开闪退
  18. python经典字体警告:RuntimeWarning: Glyph missing from current font. font.set_text(s, 0.0, flags=flags)
  19. android 点击爱心变色,Android 爱心万花筒简单实现
  20. 虚继承,虚基类以及虚继承的构造函数

热门文章

  1. vivado和modelsim联合仿真实现占空比1:15的分频
  2. html状态码206,HTTP状态码206
  3. spring mvc-基础-简单程序
  4. 01-vue项目之滚动加载数据
  5. 2019.2.2牛客寒假算法基础集训营
  6. python-day1-用户的输入输出
  7. textarea的不可拉伸和不可编辑
  8. 最大似然估计、MAP、贝叶斯估计
  9. 现实JS模板,可设置默认值
  10. Xorg可以使用hot-plug了,不过配置很麻烦