Mysql高可用架构方案
Mysql 介绍
Mysql是典型的开源关系型数据库,是许多网站、应用程序、企业软件产品的首选数据库。
Mysql特性:
-
易于使用,功能强大,支持事务、触发器、存储过程
-
管理工具多种多样且功能丰富
-
可以作为千万级数据管理的大型数据库
-
采用GPL开源协议,允许自由修改源码并应用到商业系统中
-
Mysql的InnoDB事务性存储引擎符合事务ACID模型,能保证完整、可靠地进行数据地存储
高可用结构
-
主从模式
-
MHA
-
MMM
-
MGR
主从模式
主从模式介绍
主从模式是最基本的Mysql高可用架构,一台服务器作为Master节点,若干服务器作为Slave节点。只有Master处理写数据请求,读请求可仅由Slave节点处理,也可让Master、Slave同时处理。
Master和Slave通过主从复制技术保持数据一致,即Master节点将数据同步给Slave节点。
主从模式具备高可用的基础是主从复制技术。
主从复制技术
-
当Master 数据发生变更(新增、删除、修改)时,Master将变更日志写入二进制日志文件 binlog
-
Slave启动单独线程(I/O线程)与Master建立网络连接,从Master的binlog中获取变更日志
-
Slave的I/O线程捕获到数据变更日志后,按照顺序保存到中继日志文件 relay log
-
Slave启动单独线程(Sql线程)从relay log 中读取日志并执行,使Slave 库的数据和Master一致

主从模式注意事项
Mysql 5.5之前主从复制为异步方式,Master 提交事务不需要经过Slave 们的确认,那么就会有这种极端情况:
-
Slave 读取Master 的binlog失败了
-
Slave 处理relay log 失败了
-
Slave 执行Sql语句失败了
-
等......
类似的极端情况将导致数据不一致。所以在Mysql 5.5 主从复制提供了半同步的方式,具体来说就是增加了ACK确认的机制,当Slave接收到binlog 后,会给Master 发送一条确认消息,Master在接收到ACK确认消息之后才会提交事务。半同步方式可以提高数据的一致性,但是Master在写入数据的时候需要等待Slave的确认,所以性能会有所下降。
复制风暴问题,来考虑这样一种更加极端的情况,一个Master ,10个Slave , 这种情况下基于主从复制技术,Master在写入数据前需要同时处理10个Slave的数据复制请求,这种情况下对于Master只能说是不堪重负,如果在加上“半同步机制”,写入性能将大打折扣,这种情况称之为复制风暴问题。解决这种问题的方法是,Master 仅处理一个Slave的主从复制,其它的Slave复制由Slave负责。
MHA(MasterHighAvailability)
MHA模式介绍
以主从模式为基础,接下来就该考虑如下问题了:
-
如何检测节点故障
-
master节点故障之后如何重新选举
MHA就是在解决这两个问题的,理论上,MHA模式可以在10s-30s内完成主从集群的自动故障检测和自动主从切换。
MHA由两个部分组成:
-
MHA-Manager:负责自动检测Master是否故障,检查主从复制状态,执行自动主从切换等。需要单独服务器部署。
-
MHA-Node:负责修复主从数据的差异,通常和Mysql服务器实例绑定部署。
MHA工作流程
-
Manager 和 Master之间心跳,如果连续4次探测不到心跳,就认为该Master宕机了,Master实例绑定一个Node。
-
Manager 分析各个Slave的binlog,选择一个更接近Master数据的Slave作为备选Master,一个Slave实例分别绑定一个Node。
-
Slave的Node试图通过SSH访问Master所在服务器:
如果可达,Slave的Node获取Master的binlog数据,若发现Master和Slave数据存在差异,会将差异数据主动复制到Slave,以保持主从数据一致。
如果不可达,Node对比各个Slave的relay log 差异,并做差异数据补齐。
-
Manager将备选Master提升为Master。
MMM(Multi-MasterReplicationManagerForMysql)
MMM模式简单来说就是引入虚拟IP(vip)技术,这种架构下,一个集群中有两个Master和若干个Slave,当其中一个Master不可用的时候,MMM会指示vip切换到另外一个Master上面,同时会向所有的Slave发送更换Master的消息,之后主从复制将切换到新的Master。
此方案比较古老,不支持Mysql GTID ,并且社区活跃度不够,目前处于无人维护的状态。
MGR(MysqlGroupReplication)
MGR,Mysql组复制模式是Mysql5.7.17版本推出的高可用解决方案,具备如下特性:
-
一致性高:数据复制基于分布式共识算法Paxos,可以保证多个节点数据的一致性
-
容错性高:只要不是超过一半的节点宕机,就可以继续提供服务
-
灵活性强:MGR支持单主模式和多主模式,单主模式下如果Master故障,Slave们会重新选举一个新的Master,多主模式下每一个Mysql节点都可以同时处理写请求
MGR要求至少由3个Mysql节点组成一个复制组,即一主两从,一个事务必须经过复制组内超过半数节点通过后才能提交。
如果在不同的Mysql节点上执行不同的写操作发生了事务冲突,那么先提交的事务先执行,后提交的事务被回滚。在多主模式下,由于每个Mysql节点都可以执行写请求,在写请求高并发的场景下发生事务冲突的概率会非常大,会造成大量事务回滚。
在单主模式下,MGR会自动为复制组选择一个Master负责写请求,如果复制组内超过一半节点与Master通信失败,就认为Master宕机了,这时会根据各个节点的权重和ID标识重新选主。
MGR更加适合一致性强,写并发量不大的场景下使用。
总结
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
文章转载自:一颗苹果
原文链接:https://www.cnblogs.com/Naylor/p/18539381
体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构
相关文章:
Mysql高可用架构方案
Mysql 介绍 Mysql是典型的开源关系型数据库,是许多网站、应用程序、企业软件产品的首选数据库。 Mysql特性: 易于使用,功能强大,支持事务、触发器、存储过程 管理工具多种多样且功能丰富 可以作为千万级数据管理的大型数据库 采…...
Go,15岁了[译]
请点击上方蓝字TonyBai订阅公众号! 虽然迟到了,但绝不缺席!新任Go技术负责人Austin Clements在Go语言15岁生日后的第二天,在Go官方博客上发表了庆祝文章“Go Turns 15[2]”。在这篇文章中,Austin回顾了过去一年Go项目和…...
【大数据学习 | kafka高级部分】kafka的数据同步和数据均衡
1. 数据同步 通过上图我们发现每个分区的数据都不一样,但是三个分区对外的数据却是一致的 这个时候如果第二个副本宕机了 但是如果是leader副本宕机了会发生什么呢? 2. 数据均衡 在线上程序运行的时候,有的时候因为上面副本的损坏ÿ…...
微擎框架php7.4使用phpexcel导出数据报错修复
在使用微擎社区版时,用phpexcel导出数据,提示错误,经过搜索后得知是php版本问题。 之前一直是用的5.6现在改成了7.4。所以才发现了这个问题。 然后去gitee上看了下微擎官方的代码,好像也没有对这个问题进行修复。 找了下&#…...
Netty实现WebSocket Server是否开启压缩深度分析
是否开启压缩会直接影响与客户端是否能够成功握手。 一、具体分析 通常客户端发起与Websocket连接一般是以下形式。 1)包含6个必要的Header Request Headers Sec-WebSocket-Version: 13 Sec-WebSocket-Key: Nlpc0kiHFjRom5/62lj8bA Connection: Upgrade Upgrade…...
【Xrdp联机Ubuntu20.04实用知识点补充】
简单归纳了Xrdp远程连接可能会出现的问题 文章目录 一、网络篇二、Ubuntu远程联机一段时间后莫名奇妙断开Ubuntu20.04禁用休眠配置禁用挂起配置 三、refresh界面频繁刷新四、Authentication is required to create a color profile参考文章总结 一、网络篇 ip addr show eth0接…...
【电脑】解决DiskGenius调整分区大小时报错“文件使用的簇被标记为空闲或与其它文件有交叉”
【电脑】解决DiskGenius调整分区大小时报错“文件使用的簇被标记为空闲或与其它文件有交叉” 零、报错 在使用DiskGenius对磁盘分区进行调整时,DiskGenius检查出磁盘报错,报错信息:文件使用的簇被标记为空闲或与其它文件有交叉,…...
IDC机房服务器托管的费用组成
IDC机房服务器托管的费用,并不是只有我们所想的电费而已,还有一些其它费用组成,详细来看: 1. 机位费用: - 机位费用是根据服务器的尺寸和占用的空间来计算的。服务器通常按照U(Unit)的高度来…...
Halcon深度学习网络模型简介
HALCON为分类和语义分割提供了预训练的神经网络。当训练自定义网络时,这些神经网络是很好的起点。它们已经在一个大型图像数据集上进行了预训练。对于异常检测,HALCON提供了初始模型。 用于 3D 抓取点检测的模型 为 3D 抓取点检测提供了以下网络…...
ROM修改进阶教程------安卓14 安卓15去除app签名验证的几种操作步骤 详细图文解析
在安卓14 安卓15的固件中。如果修改了系统级别的app。那么就会触发安卓14 15的应用签名验证。要么会导致修改的固件会进不去系统,或者进入系统有bug。博文将从几方面来解析去除安卓14 15应用签名验证的几种方法。 💝💝💝通过博文了解: 1💝💝💝-----安卓14去除…...
基于集成Whisper 与 Pepper-GPT改进人机交互体验并实现顺畅通信
摘要 随着技术以令人眼花缭乱的速度发展,使人机交互更加顺畅比以往任何时候都更加重要。为了应对这一挑战,一个新领域应运而生:人机交互(HRI)。有效的人机交互被认为是实现技术效益的关键。 用户体验(UX&…...
C++设计模式精选面试题及参考答案
目录 什么是单例模式?它的应用场景是什么?如何保证单例模式线程安全? 什么是工厂方法模式?如何与简单工厂模式进行比较? 抽象工厂模式和工厂方法模式有什么区别?请给出实际应用场景。 什么是建造者模式?它和工厂模式有什么不同? 在什么情况下使用单例模式?如何在…...
Linux下的vim和gdb
vim: vim是编译功能强大,多模式的编译器。实际中vim有很多种模式,但是常用的就三种模式: 1、正常/普通/命令模式(Normal mode)控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下…...
(蓝桥杯C/C++)——搜索
一、回溯法 1.回溯法简介 回溯法一般使用 ** DFS(深度优先搜索) ** 实现,DFS是一种遍历或搜索图、树或图像等数据结构的算法,当然这个图、树未必要存储下来(隐式处理就是回溯法),常见的是通过某种关系构造出的搜索树,搜索树一般…...
【网页设计】HTML5 和 CSS3 提高
目标 能够说出 3~5 个 HTML5 新增布局和表单标签能够说出 CSS3 的新增特性有哪些 1. HTML5 的新特性 注:该部分所有内容可参考菜鸟教程菜鸟教程 - 学的不仅是技术,更是梦想! (runoob.com) HTML5 的新增特性主要是针对于以前的不足…...
FastGPT部署通义千问Qwen和智谱glm模型|OneAPI配置免费的第三方API
继这篇博客之后 从零开始FastGPT本地部署|Windows 有同学问,不想在多个平台申请API-Key,不好管理且要付费,有木有白嫖方案呀? 答:有啊。用硅基流动。 注册方法看这篇 【1024送福利】硅基流动送2000万token啦࿰…...
https网站 请求http图片报错:net::ERR_SSL_PROTOCOL_ERROR
问题描述 场景: https网站,请求http图片资源报错:net::ERR_SSL_PROTOCOL_ERROR 原因: Chrome 81 中,对混合内容资源加载策略进行了改变,会自动升级到 https:// ,如果无法通过 https:// 加载&am…...
攻防世界38-FlatScience-CTFWeb
攻防世界38-FlatScience-Web 点开这个here看到一堆pdf,感觉没用,扫描一下 试试弱口令先 源码里有: 好吧0.0 试试存不存在sql注入 根本没回显,转战login.php先 输入1’,发现sql注入 看到提示 访问后得源码 <?php ob_start(); ?>…...
探索 JNI - Rust 与 Java 互调实战
真正的救赎,并非厮杀后的胜利,而是能在苦难之中,找到生的力量和内心的安宁。 ——加缪Albert Camus 一、Rust Java ? Java 和 Rust 是两种现代编程语言,各自具有独特的优势,适用于不同的应用场景。 1、…...
网络安全-Linux基础(bash脚本)
文章目录 bash脚本编写基础使用的脚本解析器/bin/bash(声明)bash脚本需要拥有执行权限bash脚本语法输入与输出函数的封装条件判断语句条件符号 循环语句模块化编程 Linux进程操作查看寻找进程终止进程暂停与恢复进程后台运行 bash脚本编写系统内存资源占…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
