返回顶部
首页 > 资讯 > 数据库 >如何解决MySQL中主库跑太快从库追不上的问题
  • 269
分享到

如何解决MySQL中主库跑太快从库追不上的问题

2024-04-02 19:04:59 269人浏览 安东尼
摘要

这篇文章主要介绍“如何解决Mysql中主库跑太快从库追不上的问题”,在日常操作中,相信很多人在如何解决mysql中主库跑太快从库追不上的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

这篇文章主要介绍“如何解决Mysql中主库跑太快从库追不上的问题”,在日常操作中,相信很多人在如何解决mysql中主库跑太快从库追不上的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决Mysql中主库跑太快从库追不上的问题”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

如何解决MySQL中主库跑太快从库追不上的问题

- 思维导图 -

主从常见架构

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

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

如何解决MySQL中主库跑太快从库追不上的问题

如何解决MySQL中主库跑太快从库追不上的问题

主从复制原理

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

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

如何解决MySQL中主库跑太快从库追不上的问题

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

基本原理

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

  •  binlog(二进制日志文件)

  •  relay log(中继日志文件)

如何解决MySQL中主库跑太快从库追不上的问题

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

如何解决MySQL中主库跑太快从库追不上的问题

主从延迟原因

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

随机重放

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

主库并发

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

等待

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

主从延迟处理

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

并行复制

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

如何解决MySQL中主库跑太快从库追不上的问题

降低主库并发

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

读主库

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

总结

主从复制原理

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

主从延迟原因

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

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

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

主从延迟处理

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

到此,关于“如何解决MySQL中主库跑太快从库追不上的问题”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: 如何解决MySQL中主库跑太快从库追不上的问题

本文链接: https://lsjlt.com/news/61579.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何解决MySQL中主库跑太快从库追不上的问题
    这篇文章主要介绍“如何解决MySQL中主库跑太快从库追不上的问题”,在日常操作中,相信很多人在如何解决MySQL中主库跑太快从库追不上的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • MySQL主从数据库不一致如何解决
    MySQL主从数据库不一致如何解决,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。先上Master库:mysql>show...
    99+
    2024-04-02
  • 如何解决mysql导入数据库文件太大的问题
    这篇文章给大家分享的是有关如何解决mysql导入数据库文件太大的问题的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。mysql导入数据库的文件太大的解决办法:首先打开【php.in...
    99+
    2024-04-02
  • redis 数据库主从不一致问题解决方案
     在聊数据库与缓存一致性问题之前,先聊聊数据库主库与从库的一致性问题。   问:常见的数据库集群架构如何? 答:一主多从,主从同步,读写分离。 如上图: (1)一个主库提供写服务 (2)多个从库提供读服务,可以增加从库提升读性能 (3)主...
    99+
    2020-05-07
    redis 数据库主从不一致问题解决方案
  • mysql如何解决主从延迟问题
    mysql解决主从延迟问题的方法:在命令行设置参数slave_parallel_workers的值大于0和slave_parallel_type='LOGICAL_CLOCK'。选择合适的分库、分表策略,避免单表单库过大。避免被无用的I/O...
    99+
    2024-04-02
  • 应该如何解决mysql数据库主从不同步
    本篇文章给大家主要讲的是关于应该如何解决mysql数据库主从不同步的内容,感兴趣的话就一起来看看这篇文章吧,相信看完应该如何解决mysql数据库主从不同步对大家多少有点参考价值吧。今天发现Mysql的主从数...
    99+
    2024-04-02
  • 怎么解决Mysql主从不同步问题的
    本篇内容主要讲解“怎么解决Mysql主从不同步问题的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决Mysql主从不同步问题的”吧!由于各种原因,mysq...
    99+
    2024-04-02
  • MySQL主从数据库同步延迟问题怎么解决
    这篇文章主要讲解了“MySQL主从数据库同步延迟问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL主从数据库同步延迟问题怎么解决”吧!My...
    99+
    2024-04-02
  • MySQL中主从不一致如何解决
    MySQL中主从不一致如何解决,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、MySQL主从不同步情况1.1 网络的延迟由于mysql主从复...
    99+
    2024-04-02
  • MySQL中主从不同步如何解决
    本篇文章给大家分享的是有关MySQL中主从不同步如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。- 思维导图 -主从常见架构随着日益增长...
    99+
    2024-04-02
  • 怎么解决MySQL数据库不允许从远程访问的问题
    这篇文章主要介绍“怎么解决MySQL数据库不允许从远程访问的问题”,在日常操作中,相信很多人在怎么解决MySQL数据库不允许从远程访问的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • windows上mysql如何进行主从数据库搭建及问题是什么
    今天就跟大家聊聊有关windows上mysql如何进行主从数据库搭建及问题是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 根据前篇web项目...
    99+
    2024-04-02
  • 如何解决mysql不小心删除数据库的问题
    这篇文章主要介绍如何解决mysql不小心删除数据库的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql不小心删除数据库的解决办法:首先打开mysql的binlog功能;然后...
    99+
    2024-04-02
  • 如何解决mysql数据库服务找不到的问题
    这篇文章主要介绍了如何解决mysql数据库服务找不到的问题,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql数据库服务找不到的解决办法:首...
    99+
    2024-04-02
  • 如何解决jsp连接不了mysql数据库的问题
    这篇文章主要讲解了“如何解决jsp连接不了mysql数据库的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决jsp连接不了mysql数据库的问题”...
    99+
    2024-04-02
  • redis主从数据不一致问题如何解决
    使用Redis的复制(Replication)功能来保证数据一致性。可以将主节点写入的数据同步到从节点,确保从节点的数据与主节点...
    99+
    2024-04-09
    redis
  • 如何解决mysql主从复制中产生了锁的问题
    这篇文章给大家分享的是有关如何解决mysql主从复制中产生了锁的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一套主主复制的mysql库产生了死锁,导致主从同步出现问题, ...
    99+
    2024-04-02
  • 如何解决mysql数据库中1045错误的问题
    这篇文章将为大家详细讲解有关如何解决mysql数据库中1045错误的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql数据库中1045错误的解决方法:首先找到M...
    99+
    2024-04-02
  • 如何解决线上数据库删了的问题
    本篇内容主要讲解“如何解决线上数据库删了的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决线上数据库删了的问题”吧!事件背景MySQL数据库每日零点自...
    99+
    2024-04-02
  • thinkphp连不上mysql数据库如何解决
    本篇内容介绍了“thinkphp连不上mysql数据库如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步,检查配置文件连接 MyS...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作