mysql主从延时这么长_MySQL主从延迟问题解决

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

坐好了,准备发车!

8e75fb6d7d3cef7d3fab9390f9b39bfd.png

主从常见架构

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

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

84a3bda9c3591c6e6a7fd57bf294d428.png

e85bc8058db9b06c061c583e962bd00a.png

主从复制原理

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

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

b3b7886ad5eab10133e79a071713bc11.png

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

基本原理

Mysql 中主从复制时有两个很重要的日志文件:

binlog(二进制日志文件)

relay log(中继日志文件)

cc22585149d59d6484da34609dd6329d.png

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

42765b651ef7d956efdcec3554ad2583.png

主从延迟原因

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

随机重放

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

主库并发高

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

锁等待

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

主从延迟处理

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

并行复制

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

b72e11675091710b0a2376e438d2c50b.png

降低主库并发

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

读主库

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

总结

主从复制原理

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

主从延迟原因

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

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

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

主从延迟处理

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

以上就是MySQL主从延迟问题解决的详细内容,更多关于MySQL主从延迟的资料请关注云海天教程其它相关文章!

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

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

相关文章

【渝粤教育】广东开放大学 跨文化商务沟通 形成性考核 (42)

选择题 题目: The “OK” sign means in France that you think something is _________. 答案:看左侧 题目: Many words from Chinese and English are different in both the denotational meanings and connotational meanings. Which o…

python的zip方法_python zip()函数使用方法解析

这篇文章主要介绍了python zip()函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下参数iterable为可迭代的对象,并且可以有多个参数。该函数返回一个以元组为元素的列表,其…

aes256加密java_使用Java和JCEKS进行AES-256加密

aes256加密java总览 由于最近爱德华斯诺登 ( Edward Snowden)发布了文件,以及针对JC Penny , Sony和Target等在线商业商店的黑客攻击激增,安全性已成为近年来讨论的重要话题。 尽管本文不会为您提供帮助防止使用非法来…

【渝粤教育】电大中专Windows操作系统作业 题库

学习好Windows10应用这门课程,应该()。 A重视理论学习 B重视上机操作,多练多试 C只看不练 D可以随便学习一下 正确 正确答案:左边查询 学生答案:B 2在使用Windows时遇到困难,(&#…

高可用mysql笔记_MySQL笔记-高可用方案

MySQL笔记-高可用方案一、概述MYSQL高可用方案有多种,本次针对其中部分方案进行实践。包括主从,双主,myqlkeepalived, mysqlmycatkeepalived。纸上得来终觉浅,亲自实验一下。环境信息注意两台机器时间需要保持同步,网络…

【渝粤教育】电大中专办公设备使用与维护 (2)_1作业 题库

1以下哪个不是现代办公硬件需求的主要依赖()。 A扫描仪 B计算机 C办公桌 D打印机 错误 正确答案:左边查询 学生答案:B 2现代办公设备可分为计算机、通信()三大类。 A电子工具 B办公机械 C路由器 D碎纸机 错…

无服务器冷启动不是问题-这就是为什么(对于大多数应用程序)

从无服务器开始时,您很快就会学习/听到有关函数冷启动的信息(我相信无服务器云功能 API )。 首次调用云功能时或长时间不调用后会发生冷启动。 基本上,服务器(是的,有服务器!)需要一…

【渝粤教育】电大中专学前儿童健康教育作业 题库

1健康的定义是()年,世界卫生组织提出的。 A1945 B1948 C1955 D1958 错误 正确答案:左边查询 学生答案:A 2健康不仅仅是没有疾病或虚弱,而是包括身体、心理和()方面的完好状态。 A精神 B躯体 C社会 D道德 错误 正确答案&#xff1a…

python学习与数据挖掘_Python学习之数据挖掘(三)

Pandas基础处理Pandas是什么?为什么用?核心数据结构DataFramePanelSeries基本操作运算画图文件的读取与存储高级处理4.1Pandas介绍4.1.1 Pandas介绍 - 数据处理工具panel data analysispanel面板数据 - 计量经济学 三维数据4.1.2 为什么使用Pandas便捷…

【渝粤教育】电大中专学前儿童科学教育 (14)作业 题库

1学前儿童科学教育的学习重点是() A学前儿童科学教育的内涵 B学前儿童科学教育的概念 C科学的概念 D技术的概念 错误 正确答案:左边查询 学生答案:A 2学前儿童科学教育的学习难点是() A学前儿童科学教育的内涵 B学前儿童科学教育在儿童发展中的意义 C学前…

生成器作为(快速失败)状态机

这个想法是几周前在设计“ Generator”类时想到的,该类必须将输入发送给封装的Writer 。 实际上,它是Builder模式。 但是,规则有些复杂,用户必须以某种方式调用add...()方法,才能正确生成输出。 不用说,我…

【渝粤教育】电大中专市场营销管理20作业 题库

1.市场营销没有宏观市场营销和微观市场营销之分。该说法:( ) A.错误 B.正确 错误 正确答案:左边查询 学生答案:B 2.战略选择的陷阱有:盲目跟随、墨守成规、军备竞赛、多方出击、孤注一掷、本末倒置。该说法…

源码包编译安装python_Python3.7源码包编译安装-Go语言中文社区

环境:[rootlocalhost python3]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core)[rootlocalhost python3]#1、下载Python方式一:方式二:进入https://www.python.org/ftp/python/ 这里存放着所有版本的Python源码。往下拉看到最…

【渝粤教育】电大中专建筑力学 (4)作业 题库

1.下列说法不正确的是()。 A.力偶在任何坐标轴上的投形恒为零 B.力可以平移到刚体内的任意一点 C.力系的合力在某一轴上的投形等于各分力在同一轴上投形的代数和 D.力使物体绕某一点转动的效应取决于力的大小和力作用线到该点的垂直距离 正确 正确答案&a…

java criteria and_criteria用法

Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,Criteria Query可以看作是传统SQL的对象化表示,如:Java代码Criteria criteria session.createCriteria(User.class);criteria.add(Expression.eq(&q…

【渝粤教育】电大中专新媒体营销实务 (4)作业 题库

1.( )对新媒体的定义为:“以数字信息技术为基础,以互动传播为特点,具有创新形态的媒体。” A.新传媒产业联盟秘书长王斌 B.联合国教科文组织 C.华纳兄弟总裁施瓦茨威格 正确 正确答案:左边查询 学生答案&am…

服务网格:Istio和AWS App Mesh

本周在AWS re:Invent上的重大公告之一是AWS App Mesh 。 在谈论它之前,让我们先看一下网格到底是什么…… 什么是服务网格? 服务网格是微服务体系结构的基础结构层。 它处理服务之间的通信问题,使该通信更加可见(或“…

【渝粤教育】电大中专消费者心理学_1作业 题库

1.在西方,早期思想家也有论及消费时令和消费季节的朴素思想。该说法() A.错误 B.正确 正确 正确答案:左边查询 学生答案:A 2.体系凝构阶段大致自20世纪70年代延至20世纪末或21世纪初。该说法() …

java按键发出声音代码_怎么在java中给按钮添加声音?

可以加入GTM时间,代码如下:public class ShowCurrentTime {public static void main(String args[]){//Obtain the total milliseconds since midnight,Jan 1,1970long totalMillisecondsSystem.currentTimeMillis();//Obtain the total seconds since i…

Spring字段依赖注入示例

学习如何编写Spring Field Injection示例 。 字段注入是Spring框架 依赖注入的一种 。 在本教程中,我们将编写几个类,并看一看现场注入工程。 有关Spring依赖注入的更多信息: Spring Setter依赖注入示例 Spring构造函数依赖注入示例 Spri…