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.mzph.cn/news/838643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

水泡传感器内部结构

水泡传感器内部结构: 水泡传感器放大电路 电路是基于1.6V做的TIA I2V, 也就是输出部分基于1.6V做电压的增加或减少。

Milvus 快速入门

引言 在本篇文章中,我们将介绍 Milvus 的基本概念,并通过一个简单的示例展示如何在 Milvus 中创建集合、插入向量和执行搜索。最后,我们将概览 Milvus 提供的 API。 一、基本概念 1.1 集合 (Collection) 在 Milvus 中,集合类似…

如何组织 Vue 项目

介绍 在启动 Vue 项目时,思考项目结构至关重要。主要考虑因素是预期项目的规模。在本篇博文中,我将探讨适用于不同规模 Vue 项目的各种结构。这个考虑与康威定律相吻合: “设计系统的组织受限于产生这些组织沟通结构的设计。” - 梅尔康威 基…

C语言之指针初阶

目录 前言 一、内存与地址的关系 二、指针变量 三、野指针 四、const 五、传值调用与传址调用 总结 前言 本文主要介绍C语言指针的一些基础知识,为后面深入理解指针打下基础,因此本文内容主要包括内存与地址的关系,指针的基本语法&…

WebRTC实时音视频通话之语音通话设计与实践

一、背景 在移动互联网流量时代,很多业务场景都有音视频通信的需求,比如IM场景,除了文字交流还需要音视频通话进行实时交互。为了帮助58、赶集、安居客等业务线更好的为用户提供服务,节约沟通成本,提升效率&#xff0…

【Linux】19. 习题②

2022-11-12_Linux环境变量 1. 分页存储(了解) 一个分页存储管理系统中,地址长度为 32 位,其中页号占 8 位,则页表长度是__。 A.2的8次方 B.2的16次方 C.2的24次方 D.2的32次方 【答案解析】A 页号即页表项的序号,总共占8个二进制…

STM32的FLASH学习笔记

不同型号的 STM32,其 FLASH 容量也有所不同,最小的只有 16K 字节,最大的则达到了1024K 字节。大容量产品的闪存模块组织如图所示: STM32 的闪存模块由:主存储器、信息块和闪存存储器接口寄存器等 3 部分组成。 ​ ①主…

Java环境搭建(二)Notepad++和IDEA的下载

Notepad(不推荐使用) 高级记事本 下载地址 Notepad (juxinwk1.cn) 下载安装后一直下一步就可以了 注:改一下路径还有建立快捷方式(自己选择) IDEA 集成环境 下载地址 IntelliJ IDEA – the Leading Java and Kotl…

React 第三十二章 虚拟DOM

面试题:什么是虚拟DOM?其优点有哪些? 标准且浅显的答案 虚拟dom本质上就是一个普通的 JS 对象,用于描述视图的界面结构 虚拟 DOM 最早是由 React 团队提出来的,因此 React 团队在对虚拟 DOM 的定义上面有绝对的话语权。…

若依-生成主子表

1. sql语句建表导入到数据库中: -- ---------------------------- -- Table structure for t_ques————主表 -- ----------------------------CREATE TABLE ques (ques_id INT NOT NULL AUTO_INCREMENT COMMENT Id,name VARCHAR(255) NOT NULL COMMENT 测评名称…

未授权访问:Rsync 未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、利用rsync下载任意文件 5、利用rsync反弹shell 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验,一共有好多篇,内容主要是参考先知社区的一位大佬的关于未授权访问的好文章&#xff0c…

ApiHug - 闭门造车, 出门合辙

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace The Nex…

RocketMQ:新增consumer消费组group从最新消息开始消费skip last offset message

场景 想创建一个新的consumer去消费一个已经再使用的topic时,默认情况下会从topic中的第一条消息开始消费,大多数情况是需要从最新的消息开始。然后再使用CONSUME_FROM_LAST_OFFSET设置时并不会对新的consumer生效,它只是在停用consumer重新启…

MySQL单表查询案例演示

目录 一、创建数据库lianxi 二、选择数据库为lianxi 三、新建一个数据表grade,在grade表中插入数据 四、开始进行查询操作(验证表中数据) 1、查询1945班的成绩信息 2、查询1945班,语文成绩大于60小于90的成绩信息 3、查询学…

优雅谈论大模型8:神经网络与矩阵

向量与矩阵 上个章节的神经网络是为了解Transformer或者Mamba做好铺垫,在和后辈交流过程中发现有个障碍,那就是向量和矩阵。其实向量和矩阵的表达方式不是所有人都很习惯。在继续下面的章节之前小编认为有必要将向量、矩阵和神经网络做下补充解释。 向…

18.双线性插值缩放算法的matlab与FPGA实现

一篇文章为你讲透双线性插值 简介 1.什么是插值 图片放大是图像处理中的一个特别基础的操作。几乎在每一个图片相关的项目中,从传统图像处理到i深度学习,都有应用。   简单来说,插值指利用已知的点来“猜”未知的点,图像领域插…

华为OD机试【分奖金】(java)(100分)

1、题目描述 公司老板做了一笔大生意,想要给每位员工分配一些奖金,想通过游戏的方式来决定每个人分多少钱。按照员工的工号顺序,每个人随机抽取一个数字。按照工号的顺序往后排列,遇到第一个数字比自己数字大的,那么&…

【class9】人工智能初步(处理单张图片)

Class9的任务:处理单张图像 为了更高效地学习,我们将“处理单张图像”拆分成以下几步完成: 1. 读取图像文件 2. 调用通用物体识别 3. 提取图像分类信息 4. 对应分类文件夹还未创建时,创建文件夹 5. 移动图像到对应文件夹 0.获取…

Ubuntu 安装 eclipse 的详细过程及工程创建和编译配置

目录 一、安装环境二、下载依赖 java jdk三、下载 eclipse四、安装4.1 java 环境4.2 eclipse 安装4.3 打开 eclipse 五、配置 eclipse5.1 新建 C 工程5.2 工具链 配置5.3 头文件路径5.4 链接库5.5 编译 一、安装环境 Ubuntu 版本:22.04.3 位数:64-bit 二…

记录一次 vue2 前端项目整合过程

整合成功效果图 具体说明: 项目A是现在的vue2前端项目,项目B是一个开源的工作流前端,项目后端代码已经整合了,就不多提了。这里主要记录下前端整合的过程和思路。 1、开源工作流里面的功能,拷贝到自己对应的vue2项目里…