MySQL是否可以配合Keepalived实现高可用
MySQL是否可以配合Keepalived实现高可用
是的,MySQL 可以配合 Keepalived 实现高可用性。通常,使用 Keepalived 与 MySQL 配合的方式主要是通过配置 虚拟IP(VIP) 来实现主从数据库的自动切换,从而保证在主数据库宕机时,VIP 自动切换到备用数据库上,使得数据库服务持续可用。
如何实现 MySQL 与 Keepalived 高可用
-
基本架构
-
Keepalived 会监控 MySQL 主服务器的健康状态(如通过
TCP
检查 MySQL 的端口或定制脚本),并在主数据库服务器出现故障时,将 虚拟 IP (VIP) 切换到备用(从)数据库上。 -
MySQL 主从复制 用于同步数据,确保备用数据库中的数据与主数据库保持一致。
-
-
基本工作流程
-
MySQL 主数据库:主数据库正常运行时,它将持有虚拟 IP(VIP)。
-
备用数据库:备用(从)数据库会通过 MySQL 主从复制 从主数据库同步数据,但在正常情况下不会接受数据库请求。
-
Keepalived:监控主数据库的健康状态。如果主数据库宕机,Keepalived 会自动将 VIP 切换到备用数据库上,这样客户端的数据库连接会自动转移到备用数据库(即新的主数据库)。
-
-
MySQL 高可用解决方案的组成部分
-
主数据库:运行 MySQL 服务并接受写请求。
-
从数据库:从数据库通过 主从复制 来保持与主数据库的数据同步。通常从数据库被配置为只读,但在主数据库故障时,它会接管写请求。
-
Keepalived:提供 VIP 和健康检查功能,监控 MySQL 主节点的状态,并在主节点出现故障时将 VIP 切换到从节点上。
-
具体实现步骤
1. 设置 MySQL 主从复制
-
配置 MySQL 主数据库和从数据库进行主从复制:
-
主数据库:在
my.cnf
文件中启用server-id
和log-bin
,并创建复制用户。 -
从数据库:设置
server-id
和relay-log
,并配置为从主数据库获取数据。
-
2. 配置 Keepalived
-
安装 Keepalived:
-
在 主数据库 和 从数据库 上都需要安装 Keepalived。
-
-
配置 Keepalived,创建一个 VIP,并设置健康检查脚本来监控 MySQL 服务的健康状态。例如,以下是一个 Keepalived 配置文件的示例:
vrrp_instance VI_1 {state MASTERinterface eth0 # 网络接口virtual_router_id 51 # 虚拟路由器IDpriority 101 # 主节点优先级advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100 # 虚拟IP}track_script {chk_mysql # 监控MySQL状态的脚本} } vrrp_instance VI_2 {state BACKUPinterface eth0virtual_router_id 51priority 100 # 从节点优先级advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100 # 虚拟IP}track_script {chk_mysql # 监控MySQL状态的脚本} } # 监控MySQL的健康脚本 vrrp_script chk_mysql {script "/usr/bin/mysqladmin -u root -p'password' ping" # MySQL 健康检查命令interval 2weight 2 }
在此配置中:
-
VIP(
192.168.1.100
)是将被 Keepalived 管理的虚拟 IP 地址。 -
chk_mysql
脚本用于检查 MySQL 服务是否正常。如果 MySQL 不可用,Keepalived 会检测到故障并将 VIP 切换到备用服务器。 -
主节点 和 备份节点 通过
priority
来区分,主节点的优先级较高,通常设为101
,备份节点设为100
。
-
3. 健康检查和 VIP 切换
-
健康检查:Keepalived 会定期运行
chk_mysql
脚本,检查 MySQL 是否健康。如果主数据库不可用(例如,mysqladmin ping
命令失败),Keepalived 会触发 VIP 切换。 -
VIP 切换:当主数据库出现故障时,Keepalived 会自动将 虚拟 IP (VIP) 切换到从数据库上。客户端请求会通过 VIP 连接到新的主数据库。
4. 客户端连接
-
客户端连接 MySQL 时,通过 虚拟 IP (VIP) 进行连接,而不是直接连接到某个数据库节点。这样,当主数据库宕机时,客户端无需做任何修改,连接会自动切换到新的主节点。
注意事项
-
自动故障转移:故障转移只是将 VIP 从主数据库切换到备用数据库,并不会自动切换 MySQL 主从角色。因此,故障转移时,从数据库会接受写请求并继续服务,但需要手动将其配置为新的主节点,或者使用一些工具(如 MHA、Orchestrator 或 ProxySQL)来自动化主从切换。
-
数据一致性:在高可用配置中,要确保主从数据库之间的同步。可以使用 GTID(全局事务标识符)或 基于日志的位置 的方式来实现主从同步。
-
MySQL 高可用解决方案的延迟:使用 Keepalived 和 MySQL 主从复制时,可能会存在一定的延迟,尤其是在写入操作较频繁时。可以通过优化复制和网络来减少延迟。
-
Keepalived 配置的健康检查脚本:健康检查脚本的配置非常重要,需要确保脚本的可用性和准确性。一个错误的检查脚本可能导致错误的故障转移。
-
多主/读写分离:如果需要更复杂的高可用架构(如多主复制),可以使用其他工具,如 ProxySQL 来实现 读写分离 或 多主架构。
总结
通过结合 MySQL 主从复制 和 Keepalived,可以实现 MySQL 数据库的高可用性。Keepalived 提供了虚拟 IP 的管理和故障转移功能,而 MySQL 主从复制则保证了数据的一致性和可靠性。通过这种方式,在主数据库故障时,备用数据库会接管服务,确保业务的连续性。
相关文章:
MySQL是否可以配合Keepalived实现高可用
MySQL是否可以配合Keepalived实现高可用 是的,MySQL 可以配合 Keepalived 实现高可用性。通常,使用 Keepalived 与 MySQL 配合的方式主要是通过配置 虚拟IP(VIP) 来实现主从数据库的自动切换,从而保证在主数据库宕机时…...
windows下 mysql开启 binlog日志
一、查看是否开启 binlog -- 方式一 show binary logs;-- 方式二 show VARIABLES like log_bin 说明没有开启 方式一 :you are not using binary logging 方式二:log_bin off 二、编辑 my.ini 配置文件 默认安装地点位于:C:\ProgramDat…...
59. 螺旋矩阵 II
59. 螺旋矩阵 II class Solution { public:vector<vector<int>> generateMatrix(int n) {// for(int i0;i<n;i){ 这样的遍历方式不对// for(int j 0;j<n;j){// generateMatrix[i][j] // }// } //初始化矩阵vector<vector<int&…...
XML 查看器:深入理解与高效使用
XML 查看器:深入理解与高效使用 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它通过使用标签来定义数据结构,使得数据既易于人类阅读,也易于机器解析。在本文中,我们将探讨 XML 查看器的功能…...
JDBC学习
配置文件 application.yml spring: datasource: username: root password: 123456 url: jdbc:mysql://localhost:3306/rbac?useUnicodetrue&characterEncodingutf-8&serverTimezoneUTC driver-class-name: com.mysql.jdbc.Driverrbac为我自己本地的数据库&…...
单元测试
junit5中五个方法为:Test、BeforeEach(修饰实例方法,在测试方法开始之前执行)、AfterEach(修饰实例方法,在测试方法完成之后开始执行)、BeforeAll(修饰静态static方法,在…...
24/12/9 算法笔记<强化学习> PPO,DPPO
PPO是目前非常流行的增强学习算法,OpenAI把PPO作为目前baseline算法,首选PPO,可想而知,PPO可能不是最强的,但是是最广泛的。 PPO是基于AC架构,因为AC架构有一个好处,就是解决了连续动作空间的问…...
spring boot通过连接池的方式连接时序库IotDB
1、maven依赖 <dependency><groupId>org.apache.iotdb</groupId><artifactId>iotdb-session</artifactId><version>1.3.2</version></dependency>2、配置文件 iotdb:server:url: localhostport: 6667name: rootpwd: rootmax…...
maven多模块开发
目录 聚合 可选依赖 排除依赖 属性 打包 聚合 聚合就是将多个模块组成一个整体,进行项目构建。聚合工程(也称为多模块项目)是 Maven 的一种项目结构,它允许将一个大型项目拆分为多个较小的、更易于管理的子模块。每个子模块…...
Kubernetes Nginx-Ingress | 禁用HSTS/禁止重定向到https
目录 前言禁用HSTS禁止重定向到https关闭 HSTS 和设置 ssl-redirect 为 false 的区别 前言 客户请求经过ingress到服务后,默认加上了strict-transport-security,导致客户服务跨域请求失败,具体Response Headers信息如下; 分析 n…...
华为eNSP:VRRP
一、VRRP背景概述 在现代网络环境中,主机通常通过默认网关进行网络通信。当默认网关出现故障时,网络通信会中断,影响业务连续性和稳定性。为了提高网络的可靠性和冗余性,采用虚拟路由冗余协议(VRRP)是一种…...
linux 安装composer
下载composer curl -sS https://getcomposer.org/installer | php下载后设置环境变量,直接通过命令composer -v mv composer.phar /usr/local/bin/composer查看版本看是否安装成功 composer -v...
ESP32-S3模组上跑通ES8388(24)
接前一篇文章:ESP32-S3模组上跑通ES8388(23) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回解析完了es8388_init函数中的第8段代码,本回继续往下解析。为了便于理解和回顾,再次贴出es8388_init函数源码,在components\audio_hal\driver\es8388\es8388.c中,如下: …...
类文件具有错误的版本 61.0, 应为 55.0 请删除该文件或确保该文件位于正确的类路径子目录中。
类文件具有错误的版本 61.0, 应为 55.0 请删除该文件或确保该文件位于正确的类路径子目录中。 这个错误表明你的项目尝试加载的 .class 文件(编译好的 Java 类)是用比你的运行环境支持更高版本的 Java 编译的。具体来说: 版本 61.0 对应 Ja…...
AI 的时代,新科技和新技术如何推动跨学科的整合?
在当前AI的发展中,我们面临的一个主要挑战就是融合的问题,这实际上不仅是技术上的融合,还有更深层次的哲学层面的思考。 或许在中国这方面的讨论较少,但在西方哲学和神学的语境中,探讨万物的根本和不同学科之间的联系…...
12.9-12.16学习周报
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 摘要Abstract一、SNN与传统ANN的比较1.SNN概述2.SNN神经元和ANN的比较结构3.spikingjelly1.数据格式2.状态的保存和重置3.传播模式4.神经元 二、图数据库1.图数据库…...
CanFestival移植到STM32 F4芯片(基于HAL库)
本文讲述如何通过简单操作就可以把CanFestival库移植到STM32 F4芯片上,作为Slave设备。使用启明欣欣的工控板来做实验。 一 硬件连接 观察CAN报文需要专门的设备,本人从某宝上买了一个兼容PCAN的开源小板子,二十几块钱,通过USB接…...
构建安全的数据库环境:群晖NAS安装MySQL和phpMyAdmin详细步骤
文章目录 前言1. 安装MySQL2. 安装phpMyAdmin3. 修改User表4. 本地测试连接MySQL5. 安装cpolar内网穿透6. 配置MySQL公网访问地址7. 配置MySQL固定公网地址8. 配置phpMyAdmin公网地址9. 配置phpmyadmin固定公网地址 前言 本文将详细讲解如何在群晖NAS上安装MySQL及其数据库管理…...
相机(Camera)硬件组成详解
简介:个人学习分享,如有错误,欢迎批评指正。 写在前面:可以去B站观看一些相机原理的视频来配合学习,这里推荐:推荐1,推荐2,推荐3 相机(Camera)是一种复杂的光…...
【Linux———基础IO】
每一滴眼泪,每一次心碎,什么爱能无疚无悔.......................................................................... 文章目录 前言 一、【认识文件I/O】 1.1、【回顾C语言文件I/O】 1.2、【操作系统文件I/O】 1.2.1、【open函数】 1、【open函数的三…...
WebRTC服务质量(03)- RTCP协议
一、前言: RTCP(RTP Control Protocol)是一种控制协议,与RTP(Real-time Transport Protocol)一起用于实时通信中的控制和反馈。RTCP负责监控和调节实时媒体流。通过不断交换RTCP信息,WebRTC应用…...
[python SQLAlchemy数据库操作入门]-10.性能优化:提升 SQLAlchemy 在股票数据处理中的速度
哈喽,大家好,我是木头左! 当处理大量数据时,如股票数据,默认的ORM操作可能会显得效率低下。本文将探讨如何通过一些技巧和策略来优化SQLAlchemy ORM的性能,从而提升其在股票数据处理中的速度。 1. 选择合适的数据类型 在定义模型时,选择合适的数据类型对于性能至关重要…...
23种设计模式之中介者模式
目录 1. 简介2. 代码2.1 Mediator (中介者接口)2.2 ChatRoom (具体中介者类)2.3 User (同事接口)2.4 ChatUser (具体同事类)2.5 Test (测试)2.6 运行结果 3. …...
MySQL:GROUP_CONCAT分组合并
目录 一、概述二、用法三、分组去重 一、概述 GROUP_CONCAT函数要配合group by才能发挥作用,主要用于分组之后合并某一字段。 二、用法 SELECT GROUP_CONCAT(age) FROM tb_user GROUP BY banner;三、分组去重 SELECT GROUP_CONCAT(DISTINCT age) FROM tb_user GRO…...
递归方式渲染嵌套的菜单项
1. 递归组件 递归方式渲染嵌套的菜单项,这个是非常好的做法。为了避免在每个子菜单上都渲染一个新的 <ul> 标签,可以使用 v-if 来判断是否有子菜单,再决定是否渲染子菜单的部分。 2. 提高性能 对于递归渲染组件,Vue 可能…...
常用Vim操作
vimrc配置 ctags -R * 生成tags文件 set number set ts4 set sw4 set autoindent set cindent set tag~/tmp/log/help/tags 自动补全: ctrln:自动补全 输入: a:从当前文字后插入i:从当前文字前插入s: 删除当前字…...
spark3 sql优化:同一个表关联多次,优化方案
目录 1.合并查询2.使用 JOIN 条件的过滤优化3.使用 Map-side Join 或 Broadcast Join4.使用 Partitioning 和 Bucketing5.利用 DataFrame API 进行优化假设 A 和 B 已经加载为 DataFramePerform left joins with specific conditions6.使用缓存或持久化7.避免笛卡尔积总结 1.合…...
XML 在线格式化 - 加菲工具
XML 在线格式化 打开网站 加菲工具 选择“XML 在线格式化” 输入XML,点击左上角的“格式化”按钮 得到格式化后的结果...
陪玩系统小程序源码/游戏陪玩APP系统用户端有哪些功能?游戏陪玩小程序APP源码开发
多客陪玩系统-游戏陪玩线下预约上门服务等陪玩圈子陪玩社区系统源码 陪玩系统源码,高质量的陪玩系统源码,游戏陪玩APP源码开发,语音陪玩源码搭建: 线上陪玩活动组局与线下家政服务系统的部署需要综合考虑技术选型、开发流程、部署流程、功能实…...
力扣-图论-9【算法学习day.59】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
ViT学习笔记(三) RepViT和TransNext简介
标准ViT的其他模块的功能以及源码解读,在CSDN上有很多优秀文章,参考文章将代码大致过一遍。像我这种只做工程不写论文的,个人认为大致明白就好,用不着特别细究。下面跟踪两个ViT比较新的变种继续深入学习一下:RepViT和…...
大华DSS数字监控系统 attachment_downloadAtt.action 任意文件下载漏洞复现
0x01 产品描述: 大华 DSS 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。0x02 漏洞描述: 大华DSS数字监控系统 attachment_downloadAtt.action接口存在任意文件读取漏洞,未经身份验证攻击者可通过该漏洞读取…...
Dockerfile容器镜像构建技术
文章目录 1、容器回顾1_容器与容器镜像之间的关系2_容器镜像分类3_容器镜像获取的方法 2、其他容器镜像获取方法演示1_在DockerHub直接下载2_把操作系统的文件系统打包为容器镜像3_把正在运行的容器打包为容器镜像 3、Dockerfile介绍4、Dockerfile指令1_FROM2_RUN3_CMD4_EXPOSE…...
LabVIEW实现MQTT通信
目录 1、MQTT通信原理 2、硬件环境部署 3、云端环境部署 4、程序架构 5、前面板设计 6、程序框图设计 7、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用…...
分布式事物XA、BASE、TCC、SAGA、AT
分布式事务——Seata 一、Seata的架构: 1、什么是Seata: 它是一款分布式事务解决方案。官网查看:Seata 2.执行过程 在分布式事务中,会有一个入口方法去调用各个微服务,每一个微服务都有一个分支事务,因…...
[创业之路-182]:《华为战略管理法-DSTE实战体系》-1-华为的发展历程和战略管理演变
目录 前言、华为在战略管理上做对了什么? 1、前瞻性的战略眼光 2、有效的战略解码 3、灵活的战略调整 4、注重创新和研发 5、以客户为中心的战略导向 6、完善的内部管理体系 一、华为不同时期的战略选择 1.1 华为不同时期的战略选择 1、创业初期ÿ…...
python爬虫--小白篇【爬取B站视频】
目录 一、任务分析 二、网页分析 三、任务实现 一、任务分析 将B站视频爬取并保存到本地,经过分析可知可以分为四个步骤,分别是: 爬取视频页的网页源代码;提取视频和音频的播放地址;下载并保存视频和音频&#x…...
web 自动化 selenium
1、下载Chrome对应的driver版本 我的chrome是 131.0.6778.109,我下载的driver是131.0.6778.69(想找一模一样的,但是没有) https://googlechromelabs.github.io/chrome-for-testing/ chromedriver下载 2、配置Chrome deriver及 …...
【OpenCV】Canny边缘检测
理论 Canny 边缘检测是一种流行的边缘检测算法。它是由 John F. Canny 在 1986 年提出。 这是一个多阶段算法,我们将介绍算法的每一个步骤。 降噪 由于边缘检测易受图像中的噪声影响,因此第一步是使用 5x5 高斯滤波器去除图像中的噪声。我们在前面的章…...
D94【python 接口自动化学习】- pytest进阶之fixture用法
day94 pytest的fixture详解 学习日期:20241210 学习目标:pytest基础用法 -- pytest的fixture详解 学习笔记: fixture的介绍 fixture是 pytest 用于将测试前后进行预备、清理工作的代码处理机制。 fixture相对于setup和teardown来说有以…...
关于idea-Java-servlet-Tomcat-Web开发中出现404NOT FOUND问题的解决
在做web项目时,第一次使用servlet开发链接前端和后端的操作,果不其然,遇到了诸多问题,而遇到最多的就是运行项目打开页面时出现404NOT FOUND的情况。因为这个问题我也是鼓捣了好久,上网查了许多资料才最终解决…...
SpringBoot Maven快速上手
文章目录 一、Maven 1.1 Maven 简介:1.2 Maven 的核心功能: 1.2.1 项目构建:1.2.2 依赖管理: 1.3 Maven 仓库: 1.3.1 本地仓库:1.3.2 中央仓库:1.3.3 私服: 二、第一个 SpringBoot…...
全面解析MySQL底层概念
mysql的概念 (1)mysql的架构 客户端请求--->连接器(验证用户身份,给予权限)--->查询缓存(存在则直接返回,不存在则执行后续操作 --->分析器(对SQL进行词法分析和语法分析…...
【C++】string类
一、C 标准库中的string类 1、string类 string类的文档介绍 首先string并不是STL中的,而是一个类string比STL出现的早 从上面可以看出string是从一个类模板中实例化出来的一个对象 在使用string类是必须要包头文件#include< string > 又因为是std中的类…...
《Python制作动态爱心粒子特效》
一、实现思路 粒子效果: – 使用Pygame模拟粒子运动,粒子会以爱心的轨迹分布并运动。爱心公式: 爱心的数学公式: x16sin 3 (t),y13cos(t)−5cos(2t)−2cos(3t)−cos(4t) 参数 t t 的范围决定爱心形状。 动态效果: 粒子…...
ssd202d-badblock-坏块检测
这边文章讲述的是坏快检测功能 思路: 1.第一次烧录固件会实现跳坏块,但是后续使用会导致坏块的产生; 于是我在uboot环境变量添加了两个变量来控制坏快 lb_badnum = //坏块个数 lb_badoff = //坏块所在位置 2.第一次开机会根据lb_badnum是否存在判断,如果不存在则保存上…...
使用html 和javascript 实现微信界面功能1
1.功能说明: 搜索模块: 提供一个搜索框,但目前没有实现具体的搜索功能。 好友模块: 在左侧的“好友”部分有一个“查看好友”按钮。点击左侧的“查看好友”按钮时,会在右侧显示所有好友的列表。列表中每个好友可以点击查看详情,包…...
趣味编程:猜拳小游戏
1.简介 这个系列的第一篇以猜拳小游戏开始,这是源于我们生活的灵感,在忙碌的时代中,我们每个人都在为自己的生活各自忙碌着,奔赴着自己所走向的那条路上,即使遍体鳞伤。 但是,生活虽然很苦,也不…...
图形化界面MySQL(MySQL)(超级详细)
目录 1.官网地址 1.1在Linux直接点击NO thanks..... 1.2任何远端登录,再把jj数据库给授权 1.3建立新用户 优点和好处 示例代码(MySQL Workbench) 示例代码(phpMyAdmin) 总结 图形化界面 MySQL 工具大全及其功…...
JavaScript技巧方法总结
技巧总结 字符串字符串首字母大写翻转字符串字符串过滤 数字十进制转换二进制、八进制、十六进制获取随机数字符串转数字指数幂运算 数组从数组中过滤出虚假值数组查找检测是否为一个安全数组数组清空实现并集、交集、和差集 对象检查对象是否为空从对象中选择指定数据动态属性…...