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个二进制…

go语言之控制结构2

1.for结构 如果想要重复执行某些语句&#xff0c;Go 语言中您只有 for 结构可以使用 1.1 基于计数器的迭代 基本格式为&#xff1a; for 初始化语句; 条件语句; 修饰语句 {} 例子1&#xff1a; package mainimport "fmt"func main() {for i : 0; i < 5; i {f…

STM32的FLASH学习笔记

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

骨架油封在工业应用中的重要性

为什么我们会选择使用山峰骨架油封?这个问题直接关系到工业生产的效率和成本管理。山峰骨架油封凭借其卓越的性能和多重优势已经成为众多工程师和维护人员的很好选。 全方位的应用优势 山峰骨架油封不仅在密封效果上表现出色&#xff0c;同时还适用于各种工业应用场景。无论…

路由跟踪,追踪请求的网址链接情况

追踪请求的网址链接情况,多节点情况可查看是否有节点拒绝响应 linux&#xff1a; traceroute open.XXX.com windows tracert open.XXX.com

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

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

React 第三十二章 虚拟DOM

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

若依-生成主子表

1. sql语句建表导入到数据库中&#xff1a; -- ---------------------------- -- 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;一共有好多篇&#xff0c;内容主要是参考先知社区的一位大佬的关于未授权访问的好文章&#xff0c…

ApiHug - 闭门造车, 出门合辙

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

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

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

Vue学习之:在 vue2 中引入 pdf.js 并配置使其能工作

安装 不同版本的 pdfjs 在 node_modules 中的目录不太一样&#xff0c;如果你想让他正常运行就按照我下面的来确保你的 nvm 版本是 18.17 如果不是的话&#xff0c;建议你配置跟我调成一样的&#xff0c;否则很容易出问题 nvm install 18.17.0 nvm use 18.17.0安装 pdfjs&…

代码随想录算法训练营day25 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 看题解做出来的 class Solution:def trimBST(self, root: Optional[TreeNode], low: int, high: int) -> Optional[TreeNode]:if not root:return Noneif root.val < low:return self.trimBST(root.right, low, high)if root.val > high:return…

【栈的应用】中缀和后缀表达式 {中缀转后缀表达式;中缀表达式求值;后缀表达式求值}

中缀转后缀表达式 在中缀变后缀时&#xff0c;操作数的顺序不会发生变化&#xff0c;只有运算符的顺序可能发生变化。同时又没有括号。所以在转换的过程中&#xff0c;只要碰到操作数&#xff0c;可以直接输出&#xff0c;而遇到运算符和括号进行相应的处理即可。 转换原则如…

SD8063音频功率放大器5V音频功率放大器低功耗

SD8063是一个双桥接音频功率放大器&#xff0c;当 连接到一个5V的pp时&#xff0c;将ver2.2W toa4ΩL oad(No电话)or2.5瓦至a3欧洛a(第2项) THDN含量小于an1.0%此外&#xff0c;耳机输入引 脚允许放大器在单端模式下工作时&#xff0c;驾驶立 体声耳机。 Boomer音频功率放大器的…