mysql 从库 问题_一篇文章帮你解决Mysql 中主从库不同步的问题

写这篇文章是因为之前有一次删库操作,需要进行批量删除数据,当时没有控制好删除速度,导致产生了主从延迟,出现了一点小事故。

今天我们就来看看为什么会产生主从延迟以及主从延迟如何处理等相关问题。

坐好了,准备发车!

图注:思维导图

主从常见架构

随着日益增长的访问量,单台数据库的应接能力已经捉襟见肘。因此采用主库写数据,从库读数据这种将读写分离开的主从架构便随之衍生了出来。

在生产环境中,常见的主从架构有很多种,在这里给大家介绍几种比较常见的架构模式。

主从复制原理

了解了主从的基本架构及相关配置后,下面就要进入正题了。

对于主从来说,通常的操作是主库用来写入数据,从库用来读取数据。这样的好处是通过将读写压力分散开,避免了所有的请求都打在主库上。同时通过从库进行水平扩展使系统的伸缩性及负载能力也得到了很大的提升。

但是问题就来了,读从库时的数据要与主库保持一致,那就需要主库的数据在写入后同步到从库中。如何保持主库与从库的数据一致性,主库又是通过什么样的方式将数据实时同步到从库的?

基本原理

Mysql 中主从复制时有两个很重要的日志文件:binlog(二进制日志文件)

relay log(中继日志文件)

在主从同步的过程中,主库会将所有的操作事件记录在 binlog 中,从库通过开启一个 I/O 线程保持与主库的通信,并在一定时间间隔内探测 binlog 日志文件是否发生改变。如果 binlog 日志发生了变化,主库生成一个 binlog dump 线程向从库 I/O 线程传送 binlog。从库上的 I/O 线程将 binlog 复制到自己的 relay log 中。最终由从库中的 SQL 线程读取 relay log 中的事件重放到从库上。

主从延迟原因

上面的流程我们已经知道了主从复制的相关过程了,但是主库有更新就会同步从库,那为什么会出现主从延迟的情况呢?

随机重放

Mysql 主库中写 binlog 的操作是顺序写的,之前我们提到过,磁盘的顺序读写速度是很快的。同样的,从库中的 I/O 线程操作日志的速度效率也是很高的。但是别忘了,还有一个 SQL 线程来进行数据重放,而重放的过程是随机写盘的。到这里你应该就明白了吧,某一时刻 relay log 里的数据来不及重放进从库,就会产生主从延迟的情况。

主库并发高

知道了从库中 SQL 线程的重放情况,对于主库并发高导致主从延迟肯定就不难理解了。某一时刻,大量写请求打到主库上,意味着要不断对 binlog 进行写入,此时从库中的 SQL 线程就会应接不暇,自然会产生主从延迟。

锁等待

对于 SQL 单线程来说,当遇到阻塞时就会一直等待,直到执行成功才会继续进行。如果某一时刻从库因为查询产生了锁等待的情况,此时只有当前的操作执行完成后才会进行下面的操作,同理也就产生了主从延迟的情况。

主从延迟处理

知道了主从延迟的原因,接下来我们看看如何来进行处理。

并行复制

既然 SQL 单线程进行重放时速度有限,那么能不能采用多线程的方式来进行重放呢?MySQL 5.6 版本后,提供了一种并行复制的方式,通过将 SQL 线程转换为多个 work 线程来进行重放,这样就解决了主从延迟的问题。

降低主库并发

你可能会说了,我现在用的低版本的数据库,也没法升版本啊,那我怎么整。对于主库并发高的情况,这种方式你只能通过控制并发来解决延迟了,多用用 Redis。

读主库

这种情况你肯定不陌生,对于一些实时性要求比较高的数据,你总不能读从库去拿吧,万一延迟个大半天,你不得贡献自己的年终奖啊。

总结

主从复制原理主从复制中有两个很重要的日志文件,binlog和relay log,分别位于主库与从库中。其中 binlog 是主从复制的基础,通过将操作事件写入 binlog 通过 I/O 线程传送至从库进行同步。

主从延迟原因从库中 SQL 线程重放的过程是随机写盘的,并且 SQL 线程是单线程的,因此数据来不及重放的话就会导致主从延迟。

主库并发高会导致写操作不断写入 binlog,对于 SQL 线程说可能会应接不暇,也会产生主从延迟。

重放过程中如果遇到锁等待也是产生延迟的原因之一。

主从延迟处理MySQL 5.6版本以后通过并行复制的方式来解决 SQL 单线程产生的主从延迟问题。对于低版本来说,可以通过降低主库的并发来解决。如果对数据实时性要求比较严格的话,可以通过读主库来达到目的。

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

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

相关文章

深度学习代码练习

代码下载地址:https://github.com/daijifeng001/R-FCN 对应论文:Object Detection via Region-based Fully Convolutional Networks 1、代码里面给的数据库下载链接失效,需要去代码下载主页最下方给定的资源区下载。 2、按照要求一步一步运行…

rabbitmq 不同的消费者消费同一个队列_消息队列王者--rabbitMQ深入理解--工作过程、消费模式、持久化等...

概述之前已经对rabbitMQ的一些基本概念做了介绍和不同MQ之间的比较,今天主要对rabbitMQ的一些方面做扩展。01消息队列Broker:简单来说就是消息队列服务器实体。Exchange:消息交换机,它指定消息按什么规则,路由到哪个队…

BZOJ 2763: [JLOI2011]飞行路线 spfa dp

题目链接&#xff1a; http://www.lydsy.com/JudgeOnline/problem.php?id2763 题解&#xff1a; d[x][kk]表示从s到x用了kk次免费机会的最少花费。 代码&#xff1a; #include<iostream> #include<cstdio> #include<algorithm> #include<queue> #incl…

mysql快速删除大表数据部分数据_mysql删除大表的部分数据

mysql删除大表的部分数据好久没写博客。最近项目要上线。下班时间还得陪着老妈。实在没时间更新。今天有人提了一个问题&#xff0c; www.2cto.com一个表有1亿6000万的数据&#xff0c;有一个自增ID。最大值就是1亿6000万&#xff0c;需要删除大于250万以后的数据&#xff0c;…

读“硬件抽象层:HAL”的心得

1 HAL是建立在Linux驱动上的一套程序库&#xff0c;并不属于Linux内核&#xff0c;而是属于Linux内核层上的应用层。它的目的就是保护“私人财产”&#xff0c;避免应用程序直接访问Linux驱动。 2在Android系统中使用Linux驱动有两种方式。一种就是通过传统的方式直接与Linux交…

mysql所有版本介绍_mysql各个版本介绍

一、版本说明&#xff1a;MYSQL自从被ORCLE收购后&#xff0c;软件的版本也ORACLE化&#xff0c;整体的感觉就是服务的费用提高了很多&#xff0c;整体的软件的Supports也有相应的提高&#xff1b;MYSQL根据软件的功能可以分成三个版本&#xff1a;社区版、企业版、集群版。社区…

安装jdk源码

step1:打开选择Window->Preference step2:选择Java->Installed JREs step3:选中你所安装的jre&#xff0c;点击Edit&#xff0c;进入Edit JRE,如下所示 step4:选中rt.jar,点击Source Attachment step5:在对话框中&#xff0c;点击External Folder&#xff0c;选择你所安装…

d3js mysql_D3js技术文档 可视化展现

转载请注明http://www.cnblogs.com/juandx/articles/3885220.htmlD3js技术文档概述D3 allows you to bind arbitrary data to a Document Object Model (DOM), and then apply data-driven transformations to the document. For example, you can use D3 to generate an HTML …

text-indent的用法

一、text-indent应用于块级元素 <style type"text/css">*{margin:0;padding:0;}body{font-size:12px;color:#333;}p{text-indent:2em;background-color:#f00;color:#fff;}</style> </head> <body><p>携程旅行网携程旅行网携程旅行网携…

kettle连接mysql教程_kettle 连接 mysql8

kettle默认使用的是org.gjt.mm.mysql.Driver&#xff0c;而mysql 8.0以上connector已经不再支持这个包名;即使将mysql-connector-java-8.0.xx.jar包拷贝到data-integration/lib目录下&#xff0c;还是报错找不到驱动;所以要用jndi方法配置kettle&#xff0c;用com.mysql.cj.jdb…

小白学数据分析--留存率使用的窘境

小白学数据分析--留存率使用的窘境 随着移动游戏整体的火热&#xff0c;现在看到太多的数据&#xff0c;太多信息&#xff0c;很多时候我们仰慕和钦佩别人的成功&#xff0c;我们总是把这个行业达成所谓共识的一些数据来出来说明问题。因为我们笃信数据是有力的证据&#xff0c…

python嵩天第七章课后题答案_python语言程序设计嵩天第七章答案

参考答案如下直流负反馈可以稳定电路的静态工作点&#xff0c;嵩天交流负反馈可以改善放大器的动态性能。餐厅环境准备包括&#xff1a;程序( )、背景音乐、通风及温度的准备。设计下列代码的输出结果是______var a \abcd45 钢锻造后出现带状组织&#xff0c;章答在淬火前需要…

mongodb的返回(2)

限制条件 - 结果集转&#xff08;转汇智网&#xff09; 很多时候查询返回的结果集并不完全是你想要的&#xff0c;或许你只需要它们中间的一部分&#xff0c;这个时候我们可以通过条件来限制结果集返回的内容。 limit方法&#xff1a;设定返回结果集中的最大文档数量。 语法&am…

用groovy采集网页数据

首先&#xff0c;用 http://groovyconsole.appspot.com/ 测试下面的代码&#xff0c;发现引用总是失败. 下载了GGTS&#xff1a; https://spring.io/tools/ggts 测试成功&#xff1a; Grapes( Grab(grouporg.ccil.cowan.tagsoup, moduletagsoup, version1.2) )import org.ccil…

vue 时间回显 格式化_VSCode 开发Vue必备插件

1。Vetur —— 语法高亮、智能感知、Emmet等包含格式化功能&#xff0c; AltShiftF &#xff08;格式化全文&#xff09;&#xff0c;CtrlK CtrlF&#xff08;格式化选中代码&#xff0c;两个Ctrl需要同时按着&#xff09;2。EsLint —— 语法纠错3。Debugger for Chrome —— …

angluar.js 学习

地址&#xff1a; http://www.cnblogs.com/freefed/p/4835427.html 如何搭建一个angularJS应用 http://www.cnblogs.com/Cuiy/p/4285520.html 初识Angular.js https://github.com/xufei/blog/issues xufei的博客 指令&#xff1a; ng-hrefng-srcng-disabled ng-disabled"…

公司消费一卡通“变法”记

一卡通在每家公司都存在&#xff0c;不仅含考勤机&#xff0c;还会有门禁&#xff0c;订餐&#xff0c;食堂消费等。我们公司采用的是厦门舒特科技的一卡通系统&#xff0c;前后用了好几年了。 在我之前&#xff0c;一卡通的功能主要启用了考勤和消费这两大模块。 1、考勤机是每…

mysql添加分区健_MySQL添加分区添加索引

添加新用户 今天在为mysql添加新用户时&#xff0c;找到下面这条指令&#xff1a; insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); 然后退出 mysql>\q 重新登录 $mysql -u …

win7 mysql添加到服务_MySQL服务添加到Windows系统服务中

MySQL的安装配置(win7 64-bit)转&#xff0c;整理。MySQL 版本是mysql-noinstall-5.1.66-winx64.zip(免安装版)mysql-workbench-gpl-5.2.44-win32.msimysql-connector-java-5.1.22mysql 配置数据库编码为utf-8(my.ini中指定).1 安装先将mysql-noinstall-5.1.66-winx64.zip解压缩…

OA,ERP等源码一部分演示

更多源码http://www.pssdss.com QQ:11851298 功能强大的JAVA开发的ERP源码http://cx050027.pssdss.com:8080/ 用户名pssdss 密码pssdss 超强大仿微盟JAVA开发微信公众平台源码JAVA源码,有代理功能http://www.pssdss.com/d329.html 大型汽车4S综合连锁服务管理系统源码 汽车美…