mysql主从热备+keepalived 部署mysql高可用主备模式

目录

1、环境准备

2、分别在主服务器和备用服务器上安装keepalived

3、修改keepalived服务的配置文件

3.1 修改主服务器上的keepalive服务的配置文件

3.2 修改备用服务器上的keepalive服务配置文件

4、编写mysql监控脚本放到主服务器上

5、在主服务器和备用服务器上查看虚拟IP是否绑定到ens33网卡上。

6、高可用验证

6.1 模拟宕机,查看虚拟IP是否漂移到备用服务器上,验证高可用效果


keepalived服务工作原理参考之前写的博文:

nginx配置实例-高可用主备模式_nginx主备模式-CSDN博客

1、环境准备

主机名IP地址说明
主服务器mysql_master192.168.81.131/24已安装且部署好mysql主从热备
备用服务器mysql_slave192.168.81.132/24已安装且部署好mysql主从热备

mysql主从热备部署参考上一篇博文:

mysql主从热备部署-CSDN博客

2、分别在主服务器和备用服务器上安装keepalived

使用yum方式安装

yum install keepalived -y 

安装好后,将keepalivd程序开启,并且加入到开机启动项中。

systemctl start keepalived
systemctl enable keeaplived

3、修改keepalived服务的配置文件

yum方式安装的配置文件在/etc/keepalived目录下。

3.1 修改主服务器上的keepalive服务的配置文件

修改配置文件前,先做好备份!!!

使用sed命令将配置文件中默认内容删除

将下面参数复制到配置文件/etc/keepalived/keepalived.conf中

[root@mysql_master ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {	        #设置报警邮件地址,需要开启本机postfix或者sendmail服务;xxx@alibaba-inc@qq.com}notification_email_from root@localhost.com	#用于设置邮件的发送地址,即报警邮件发送者;smtp_server 127.0.0.1	        #用于设置邮件的SMTP Server地址;smtp_connect_timeout 30       	#设置连接SMTP Server的超时时间;router_id LVS_DEVEL #LVS_DEVEL  #这字段在/etc/hosts文件中看;通过它访问到主机
}vrrp_script chk_mysql {script /etc/keepalived/scripts/chk_mysql.sh #监控nginx脚本路径interval 2                   #检测时间间隔weight -10                   #如果条件成立的话,则权重 -10
}vrrp_instance VI_1 {  state MASTER                 #主从状态(MASTER/BACKUP)interface ens33              #绑定虚拟 IP 的网络接口,注:ip addr查询virtual_router_id 52         #虚拟路由的 ID 号, 两个节点设置必须一样mcast_src_ip 192.168.81.131  #填写本机ippriority 100                 #主节点优先级,主要比从节点优先级高 #garp_master_delay 30advert_int 1                 #每隔1s发送一次心跳authentication {    auth_type PASSauth_pass 1111           #校验类型:密码=1111}# 将track_script块加入 instance 配置块track_script {chk_mysql                #执行mysql监控服务}virtual_ipaddress {192.168.81.138             #虚拟ip(设置虚拟ip网段需要同一个,需要根据项目去调整 )}
}

修改好配置后,重启keepalived服务,使得配置文件的修改内容生效。

3.2 修改备用服务器上的keepalive服务配置文件

配置步骤与3.1步骤相似,但是配置文件的内容略有不同。

[root@mysql_slave keepalived]# cat keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {	                   #设置报警邮件地址,需要开启本机postfix或者sendmail服务xxx@alibaba-inc@qq.com}notification_email_from root@localhost.com #用于设置邮件的发送地址,即报警邮件发送者;smtp_server 127.0.0.1	                   #用于设置邮件的SMTP Server地址;smtp_connect_timeout 30	                   #设置连接SMTP Server的超时时间;router_id LVS_DEVEL #LVS_DEVEL             #这字段在/etc/hosts文件中看;通过它访问到主机
}vrrp_script chk_mysql {script /etc/keepalived/scripts/chk_mysql.sh #监控mysql脚本路径interval 2                                 #检测时间间隔weight -10                                 #如果条件成立的话,则权重 -10
}vrrp_instance VI_1 {state BACKUP                               #主从状态(MASTER/BACKUP)interface ens33                            #绑定虚拟 IP 的网络接口,注:ip addr查询virtual_router_id 52                       #虚拟路由的 ID 号, 两个节点设置必须一样mcast_src_ip 192.168.81.132                #填写本机ippriority 80                                #主节点优先级,主要比从节点优先级高#garp_master_delay 30advert_int 1                               #每隔1s发送一次心跳authentication {    auth_type PASSauth_pass 1111                         #校验类型:密码=1111}# 将track_script块加入 instance 配置块track_script {chk_mysql                              #执行mysqld监控服务}virtual_ipaddress {192.168.81.138                           #虚拟ip(设置虚拟ip网段需要同一个,需要根据项目去调整 )}
}

4、编写mysql监控脚本放到主服务器上

根据上面配置文件定义的监控路径来创建目录存放mysq服务的监控脚本。

编写监控脚本/etc/keepalived/scripts/chk_mysql.sh

#!/bin/bash# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# + 1、此脚本为MySQL监控脚本,与keepalived组件配合使用
# + 2、keepalived配置文件:/etc/keepalived/keepalived.conf
# + 3、脚本输出日志/etc/keepalived/check_service.log
# + 4、默认脚本路径在/etc/keepalived/scripts下,需要改变路径,请修改keepalived配置
# + 5、创建此脚本后请赋予可执行权限chmod +x /etc/keepalived/scripts/chk_mysql.sh
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# 基础参数
DATE=`date +%Y%m%d`
logPath=/etc/keepalived# 检测MySQL进程是否正常运行
A=`ps -C mysqld --no-header | wc -l`
#将脚本中的输出内容同时输出到终端和指定的日志文件中,并以追加的方式写入日志文件。这样可以方便查看脚本的输出并记录日志信息。
echo "$(date +%Y-%m-%d' '%H:%M:%S) MySQL进程数:$A" | tee -a ${logPath}/check_service.log
if [ $A -eq 0 ]; then# 如果MySQL进程宕机了,尝试重启MySQLsystemctl start mysqld# 等待一小会再次检查MySQL,如果没有启动成功,则停止keepalived,使其启动备用机sleep 3if [ `ps -C mysqld --no-header | wc -l` -eq 0 ]; thenecho "$(date +%Y-%m-%d' '%H:%M:%S) MySQL已停止!停止keepalived!" | tee -a ${logPath}/check_service.logsystemctl stop keepalivedexit 1fi
elseecho "$(date +%Y-%m-%d' '%H:%M:%S) MySQL正在运行!" | tee -a ${logPath}/check_service.logexit 0
fi

编写并调试好后,给脚本添加可执行权限。

然后重启备份服务器上的keepalived服务,确定虚拟IP地址绑定到主服务器上的网卡上。

5、在主服务器和备用服务器上查看虚拟IP是否绑定到ens33网卡上。

6、高可用验证

6.1 模拟宕机,查看虚拟IP是否漂移到备用服务器上,验证高可用效果

方法1:systemctl stop mysqld,停止mysqld服务

方法2:kill杀死mysqld的运行进程,停止mysqld服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1424794.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

太极图形学——高级数据结构——稀疏

我们在之前学习的稠密数据结构中主要可以分为root,dense,和field三个,而实际上我们还可以定义一个bitmasked和pointer这两个就是用来帮助我们维护空间稀疏性用的 举一个例子,首先是一个稠密结构,它的数据利用率很低 那…

万物皆可监控(shell脚本监控TIDB-DM和DSG同步状态)

监控的方式有很多,常用的有zabbix和prometheus平台,理论上都可以做到对有状态服务的监控,因为我个人对这两个监控平台不是很熟悉,所以一般喜欢使用shell脚本来做监控; 纯oracle 数据库的监控推荐使用EMCC,…

Unity之Image图片挖洞

最近开发一款打地鼠小游戏,地鼠是3D的,身体比较庞大,管道比较窄小,所以管道其实没办法将地鼠完全遮盖,于是想了一下几个方法。 1,让美术把3D物体裁剪掉,让地鼠的形态体积不至于露出UI&#xff…

短视频矩阵系统/源码----可视化剪辑技术独家开发

现阶段市面上大多矩阵软件都非常程序化且需要使用者具有较强的逻辑思维能力或剪辑经验,这使得一些个人、团队、企业在使用时无形中增加了学习成本,剪辑出来的效果大多不尽如人意,发出来的视频没有流量,根本达不到预期效果。 如何提…

GIT基础02 多机器协作等命令

前言 首先我们知道git给我们提供了分支管理的功能 我们一般使用master分支作为线上环境,master分支一般是一个稳定的分支 我们通常是会创建一个其他分支进行开发,这样不会影响线上的机器运行 如果没有git提供这样的分支功能,就无法做到这一套了 指令学习 假设软件出现问题咋办…

Redis教程(二):Redis在Linux环境下的安装

Linux环境下安装: 下载地址:Downloads - Redis 安装步骤: 下载得到一个 tar.gz 压缩文件 上传到Linux的/opt/soft目录,使用以下命令解压 tar -zxvf redis-6.2.14.tar.gz Linux安装基本环境gcc,安装命令 yum insta…

基于Vue和uni-app的增强型单选ccRadioView组件开发

标题:基于Vue和uni-app的增强单选组件ccRadioView的设计与实现 摘要:本文将详细介绍如何使用Vue和uni-app构建一个简单、好用且通用的单选框组件ccRadioView。该组件提供了单选列表的功能,并支持反向传值,方便开发者快速实现单选…

强化学习的优化策略PPO和DPO

DPO DPO(直接偏好优化)简化了RLHF流程。它的工作原理是创建人类偏好对的数据集,每个偏好对都包含一个提示和两种可能的完成方式——一种是首选,一种是不受欢迎。然后对LLM进行微调,以最大限度地提高生成首选完成的可能性,并最大限…

界面组件DevExpress WPF v23.2 - 全新升级的数据编辑器、流程图组件

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress WPF控件日…

C语言 | Leetcode C语言题解之第92题反转链表II

题目: 题解: struct ListNode *reverseBetween(struct ListNode *head, int left, int right) {// 因为头节点有可能发生变化,使用虚拟头节点可以避免复杂的分类讨论struct ListNode *dummyNode malloc(sizeof(struct ListNode));dummyNode…

Redis-分布式锁实现方式

文章目录 Redis分布式锁的作用?Redis分布式锁的底层原理实现?Redis分布式锁的应用场景?Redis分布式锁遇到相关的场景问题?死锁问题锁超时问题归一问题可重入问题阻塞与非阻塞问题公平锁(Fair Lock)公平锁(F…

tomcat--应用部署

tomcat根目录结构 Tomcat中默认网站根目录是/usr/local/apache-tomcat-8.5.100/webapps/在Tomcat的webapps目录中,有个非常特殊的目录ROOT,它就是网站默认根目录。将eshop解压后的文件放到这个/usr/local/apache-tomcat-8.5.100/webapps/ROOT中。bbs解压…

Blender雕刻建模_笔画,镜像,动态拓扑

笔画 笔画选项,一般是对刷子(自由线)工具设置 描边方法如下:标红的为常用 -间隔:按一定间隔应用笔画的结果 例如:笔刷半径50,笔画间隔100%(笔刷直径的百分比)&#x…

Git项目管理——提交项目和版本回退(二)

个人名片: 🎓作者简介:嵌入式领域优质创作者🌐个人主页:妄北y 📞个人QQ:2061314755 💌个人邮箱:[mailto:2061314755qq.com] 📱个人微信:Vir2025WB…

一看就会的AOP事务

文章目录 AOPAOP简介AOP简介和作用AOP的应用场景为什么要学习AOP AOP入门案例思路分析代码实现AOP中的核心概念 AOP工作流程AOP工作流程AOP核心概念在测试类中验证代理对象 AOP切入点表达式语法格式通配符书写技巧 AOP通知类型AOP通知分类AOP通知详解 AOP案例案例-测量业务层接…

(1)双指针算法介绍与练习:移动零

目录 双指针算法介绍 练习:移动零 双指针算法介绍 双指针算法常见于数组和双向链表的题型 在数组中,双指针中的指针代表数组元素的下标,而不是真正的指针类型变量 在双向链表中,双指针中的指针即为真正意义上的指针&#xff…

线性系统(二)

线性系统(二) 1.直观理解线性方程组结构2. 不同解的结论3. 更一般的高斯-约旦消元法4.齐次线性方程组 链接: 线性系统(一) 1.直观理解线性方程组结构 长这样,方程就有解,即相交坐标。 长这样,…

免费思维13招之十三:种群型思维

免费思维13招之十三:种群型思维 免费思维的最后一个思维——族群思维 人,都是群居性的动物,在人群中的一部分人群对于另一部分人群来说,具有强大的吸引力。那么,我们就从这一点出发,通过对其中一部分人群进…

Online RL + IL :Policy Improvement via Imitation of Multiple Oracles

NIPS 2020 paper code 如何利用多个次优专家策略来引导智能体在线学习,后续有多个文章研究该设定下的RL。 Intro 论文探讨了在强化学习(RL)中,如何通过模仿多个次优策略(称为oracle)来提升策略性能的问题…

第25次修改留言板,修改了布局,样式和脚本分离

伤心城市 首页 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"beiwanglu" content"widthdevice-width, initial-scale1.0"><link rel"stylesheet" type&qu…