工作5年,没听过MySQL半同步复制,是我的问题吗?

【Mysql】Mysql 5.7半同步复制技术 文章目录一、复制架构衍生史二、半同步复制技术1.半同步复制具体特性:2.半同步复制潜在问题:三、MySQL 5.6半同步复制配置四、MySQL 5.7半同步复制的改进 原文链接 一、复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史。 在2000年,MySQL 3.23.15版本引入了Replication。Replication作为一种准实时同步方式,得到广泛应用。这个时候的Replicaton的实现涉及到两个线程,一个在Master,一个在Slave。Slave的I/O和SQL功能 阅读详情

在这里插入图片描述

AI时代智享——50元畅享ChatGPT-4o,解锁无限创作与优化可能

现价:仅需50元,首开尊享 长久使用!

需要私聊!!!!

👉 GPT功能:

  1. GPT-4o知识问答:支持联网查询,目前最强AI大模型
  2. 最强代码大模型Code Copilot:代码自动补全、代码优化建议、代码重构等
  3. DALL-E AI绘画:AI绘画 + 剪辑 = 自媒体新时代
  4. 私信哪吒,直接使用GPT-4o

在这里插入图片描述

一、存储高可用

对于需要存储数据的系统来说,整个系统的高可用设计关键点和难点就在于“存储高可用”,存储与计算相比,有一个本质上的区别:将数据从一台机器同步到另一台机器,需要经过线路进行传输。传输的速度,同一机房能够做到毫秒级,分布在不同地方的机房,传输耗时需要几十甚至上百毫秒。

虽然毫秒级对人来说几乎没有什么感觉,但对于要求高可用的系统来说,就是本质上的区别。

以最经典的银行储蓄业务为例,假设用户的数据存在北京机房,用户存了1万块钱,然后它查询的时候被路由到了上海机房,此时用户肯定后背一凉,马上怀疑自己的钱被盗了,然后赶紧打客户电话投诉,甚至打110报警,即使最后发现只是因为传输延迟导致的问题,用户的体验也是极差的。

在这里插入图片描述

除了物理上的传输速度限制,传输线路本身也存在可用性问题,传输线路可能中断、可能拥塞、可能异常,并且传输线路的故障时间一般都特别长,短的十几分钟,长的几个小时。

例如,2015年支付宝因为光缆被挖断,业务影响超过4个小时,2016年中美海底光缆中断3小时。

在传输线路中断的情况下,就意味着存储无法进行同步,在这段时间内整个系统的数据是不一致的。

因此,存储高可用的难点不在于如何备份数据,而在于如何减少或规避数据不一致对业务造成的影响。

分布式领域有一个著名的CAP定理,从理论上论证了存储高可用的复杂度。存储高可用不可能同时满足“一致性、可用性、分区容错性”,最多满足其中2个,这就要求我们在做架构设计的时候结合业务进行取舍了。

二、读写分离

在这里插入图片描述

读写分离的基本实现原理:

  1. 数据库服务器搭建主从集群,一主二从
  2. 数据库主机负责写操作,从机负责读操作
  3. 数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据
  4. 业务服务器将写操作发给数据库主机,将读操作发给数据库从机

读写分离的实现逻辑并不复杂,但在实际应用过程中需要应对复制延迟带来的复杂性。

以MySQL为例,主从复制延迟可能达到1S,如果有大量数据同步,延迟1分钟也是有可能的。

主从复制延迟会带来一个问题,如果业务服务器将数据写入到数据库主服务器后立刻(1S)内进行读取,此时读操作访问的是从机,从机还没有将数据复制过来,此时用户读取的就不是最新数据,业务上可能会存在问题。

例如,用户刚注册完后立刻登录,业务服务器会提示“你还没有注册”,而用户刚才已经注册成功了。

三、解决主从复制延迟问题的几种方案

1、写操作后的读操作指定发给数据库主服务器

2、读从机失败后再读一次主机

这就是大家常说的二次读取,二次读取和业务无绑定,只需要对底层数据库访问的API进行封装即可,实现代价较小,不足之处在于如果有很多二次读取,将大大增加主机的读操作压力。

3、关键业务读写操作全部指向主机,非关键业务采用读写分离

对于不要求实时性的操作,可以通过异步处理,将一些耗时的操作延后执行。

4、压缩与批量传输

通过开启Binlog压缩功能,减少传输数据量,降低网络负担。

在可能的情况下,批量传输数据,而不是逐条记录传输,以提高传输效率。

5、优化从库的查询性能

在从库上创建合理的索引结构,以减少查询的响应时间。

6、优化网络延迟

确保主从数据库之间的网络带宽充足,并且网络延迟尽可能低。可以通过提高带宽、优化网络拓扑结构,或者使用专线等方式减少延迟。

使用网络监控工具监控网络质量,及时发现并解决网络异常问题。

7、调整复制参数

使用半同步复制(Semi-Synchronous Replication)替代完全同步复制,以减少主库等待从库确认的时间。

MySQL 5.6及以上版本支持多线程复制,可以通过增加slave_parallel_workers的值来启用多线程复制,从而加速从库的并发执行。

增加sync_binlog与innodb_flush_log_at_trx_commit的值:这些参数影响主库的Binlog刷新频率,适当调整可以减少延迟。

8、监控与报警机制

通过SHOW SLAVE STATUS命令监控从库的复制延迟情况,并设定报警机制,及时处理复制延迟问题。

配置MySQL的自动故障转移(Failover)机制,在主库出现问题时自动切换到从库。

9、提高从库的硬件性能

为从库配置更高性能的CPU和内存,以提高SQL执行效率。

使用SSD替代HDD以提高磁盘读写速度,从而减少I/O等待时间。

四、半同步复制是什么

半同步复制是MySQL的一种复制模式,它介于全同步复制和异步复制之间,旨在在保证数据一致性和系统性能之间取得平衡。

在传统的异步复制模式中,主库在执行完一条事务后,只需将二进制日志(Binlog)写入本地文件并立即返回给客户端,表示事务提交成功。随后,这些日志会异步地发送到从库,从库再进行重放。这种方式性能较好,但在主库故障时可能会导致部分事务丢失,因为这些事务还没有被从库接收到。

而在半同步复制中,当主库执行完一条事务并写入Binlog后,不会立即返回给客户端,而是会等待至少一个从库确认已经接收到这个Binlog。只有在收到从库的确认信号后,主库才会返回事务提交成功的响应给客户端。如果在设定的超时时间内没有收到从库的确认,主库会回退到异步复制模式,以保证系统的可用性。

五、半同步复制的优缺点

1、半同步复制的优点

(1)数据安全性增强

由于主库在返回事务提交成功之前,至少要确认一个从库已经接收到了该事务的Binlog,因此可以减少数据丢失的风险。

(2)更快的故障恢复

即使主库发生故障,从库已经接收到的事务数据可以使从库迅速接替主库角色,减少数据恢复的时间。

2、半同步复制的缺点

(1)性能开销

半同步复制需要等待从库的确认,会增加事务的提交时间,导致延迟增大,尤其是在网络延迟较大的情况下。

(2)依赖网络

如果网络状况不好,可能频繁超时回退到异步模式,降低整体系统的效率。

六、半同步复制的流程

在这里插入图片描述

  1. 事务执行:客户端在主库上执行事务,事务在主库的存储引擎层完成。
  2. 写入Binlog:主库将事务记录写入二进制日志(Binlog)。
  3. 发送Binlog到从库:主库将Binlog发送到至少一个从库。
  4. 从库确认:从库接收到Binlog后,会立即返回一个确认信号给主库,表示已经接收到并写入Relay Log。
  5. 事务提交成功:主库在收到至少一个从库的确认后,返回事务提交成功的响应给客户端。
  6. 如果主库在一定时间内没有收到从库的确认信号,会回退到异步模式继续执行,以避免系统停滞。

半同步复制适用于那些对数据一致性要求较高,但又不能接受全同步复制带来的高延迟的场景。

常见应用场景包括:

  1. 金融系统:交易数据需要尽可能保证一致性,但仍需要一定的性能。
  2. 高可用集群:在保证一定程度的数据一致性的同时,允许快速故障切换。

通过配置半同步复制,MySQL可以在性能和数据一致性之间取得一定的平衡,减少数据丢失的风险。

MySQL半同步复制 所以,半同步复制最好在低延时的网络中使用。MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。当半同步复制发生超时(由rpl_semi_sync_master_timeout参数控制,默认为10000ms,即10s),会暂时关闭半同步复制,转而使用异步复制,也就是会自动降为异步工作。 阅读详情

相关推荐

MySQL - 异步复制,半同步复制,增强半同步复制,组复制,全告诉你

1.什么是主从复制 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库。 可以理解为,主数据库的数据的任何变化,从数据库都会跟着发生变化。 2.主从复制的作用 在从服务器可以执行查询工作,降低主服务器压力;(主库写,从库读,降压)读写分离 在从主服务器进行备份,避免备份期间影响主服务器服务;容灾 当主服务器出现问题时,可以切换到从服务器。提高可用性 3.主从复制的基本原理 步骤含义: SQL语句操作变化存入BinLog...

Aaron_涛 4793

mysql5.7 半同步复制

一、 什么是半同步复制 ① 异步复制 mysql默认的复制都是异步的,主机在提交事务后,并不关心从机是否接受并处理,这里的问题是:很有可能主从之间数据不一致。但是为什么mysql默认还是要异步了,因为这种复制最简单,性能好。 ② 全同步复制 当主机提交了事务后,必须等所有的从机执行完成以后才返回给客户端。因为要等所有的从机都执行,肯定性能会下降。 ③ 半同步复制 当主机提交了事务后,只需要等一台从机执行完成以后就返回给客户端。相对于异步复制,半同步复制牺牲了一定的性能,提高了数据的安全性。 .

u010648194的博客 3602

记录思科cisco交换机升级iso步骤

Cisco Nexus 93180交换机版本升级

a635161812的博客 4376

MySQL复制(二):半同步复制(Semisynchronous replicaiton)

MySQL复制有三种模式异步复制/同步复制/半同步复制,3种模式各有利弊,下面对各种复制模式的优缺点做个简要的介绍:异步复制(Asynchronous replicaton)这是MySQL默认的复制模式,异步复制指主库写binlog、从库I/O线程读binlog并写入relaylog、从库SQL线程重放事务这三步之间是异步的。异步复制的优点是主库不需要关心备库的状态,主库不保证事务被传输到从库,如果主库崩溃,某些事务可能还未发送到从库,切换后可能导致事务的丢失。其优点是可以有更高的吞吐量,缺点是不能保持数据

最简单的方法,解决最实际的问题。 4587

OK3588-C开发板Forlinx Desktop系统烧录与多媒体功能实战

本文详细介绍了OK3588-C开发板Forlinx Desktop系统的烧录步骤与多媒体功能实战。从硬件准备到软件工具配置,逐步解析RKDevTool烧录技巧,并深入测试摄像头、视频编解码及音频功能,帮助开发者快速掌握RK3588芯片的强大性能与Ubuntu系统的优化应用。

weixin_29190169的博客 417

算力网:正在编织的“第二电网“

中国算力网:编织智能时代的"第二电网" 中国正在构建全国一体化算力网,目标让算力资源像水电一样即取即用。这一国家战略通过"东数西算"布局,将东部算力需求与西部清洁能源优势结合,形成三级时延圈(1ms城市级、5ms区域级、20ms国家级)。算力网采用三层架构:基础设施层的八大枢纽节点作为"发电厂",编排管理层的智能调度系统作为"调度中心",运营服务层提供标准化算力服务。关键技术包括算力路由、异构算力统一度量、无损网络和液冷技术等。

这只是一个博客 666

半同步复制

半同步复制

多学习,多总结 469

【研究生学术英语读写教程翻译 中国科学院大学Unit9】

Unit 9 If Humble People Make the Best Leaders,Why Do We Fall for Charismatic Narcissists? 如果谦逊的人是最好的领导者,为什么我们会爱上魅力型自恋者?

fuhanghang的博客 4101

十三、MySQL基于GTID的半同步复制

这三步之间是异步的。异步复制的优点是主库不需要关心备库的状态,主库不保证事务被传输到从库,如果主库崩溃,某些事务可能还未发送到从库,切换后可能导致事务的丢失。mysql半同步复制是以插件形式实现的,插件由Google提供,具体位/usr/lib64/mysql/plugin/下,一个是master用的semisync_master.so,一个是slave用的semisync_slave.so,要使用半同步复制,要在主从分别安装相应的插件,并且通过参数来控制半同步复制。

爱吃西红柿的博客 1666

如何选择汽车域控制器MCU?一文看透7大关键维度[特殊字符](含芯片推荐、踩坑预警)

MCU选型 Checklist(实用表格)维度你需要考虑的问题Flash/RAM我的任务栈够吗?是否支持OTA双Bank?安全等级这功能出故障会不会危及人命?接口资源够几个CAN?支持CAN FD?ETH是否支持TSN?主频我的软件响应周期是多少?是否带Cache?多核架构是SMP/AMP?是否带锁步核?跑多个任务会不会互相干扰?功耗与封装睡眠电流够低?有外扩DDR空间?BGA能焊?供应链有无国产替代?交期是否稳定?支持AUTOSAR吗?

weixin_43199439的博客 661

k8s中pod使用详解

k8s中Pod使用

congge 1万+

MySQL 主从复制--半同步复制

MySQL的半同步是通过加载google为MySQL提供的半同步插件和来实现的。其中前者是master上需要安装的插件,后者是slave上需要安装的插件。MySQL的插件位置默认存放在$basedir/lib/plugin目录下。例如,yum安装的mysql-server,插件目录为/usr/lib64/mysql/plugin。因为要加载插件,所以应该保证需要加载插件的MySQL的全局变量已经设置为YES(默认值就是YES),否则无法动态加载插件。| YES |

CoderChronicle的博客 3436

48-OpenCVSharp —-Cv2.MatchTemplate() 函数功能(模板匹配)详解

是 OpenCV 中一个常见且简单的模板匹配算法,适用于目标检测和图像识别中的静态场景。它的优点是易于理解和实现,但在面对旋转、尺度变化、复杂背景或光照变化等挑战时,效果可能大打折扣。在这些情况下,结合多尺度图像、特征匹配算法(如 SIFT、SURF、ORB 等)以及深度学习模型可以显著提高匹配的鲁棒性和精度。模板匹配仍然是一个非常基础但强大的工具,适用于一些简单的图像匹配任务。对于更加复杂和动态的图像识别任务,我们通常会使用其他更加复杂的算法或者深度学习模型来处理。

weixin_45590420的博客 4523

【MySQL复制】半同步复制

除了内置的异步复制之外,MySQL 5.7 还支持通过插件实现的半同步复制接口。本节讨论半同步复制的概念及其工作原理。接下来的部分将涵盖与半同步复制相关的管理界面,以及如何安装、配置和监控它。

DBA之路的博客 1848

FPGA学习笔记(一)入门背景、软件及时钟约束的概念及程序下载与固化

使用正点原子的PFPGA开拓者V2学习,通过b站上正点原子的手把手教你学FPGA-基于开拓者V2学习。

贾saisai的博客 3277

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MySQL半同步复制深度解析:保障数据一致性的关键技术

异步复制的痛点:数据丢失风险:主库崩溃时,未同步到从库的数据会丢失数据不一致:主从不一致可能导致业务逻辑错误故障切换复杂:需要人工判断数据同步情况fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;异步复制半同步复制全同步复制性能要求高选择复制方案一致性要求高可能出现数据丢失保证数据不丢失性能严重下降。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 9117

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

MySQL 5.7半同步复制技术

MySQL 5.7半同步复制技术 转自:MySQL 5.7无损复制技术 一、复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史。 在2000年,MySQL 3.23.15版本引入了Replication。Replication作为一种准实时同步方式,得到广泛应用。这个时候的Replicaton的实现涉及到两个线程,一个在Master,一个在Slave。Slave的I/O和SQ...

sunbocong的博客 892

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mysql 5.7主从半同步复制(无损)

mysql 5.7主从半同步复制(无损) 目录 mysql 5.7主从半同步复制(无损) 1 (1) 简介 1 (2) mysql复制的类型 1 (3) 主从复制工作原理剖析 1 二、 基本构建思路 2 三、 主从mysql的配置参数 2 四、 主从同步结构模式 3 五、 环境搭建,A(主库),B(从库) 3 六、 mysql主从同步数据复制模式 5 七、 配置半同步复制模式...

爱上DBA... 1744

mysql 5.7 搭建 semisync replication 半同步复制

os: ubuntu 16.04 db: mysql 5.7.25 规划如下: 192.168.56.92 node1 # mysql master 192.168.56.90 node2 # mysql slave 192.168.56.88 node3 # mysql slave mysql 传统的 master/slave 属于异步复制,主库的事务执行不会管备库的同步进度,如果备库落后,...

一名数据库爱好者的专栏 1755

mysql 半同步 原理_MySQL半同步复制原理与配置详解

一、异步、同步和半同步复制概念异步复制(Asynchronous replication),MySQL默认的复制是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理。原理最简单,性能最好,但是主从之间数据不一致的概率很大。全同步复制(Fullysynchronous replication),指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户...

weixin_34379989的博客 4002

MySQL半同步复制配置

MySQL默认的主从复制采用的是异步模式,主库提交事务不需要确认是否已经传送到从库端,在主库发生宕机主备切换时,可能导致主库已经提交的事务在从库丢失的情况。 在MySQL 5.7通过插件支持了半同步复制模式,半同步模式下,主库事务至少要确保一个从库接收到日志才能完成提交,因此,可以保证在主库发生宕机时,已经提交的事务已经传送到从库,确保数据的不丢失。

sinat_36757755的博客 6470

mysql半同步复制

1、理解半同步复制 ​ 到现在为止,我们已经可以搭建MySQL的主从集群,互主集群,但是我们这个集群有一个隐患,就是有可能会丢数据。这是为什么呢?这要从MySQL主从数据复制分析起。 ​ MySQL主从集群默认采用的是一种异步复制的机制。主服务在执行用户提交的事务后,写入binlog日志,然后就给客户端返回一个成功的响应了。而binlog会由一个dump线程异步发送给Slave从服务。 ​ 由于这个发送binlog的过程是异步的。主服务在向客户端反馈执行结果时,是不知道binlog是否同步成功了的

weixin_42446078的博客 1026

MySQL半同步复制详解

MySQL半同步复制在数据安全性和性能之间取得了良好的平衡,特别适合对数据一致性要求较高的应用场景。通过合理配置和监控,可以构建既可靠又高效的数据库复制架构。

学亮编程手记 826

【MySQL】MySQL半同步复制

原文;https://www.cnblogs.com/ivictor/p/5735580.html 从MySQL5.5开始,MySQL以插件的形式支持半同步复制。如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行..

我的笔记本 525
上一篇: 华为OD机试 - 最大报酬 - 0/1 背包问题,动态规划(Java 2024 E卷 100分)
下一篇: 华为OD机试 - 表演赛游戏分组 - 动态规划(Python/JS/C/C++ 2024 D卷 200分)
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2933原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值