MySQL 主从复制

news2025/7/8 18:34:52

        现在我们的应用基本都往高性能的方向发展,各种语言都开始推出一些多进程和分布式的框架,其目的就是为了能够做到一个高性能的应用。包括会使用各种MQ和缓存的中间件,其实使用这些中间件的最终目的都是为了能够缓解数据库的压力,数据库是所有应用中的最后一环。因此提高数据库的性能也是必要的。主从复制解决数据库的访问压力,降低单个服务器的IO访问频率。

         MySQL主从复制是将一个Mysql数据库服务器中的数据复制到多个从服务器中,用从服务器分担主服务器的读取频率。一个主服务器可以有多个从服务器,一个从服务器只能有一个主服务器即一主一从或一主多从的结构,但是在mysql5.7已经可以支持多主一从。

       MySQL主从复制原理

         从上图可以看出,mysql主从复制涉及到3个线程(主服务器的log dump thread,从服务器的IOthread 和SQL thread )和2个日志(主服务器的binlog和从服务器的relaylog)。

        log dump thread

        从服务器连接主节点时,主服务器会为每个从服务器创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时会对主服务器上的binlog加锁,当读取完成后锁则会释放。

        IO thread

       从服务器的I/O线程是用来连接主服务器,I/O线程读取到主节点binlog dump 进程发来的bin log内容并保存在从服务器的relaylog中。

        SQL thread

        SQL线程负责读取relaylog中的内容并解析重做到从库中。

        主从复制的过程

        1. 客户端发起数据更新时,主服务器在事务prepare时讲数据更新写入到binlog日志中。

        2. 从服务器会通过IO线程通过主服务器的log dump线程读取到的binlog内容(以事件的方式返回)写入到从服务器的relaylog中。

        3. 从服务器的SQL线程读取到relay log的事件进行重做到从库中。从数据库的数据则复制完成。

     MySQL主从复制方式

      异步复制

        主库更新数据写入到binlog日志后,主库事务正常提交完成。从库会轮询查看主库的binlog事件,当binlog存在事件变化时则会执行复制操作。从库的复制和主库之间是异步执行的。

      半同步复制

        mysql5.5之前都是异步复制从mysql5.5开始才支持半同步复制,默认配置下是关闭的需要人工开启。

        半同步复制是主库在提交后,执行事务提交的线程将一直等待,直到至少有一个半同步从库确认已将接收到所有事件中继日志(relay log)并刷新到磁盘后,才对接收到事务的事件进行确认。

        注意:

        主库和从库都要启用半同步复制才会进行半同步复制功能,否则主库会还原为默认的异步复制。

        当主库等待超时时,也会还原为默认的异步复制。当至少有一个从库赶上时,主库会恢复到半同步复制。

       并行复制

        MySQL5.6的并行复制

        MySQL5.6的并行复制只是基于库的并行复制。不同库之间的复制是并行的不受影响。从库会根据不同的库开启不同的SQL线程进行replay操作,如果只有一个库则并行复制就没有意义。开启并行复制需要设置参数 slave_parallel_works 数值代表开启SQL线程的数量。

        MySQL5.7的并行复制

        MySQL5.7对并行复制进行了升级,将并行复制的颗粒度最小化到一个事务组。它是基于组提交的并行复制MTS(enhanced multi-threaded slave)。需要设置参数 slave_parallel_type 为LOGICAL_CLOCK。

      总结:

        MySQL的主从复制主要是通过获取主库的binlog到从库的replaylog中然后再重做到从库中。做主从时主库和从库最好是版本一致,如果版本不一致可能出现数据同步失败的问题。如果是对时效性不强的场景下可以使用异步复制,半同步复制由于需要等待从库replaylog写入确认因此会有一定的性能问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/9355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

下载离线地图地形数据库(3D离线地图开发)

下载离线地图地形数据库(3D离线地图开发) 发布时间:2020-03-03 版权: 离线地形:是用来表示地表高低起伏的一种三维地形数据库,有了这个地形数据,才能真实的反应出地球表面的高低起伏状态&#…

Docker安装Nginx并修改Nginx配置文件

一、Docker安装Nginx 1、首先在虚拟机上要确保你已经启动了docker。 2、其次登录DockerHub官网,然后搜索nginx,,然后在虚拟机里面输入docker pull nginx,就可以下载nginx的镜像了。 3、注意下载完以后要使用docker images指令查看一下是否下载成功了&am…

市场调查与分析[市场调查员][抽样技术方案][抽样方法][F检验]

正大杯比赛最新参考题(预测含必考) - 知乎 目录 A市场调查员 B抽样技术方案 一、调查目的、范围、对象及内容 二、抽样方案设计的原则与特点 三、样本区、县的选取 3.1全国区、县的调查总体 3.2区、县分层 (1)地域 (2)区、县类别 四、各阶…

怎么复习信息系统项目管理师?

废话不多说~ 正文开始~ 一、备考前期准备 1、合理规划时间,把握备考节奏 大家在网上经常会看到,考软考高级很简单,说是1个月就可以。 确实现实中存在大神,况且运气还占据一定比例,人家能上,咱真的不一…

鼎医信息加入PolarDB开源数据库社区

近日,上海鼎医信息技术有限公司签署阿里巴巴开源CLA(Contribution License Agreement, 贡献许可协议), 正式与阿里云PolarDB 开源数据库社区牵手。 过去 5 年,阿里云针对 PolarDB 进行了诸多创新,通过采用存储计算分离、软硬一体化设计&#…

SREWorks v1.3 版本发布 | 插件机制发布

在v1.2版本发布之后,SREWorks团队着手开始了v1.3版本的迭代。此次v1.3版本融合了较多用户需求,以及对底座机制进行了较大调整和优化,故发版时间长了很多。下面让我们切入正题,来看看这些大变化究竟是哪些? 1. 插件机制…

Web3——开发第一个智能合约

学习写第一个智能合约,下面连接是集成开发环境 https://github.com/smartcontractkit/full-blockchain-solidity-course-js#lesson-2-welcome-to-remix-simple-storage 点击 “Remix” 来到Remix IDE,这就是我们要写代码的地方,集成开发环境…

一文入门mybatis-plus

mybatis-plus mybatis-plus官网 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生. 可以说呢,在MP基础上还可…

一次想不到的 Bootstrap 类加载器带来的 Native 内存泄露分析

最近我们线上有同学反馈,java 服务在接入了支持预发的 javaagent 以后会出现缓存的内存增长,去掉 agent 启动以后内存增长正常。于是分析了一下这个问题,写了这篇文章。 备注:JVM 堆内存最大 1000M 主要会涉及下面这些内容&#…

防火墙基础技术

目录 一、内容概述 二、防火墙概述 防火墙的应用 防火墙的本质 防火墙的发展历程 防火墙特征 防火墙分类 包过滤防火墙: 包过滤防火墙的缺点: 代理防火墙: 代理防火墙的缺点: 状态检测防火墙: 状态检测防火…

【Linux修炼手册:基本指令(下)】

目录 1 man指令(重要) 2 more指令 3 less指令(重要) 4 head指令和tail指令 5 时间相关的指令 6 Cal指令 7 find指令:(灰常重要) -name 8 grep指令 9 zip/unzip指令 10 其他常见命令 1…

SiPM使用总结

1、SiPM的电子模型 首先我们来看一下二极管的雪崩电子模型,电子模型和雪崩时的电流波形如下图所示, 电流上升的快慢是由电容的充放电速度决定的,充电的时常数TdRS*Cd,放电的时常数 TqRq*Cd,这里Rq>>Rs&#xf…

《Hidden Markov Map Matching Through Noise and Sparseness》读书笔记

摘要 Our test shows how the algorithm breaks down as the sampling rate of the GPS is reduced. We also test the effect of increasing amounts of additional measurement noise in order to assess how well our algorithm could deal with the inaccuracies of other…

甘露糖修饰阿奇霉素|mannose-Azithromycin|甘露糖-聚乙二醇-阿奇霉素

甘露糖修饰阿奇霉素|mannose-Azithromycin|甘露糖-聚乙二醇-阿奇霉素 甘露糖修饰阿奇霉素,溶于大部分有机溶剂,如:DCM、DMF、DMSO、THF等等。在水中有很好的溶解性,取用一定要干燥,避免频繁的溶解和冻,提供…

2022年11月华南师范大学自考本科计算机信息管理系统加考实践题目

《 管理信息系统 》课程试卷 答卷提交说明: 在access环境下填写SQL命令完成以下实践的题目,并返回执行结果的截图,答卷的答题格式如下,包括三部分:题目,SQL文本代码,代码运行截图&#xf…

负载均衡架构

整体架构 设计关键点 4级负载架构 3级负载架构 2级负载架构 技术剖析 DNS 应用 地理位置和机房级别的负载均衡 优点 标准协议 缺点 能力有限,不够灵活DNS劫持DNS缓存 HTTP-DNS 应用场景 App、客户端 优缺点 可以根据业务和团队技术灵活定制非标协议、不通…

企业微信汇报怎么定时提醒?如何导出?

汇报工作的重要性在哪里? 作为职场人,能够准确及时的和自己的领导汇报自己的工作,不仅仅是我们工作的一部分,也是我们和领导工作沟通的一种十分重要的形式。汇报工作的重要性主要体现在: ● 可以让你的领导知道你日常…

算法刷题日志——贪心

文章目录分发糖果根据身高重建队列分发糖果 相邻的学生中,评分高的学生必须获得更多的糖果 ,所以需要分别从左往右和从右往左遍历,然后取两次遍历结果的最大值就是最少糖果的数目了。 class Solution {public int candy(int[] ratings) {int[…

xgplayer西瓜视频插件引用后因视频格式引起问题?

起因是我的医疗公众号项目为了应对新需求引入了西瓜视频插件,但后台配置视频文件后有的可以正常展示,有的却是黑屏。我这边的安卓和ios端app都嵌套了我写的h5页面。 初步调查: 个别课程在手机上看着确实不能播放,在电脑上播放是…

大麦 Android 选座场景性能优化全解析

作者:于世雷(蓝彻) 通常情况下移动端APP由于受到设备性能所限一般较少有场景会处理超量数据,更多的是将复杂数据处理交付给服务端。本质上降低终端强数据处理是很有必要的,降低CPU使用率、减少内存抖动可以大幅提升APP使用体验。但是有时移动…