当前位置: 首页 > article >正文

MYSQL 高可用

目录

一 什么是MYSQL高可用

1.1 什么是MySQL高可用

1.2方案组成

1.3 优势

2.1 案例环境

二 案例实施

1.安装mysql数据库

(1 基础环境

(2二进制安装进行bash

(3 设置配置文件

MYSQL 的配置文件跟上面编译安装的配置文件类似

(4. 配置systemctl 方式启动

2.配置mysql 双主复制

(1)在Master1/etc/my.cnf 中修改或者增加下面内容。

(2 在Master2/etc/my.cnf 中修改或者增加下面内容

(3)重启 MySQL 服务。(Master1、Master2都执行)

(4)登录 MySQL 程序,给从服务器授权。(Master1、Master2都执行)

(5)登录 MySQL,配置同步。(Master1、Master2都执行)

(5.测试

3.安装 haproxy

(1  关闭selinux和防火墙

(2  安装haproxy

(4  检测配置文件,并启动服务

4.安装 keepalive

(1 关闭防火墙​编辑

(2  安装keepalived​编辑

(3   编辑haproxy配置文件

(4  编测试使用VIP连接mysql

5.测试故障转移

1.关闭master1 主机,测试使用vip能否正常访问mysql数据库关闭master1后,因为master1、master2 通过haproxy负载均衡,master1关闭后,haproxy检测其状态异常,会从负载中移除,不进行流量转发,依然可以通过vip访问mysql,实现mysql的高​编辑可用

2. 接着关闭keepalived1,测试使用vip能否正常访问mysq1数据库关闭keepalived1后,keepalived 检测到主节点离线,VIP 192.168.10.100会漂移至keepalived2节点,mysql依然可以访问


一 什么是mysql 高可用

MySQL 高可用(High Availability)是指通过冗余设计,确保数据库服务在单节点故障、网络中断或硬件损坏等异常情况下,仍能持续对外提供服务,同时保“零停机、零数据丢失”证数据一致性。其核心目标是实现的业务连续性。

1.2方案组成

MySQL 主主复制+Keepalived+ HAProxy 的高可用方案由三部分组成:

MySQL 主主复制:两台 MySQL 实例互为主从,双向同步数据,均支持读写操作,提供冗余和扩展能力。
Keepalived:通过 VRRP 协议管理虚拟 IP(VIP),监控 MySQL 状态,故障时自动将 VIP 漂移至存活节点,确保服务地址不变。
HAProxy:作为反向代理和负载均衡器,将流量分发至MySQL节点,支健康检查、读写分离(可选)和故障节点自动剔除。

1.3 优势

高可用性::Keepalived 实现秒级故障切换,HAProxy 健康检查确保流量仅路由到正常节点,避免单点故障
读写扩展:主主架构支持双节点并发写入,提升写入性能;HAProxy 可配置读写分离,利用备节点分担读压力。
读写扩展:可横向扩展 HAProxy 或 MySQL节点,支持动态调整负载均衡策略(如轮询、权重)。运维友好基于开源工具,无厂商锁定,社区支持丰富,适合自建数库集群。

2.1 案例环境

实验拓扑图

二 案例实施

1.安装mysql数据库

(1 基础环境

如果采用OpenEuler minimal 安装的系统,在使用前需要安装一些基础软件包工具。

关闭 SELinux 和防火墙

(2二进制安装进行bash

安装软件包

二进制安装的版本采用跟上面编译安装的版本一样 MySQL 8.0.36。首先需要下载该软 件包或者提前上传,然后再解压进行配置。

(3 设置配置文件

MYSQL 的配置文件跟上面编译安装的配置文件类似

(4. 配置systemctl 方式启动

2.配置mysql 双主复制

对于 MySQL 的主主架构,其实原理就是两台服务器Master1、Master2 互为主从,双向复制

(1)在Master1/etc/my.cnf 中修改或者增加下面内容。

log-bin=/usr/local/mysql/data/mysql-bin #启用二进制日志(Binary Log)并指定其存储路径
binlog_format=MIXED #定义二进制日志的记录格式为混合模式

server-id=1#为mysq1实例分配一个唯一的服务器标识符

(2 在Master2/etc/my.cnf 中修改或者增加下面内容

log-bin=/usr/local/mysql/data/mysql-bin #启用二进制日志(Binary Log)并指定其存储路径

binlog_format = MIXED   #定义了二进制日志的记录格式为混合模式是

server-id=2        #为mysq1实例分配一个唯一的服务器标识符

(3)重启 MySQL 服务。(Master1、Master2都执行)

(4)登录 MySQL 程序,给从服务器授权。(Master1、Master2都执行)

(5)登录 MySQL,配置同步。(Master1、Master2都执行)

Master1
按主服务器结果更改下面命令中 master_log_file 和master_log_pos 参数。

启动同步。

查看 Slave 状态,确保以下两个值为 YES

Master2
按主服务器结果更改下面命令中 master_log_file 和 master_log_pos 参数。

启动同步。

查看 Slave 状态,确保以下两个值为 YES

(5.测试

3.安装 haproxy

HAProxy 是一个开源的高性能负载均衡器和代理工具,支持 TCP/HTTP 应用的流量分发,具备健康检查、SSL终止、会话保持等功能,广泛应用于Web服务器集群、数据库读写分离及API 网关场景,以高效稳定的特性提升系统可用性和扩展能力。

(1  关闭selinux和防火墙

(2  安装haproxy

(3 编辑haproxy 配置文件

(4  检测配置文件,并启动服务

4.安装 keepalive

Keepalived 是一个用于实现系统高可用性和负载均衡的工具,通过 VRRP(Virtual Router Redundancy Protocol)等协议管理虚拟 IP 地址,持续监测服务器健康状态,当主节点故障时自动将流量切换至备用节点,确保服务不中断,常用于数据库、Web 服务等集群环境,提升系统可靠性并简化故障恢复流程。

(1 关闭防火墙

(2  安装keepalived

(3   编辑haproxy配置文件

添加监控脚本启动keepalived

在keepalived测试查看vip

(4  编测试使用VIP连接mysql

停止Keepalived

查看ip a第一台

查看ip a 第二台

5.测试故障转移

1.关闭master1 主机,测试使用vip能否正常访问mysql数据库关闭master1后,因为master1、master2 通过haproxy负载均衡,master1关闭后,haproxy检测其状态异常,会从负载中移除,不进行流量转发,依然可以通过vip访问mysql,实现mysql的高可用

2. 接着关闭keepalived1,测试使用vip能否正常访问mysq1数据库关闭keepalived1后,keepalived 检测到主节点离线,VIP 192.168.10.100会漂移至keepalived2节点,mysql依然可以访问

相关文章:

MYSQL 高可用

目录 一 什么是MYSQL高可用 1.1 什么是MySQL高可用 1.2方案组成 1.3 优势 2.1 案例环境 二 案例实施 1.安装mysql数据库 (1 基础环境 (2二进制安装进行bash (3 设置配置文件 MYSQL 的配置文件跟上面编译安装的配置文件类似 (4. 配…...

【GaussDB迁移攻略】DRS支持CDC,解决大规模数据迁移挑战

目录 1 背景介绍 2 CDC的实现原理 3 DRS的CDC实现方式 4 DRS的CDC使用介绍 5 总结 1 背景介绍 随着国内各大行业数字化转型的加速,客户的数据同步需求越来越复杂。特别是当需要将一个源数据库的数据同时迁移到不同的目标库场景时,华为云通常会创建…...

HoloTime:从一张图片生成可交互的4D虚拟世界——突破静态生成模型,重构VR/AR内容生产范式

引言:静态生成模型的局限与HoloTime的突破 在空间智能与虚拟内容生成领域,传统生成模型(如扩散模型)面临两大瓶颈: 静态输出:仅能生成固定视角的3D场景或局部物体动画。沉浸感缺失:无法构建用户可“走进去”的动态4D空间(时间+空间)。HoloTime 通过“图像→全景视频→…...

【Python CGI编程】

Python CGI(通用网关接口)编程是早期Web开发中实现动态网页的技术方案。以下是系统化指南,包含核心概念、实现步骤及安全实践: 一、CGI 基础概念 1. 工作原理 浏览器请求 → Web服务器(如Apache) → 执行…...

JavaScript 时间转换:从 HH:mm:ss 到十进制小时及反向转换

关键点 JavaScript 可以轻松实现时间格式(HH:mm:ss 或 HH:mm)与十进制小时(如 17.5)的相互转换。两个函数分别处理时间字符串到十进制小时,以及十进制小时到时间字符串的转换,支持灵活的输入和输出格式。这…...

【深度学习】#11 优化算法

主要参考学习资料: 《动手学深度学习》阿斯顿张 等 著 【动手学深度学习 PyTorch版】哔哩哔哩跟李牧学AI 目录 深度学习中的优化挑战局部极小值鞍点梯度消失 凸性凸集凸函数 梯度下降一维梯度下降学习率局部极小值 多元梯度下降 随机梯度下降随机梯度更新动态学习率…...

《数字藏品APP开发:解锁高效用户身份认证与KYC流程》

开发一款数字藏品APP,要面对诸多复杂且关键的环节,其中,实现高效的用户身份认证与KYC(了解你的客户)流程,无疑是重中之重。这不仅关乎用户资产安全与平台合规运营,更是构建用户信任、保障平台可…...

ros2中自定义的package查不到?

在ros2中自定义的package功能包,使用命令:ros2 pkg list无法查找到自己的功能包? 首先,利用ros2 pkg create命令创建好功能包之后要利用colcon build命令进行编译,编译成功之后,在当前路径需要运行命令&am…...

根据台账批量制作个人表

1. 前期材料准备 1)要有 人员总的信息台账 2)要有 个人明白卡模板 2. 开始操作 1)打开 人员总的信息台账,选择所需要的数据模块; 2)点击插入,选择数据透视表,按流程操作&…...

LocaleContextResolver实现多语言切换-笔记

1. LocaleContextResolver功能简介 org.springframework.web.servlet.LocaleContextResolver是 Spring MVC 中用于解析和管理用户 Locale(语言环境) 的核心接口。 //LocaleContextResolver 接口定义 public interface LocaleContextResolver extends L…...

Android从单体架构迁移到模块化架构。你会如何设计模块划分策略?如何处理模块间的通信和依赖关系

从单体架构迁移到模块化架构。可能有些小伙伴已经深陷单体架构的泥潭,代码耦合得跟一团麻线似的,改个小功能都能牵一发而动全身;也可能有些团队在协作时,经常因为代码冲突或者职责不清搞得焦头烂额。相信我,这些问题我都经历过,真的能把人逼疯!所以,咱得找个更好的方式…...

Zephyr OS Nordic芯片的Flash 操作

目录 概述 1. 软硬件环境 1.1 软件开发环境 1.2 硬件环境 2 Flash操作库函数 2.1 nRF52832的Flash 2.2 Nordic 特有的 Flash 操作 2.2.1 nrfx_nvmc_bytes_write 函数 2.2.2 nrfx_nvmc_page_erase函数 2.2.3 nrfx_nvmc_write_done_check 函数 3 操作Flash的接口函数…...

uv python 卸载

又是查了半天 官网wiki没有 网上一堆傻子胡说 uv提示也不对 AI还在这尼玛胡编乱造 开始 我原来装了这几个环境 uv python list 现在python3.7.7不需要了,卸载,直接 uv python uninstall 3.7.7 去找你自己要卸载的版本号,不需要整个包名复制…...

MCP本地高效与云端实时:stdio 与 HTTP+SSE 传输机制深度对比

概览 模型上下文协议(MCP)定义了客户端与服务器之间通信的统一标准,所有消息均采用 JSON-RPC 2.0 格式进行封装,并在此基础上支持两种传输机制:stdio(标准输入/输出) 与 HTTPSSE(Se…...

浮点数截断法:四舍五入的精确模拟

理论解释: 1. 目标 假设 a 3.14159,我们想四舍五入到 小数点后两位(即 3.14 或 3.15)。 2. 步骤拆解 (1) a * 100 把 a 放大 100 倍,让小数点后两位变成整数部分: 3.14159 * 100 314.159 (2) 0.5 关…...

技术文章:解决汇川MD500系列变频器干扰问题——GRJ9000S EMC滤波器的应用

1. 引言 汇川MD500系列变频器(Variable Frequency Drive, VFD)以其高性能、宽功率范围(0.4kW-500kW)和灵活的控制方式,广泛应用于工业自动化领域,如风机、水泵、传送带和压缩机等。然而,MD500系…...

大模型数据分析破局之路20250512

大模型数据分析破局之路 本文面向 AI 初学者、数据分析从业者与企业技术负责人,围绕大模型如何为数据分析带来范式转变展开,从传统数据分析困境谈起,延伸到 LLM MCP 的协同突破,最终落脚在企业实践建议。 🌍 开篇导语…...

基于javaweb的SSM驾校管理系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

Java内存泄露生产环境排查过程,通透了

昨天线上环境崩了 java堆内存溢出。。。 报错:java.lang.OutOfMemoryError: Java heap space 下面我将我排查问题的思路和过程记录了下来 1. 场景 客户端跟Java服务端通过websocket连接建立长链接并发送语音数据(text格式)Java服务端跟听…...

NHANES指标推荐:MDS

文章题目:The association between magnesium depletion score (MDS) and overactive bladder (OAB) among the U.S. population DOI:10.1186/s41043-025-00846-x 中文标题:美国人群镁耗竭评分 (MDS) 与膀胱过度活动症…...

以项目的方式学QT开发C++(二)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!

API 描述 函数原型 参数说明 push_back() 在 list 尾部 添加一个元素 void push_back(const T& value); value :要添 加到尾部的元 素 这个示例演示了如何创建 std::list 容器,并对其进行插入、删除和迭代操作。在实际应用中&am…...

Docker使用经验-从Image导出dockerfile并进行修改

好久没进行记录写作了,还是得进行下去 0 前言 项目上拉下来的docker-image在我自己电脑上创建的容器不能正常启动,创建者在容器里面添加的了用户,容器启动后会进入该用户 1 docker导出dockerfile dfimage是一个用于从Docker镜像生成Docker…...

【HTML5学习笔记1】html标签(上)

web标准(重点) w3c 构成:结构、表现、行为,结构样式行为相分离 结构:网页元素整理分类 html 表现:外观css 行为:交互 javascript html标签 1.html语法规范 1) 所有标签都在…...

计算机视觉---目标检测(Object Detecting)概览

一、目标检测定义与核心任务 1. 定义 任务:在图像/视频中定位并分类所有感兴趣目标,输出边界框(Bounding Box)和类别标签。核心输出: 坐标:((x_1, y_1, x_2, y_2))(左上角右下角)或…...

在vue3中使用Cesium的保姆教程

1. 软件下载与安装 1. node安装 Vue.js 的开发依赖于 Node.js 环境,因此我们首先需要安装 Node.js。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许你在服务器端运行 JavaScript 代码,同时也为前端开发提供了强大的工具支…...

IP地址、端口、TCP介绍、socket介绍、程序中socket管理

1、IP地址:IP 地址就是 标识网络中设备的一个地址,好比现实生活中的家庭地址。IP 地址的作用是 标识网络中唯一的一台设备的,也就是说通过IP地址能够找到网络中某台设备。 2、端口:代表不同的进程,如下图: 3、socket:…...

基于MCP的桥梁设计规范智能解析与校审系统构建实践

引言 在腾讯云开发者社区中,有多种MCP工具可以用于本系统的开发和优化中,以下是一些潜在的应用场景: ‌PDF解析工具‌:如pdfplumber等,可以用于规范文件的预处理,提取文本和图像信息。‌自然语言处理工具…...

搭建运行若依微服务版本ruoyi-cloud最新教程

搭建运行若依微服务版本ruoyi-cloud 一、环境准备 JDK > 1.8MySQL > 5.7Maven > 3.0Node > 12Redis > 3 二、后端 2.1数据库准备 在navicat上创建数据库ry-seata、ry-config、ry-cloud运行SQL文件ry_20250425.sql、ry_config_20250224.sql、ry_seata_2021012…...

OM和SCADA的区别

在工业与能源领域,O&M(Operation and Maintenance,运维) 和 SCADA(Supervisory Control And Data Acquisition,监控与数据采集系统) 是两类截然不同的概念,前者是 人员与流程驱动…...

CentOS7 grub配置文件介绍

1. grub2-editenv list saved_entryCentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core) 这个命令查询出当前启动的内核版本。 2.grep ^menu /boot/grub2/grub.cfg menuentry CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core) --class centos --class gnu-linux --class gnu --c…...