广告
返回顶部
首页 > 资讯 > 数据库 >主从同步的延迟问题、原因及解决方案
  • 904
分享到

主从同步的延迟问题、原因及解决方案

数据库服务器mysqlPoweredby金山文档 2023-08-31 20:08:40 904人浏览 独家记忆
摘要

主从同步的延迟问题、原因及解决方案 Mysql的主从同步在实际使用过程中会有从库延迟的问题,那么为什么会有这种问题呢? 如何避免这种问题呢? 情况一: 从服务器配置过低导致延迟 这类延迟场景的出现往往是主节点拥有较大规格的配置,

主从同步的延迟问题、原因及解决方案

Mysql的主从同步在实际使用过程中会有从库延迟的问题,那么为什么会有这种问题呢? 如何避免这种问题呢?

情况一: 从服务器配置过低导致延迟

这类延迟场景的出现往往是主节点拥有较大规格的配置,而只读节点却购买了一个最小规格的配置

只读节点的数据为了和主节点保持同步,采用了mysql binlog复制技术,由一个io线程和一个sql线程来完成,IO线程负责将主库的binlog拉取到只读节点,SQL线程负责消费这些binlog日志,这两个线程会消耗掉只读节点的IO资源,所以当只读节点IOPS配置不够的时候,则会导致只读节点的数据出现延迟

解决办法: 升级从服务器的配置,让只读节点的配置大于或者等于主节点的配置即可

情况二: 主库的QPS过高导致只读节点延迟

由于只读节点与主库的同步采用的是单线程同步,而主库的压力是并发多线程写入,这样势必会导致只读节点的数据延迟

解决办法: 开启只读节点的并行复制 (mysql5.6.3以后支持多线程复制)

--------------------------------------------------------------------------------------------------------

拓展:

在MySQL5.6中,引入了并发复制,这个并发复制是数据库级别的,这意味着一个SQL线程可以处理一个数据库的连续事务,而不用等待其它数据库完成。

这个版本的并发复制,可以理解成一个数据库一个SQL线程。

其与并发有关的参数如下:

slave_parallel_workers #worker 线程个数

slave-checkpoint-group #隔多少个事务做一次

checkpointslave-checkpoint-period #隔多长时间做一次

checkpointslave-pending-jobs-size-max #分发给worker的、处于等待状态的event的大小上限

MySQL5.6基于DATABASE级别的并发复制可以解决业务表放在不同的database下同步延迟的问题

但是在实际生产中大部分表还是放在同一个库中的,这种情况即使设置slave_parallel_workers大于0,也无法进行并发。在高并发的情况下,依然会造成主从复制延迟.

MySQL 5.7版本才真正支持“真正”的并行复制功能.在MySQL5.7中,引入了新的并发复制方法,基于LOGICAL_CLOCK的并发复制,可以支持在一个database中,并发执行relaylog中的事务。

相同的二进制日志组在master上提交并行应用到slave节点上,没有跨数据库的限制,并且不需要把数据分割到多个数据库。

要实现这个功能,需要在master节点标记binlog中提交的事务哪些是可以并发执行,虽然的MySQL5.6中已经引入binarylog group commit,但是没有将可并发的事务标记出来。

在MySQL5.7中,已经解决了主从复制延迟的问题,具体配置参数如下:

slave-parallel-type=LOGICAL_CLOCK

slave-parallel-workers=16

master_info_repository=TABLE

relay_log_info_repository=TABLE

relay_log_recovery=ON

----------------------------------------------------------------------------------------------------

情况三: 主库的DDL语句导致只读节点延迟

可能1:只读节点与主库的DDL同步是串行进行的,如果DDL操作在主库执行时间很长,那么同样在备库也会消耗同样的时间.

比如在主库对一张500W的表添加一个字段耗费了10分钟,那么在只读节点上也同样会耗费10分钟,所以只读节点会延迟600S

可能2:只读节点上有一个执行时间非常长的的查询正在执行,那么这个查询会堵塞来自主库的DDL,读节点表被,直到查询结束为止,进而导致了只读节点的数据延迟。

在只读节点上可以通过执行show processlist命令查看连接的状态处于:

Waiting for table metadata lock

解决办法: 对于可能1,只能说执行操作之前对可能带来的影响要有考量; 对于情况2,可以kill掉只读节点上的大查询进行,就可以恢复只读节点与主节点的数据同步

情况四: 主库执行大事务导致延迟

主库执行了一条insert … select非常大的插入操作,该操作产生了近几百G的binlog文件传输到只读节点,进而导致了只读节点出现应用binlog延迟。

解决办法: 将大事务拆分成为小事务进行排量提交,这样只读节点就可以迅速的完成事务的执行,不会造成数据的延迟。

情况五:无主键的表进行DML操作导致延迟

如:mysql> update test set kk='fafa01';

由于表中没有主键,所以导致了每一个事务条目的更新都是全表扫描,如果表中很很多的数据,则备库执行该更新的事务条目的时候,就会出现很多的全表扫描更新;

进一步说明就是,由于表中没有主键,在ROW模式下,每删一条数据都会做全表扫,也就是说一条delete,如果删了10条,会做10次全表扫,所以slave会一直卡住;

解决办法: 每张表在设计的时候都加上一个主键

----------------------------------------------------------------------------------------------------------

拓展:

主键对于innodb来说,是非常重要的,每张表的设计的时候,都应该把主键默认的加上,不管你需不需要他

主键的设计最好选择自增型的主键

自增主键的好处:

a.自增型主键以利于插入性能的提高;

b.自增型主键设计(int,bigint)可以降低二级索引的空间,提升二级索引的内存命中率;

c.自增型的主键可以减小page的碎片,提升空间和内存的使用

------------------------------------------------------------------------------------------------------

四.总结

为了避免MySQL主从复制延迟,我们可以从以下几方面入手:

1.数据库设置: 主从同步加速

1).sync_binlog在slave端设置为0

2).–log-slave-updates 从服务器从主服务器接收到的更新不记入它的二进制日志.

3).直接禁用slave端的binlog

4).slave端,如果使用的存储引擎是innodb,innodb_flush_log_at_trx_commit =2

2.架构方面:在架构上做优化,尽量让主库的DDL快速执行,尽量减轻数据库的压力

1).业务的持久化层的实现采用分库架构,mysql服务可平行扩展,分散压力.

2).单个库读写分离,一主多从,主写从读,分散压力.这样从库压力比主库高,保护主库.

3).服务的基础架构在业务和mysql之间加入memcache或者Redis的cache层.降低mysql的读压力.

4).不同业务的mysql物理上放在不同机器,分散压力.

3.硬件方面:使用比主库更好的硬件设备作为slave

1).采用好服务器,比如4u比2u性能明显好,2u比1u性能明显好.

2).存储用ssd或者盘阵或者san,提升随机写的性能.

3).主从间保证处在同一个交换机下面,并且是万兆环境.

来源地址:https://blog.csdn.net/Chen15968/article/details/129473258

您可能感兴趣的文档:

--结束END--

本文标题: 主从同步的延迟问题、原因及解决方案

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 主从同步的延迟问题、原因及解决方案
    主从同步的延迟问题、原因及解决方案 MySQL的主从同步在实际使用过程中会有从库延迟的问题,那么为什么会有这种问题呢 如何避免这种问题呢 情况一: 从服务器配置过低导致延迟 这类延迟场景的出现往往是主节点拥有较大规格的配置,而只...
    99+
    2023-08-31
    数据库 服务器 mysql Powered by 金山文档
  • 【MySQL】MySQL主从同步延迟原因与解决方案
    文章目录 一、MySQL数据库主从同步延迟产生的原因二、关于DDL和DML三、主从延时排查方法四、解决方案3.1 解决从库复制延迟的问题:3.2 MySql数据库从库同步其他问题及解决方案 一、MySQL数据库主从同步延迟产...
    99+
    2023-08-19
    mysql 数据库 sql
  • MySQL主从延迟原因以及解决方案
    1.MySQL数据库主从同步延迟原理。    谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysql5....
    99+
    2022-10-18
  • MySQL主从同步延迟的原因及解决办法
    由于历史原因,MySQL复制基于逻辑的二进制日志,而非重做日志。多次被问到何时MySQL能支持基于物理的复制,其实这就看MySQL各位大佬的想法。上次和赖老师脑暴,倏地说道:MySQL会不会来个基于Paxo...
    99+
    2022-10-18
  • MYSQL主从不同步延迟原理分析及解决方案
    1. MySQL数据库主从同步延迟原理。要说延时原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生binlog,binl...
    99+
    2022-11-15
    MYSQL 不同步 延迟
  • MySQL主从复制延迟原因以及解决方案
    来源:公众号「神谕的暗影长廊」 在异步或半同步的复制结构中,从库出现延迟是一件十分正常的事。 虽出现延迟正常,但是否需要关注,则一般是由业务来评估。 如:从库上有需要较高一致性的读业务,并且要求延迟小于某个值,那么...
    99+
    2022-05-16
    MySQL 主从复制 MySQL 主从复制延迟 MySQL 主从复制延迟解决
  • MySQL主从同步延迟的原因是什么
    这期内容当中小编将会给大家带来有关MySQL主从同步延迟的原因是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。MySQL主从延迟原因以及解决方案:谈到MySQL数据库...
    99+
    2022-10-18
  • MySQL主从数据库同步延迟问题怎么解决
    这篇文章主要讲解了“MySQL主从数据库同步延迟问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL主从数据库同步延迟问题怎么解决”吧!My...
    99+
    2022-10-18
  • mysql主从同步为何延迟及解决办法
    下文主要给大家带来mysql主从同步为何延迟及解决办法,希望这些内容能够带给大家实际用处,这也是我编辑mysql主从同步为何延迟及解决办法这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。2.MySQ...
    99+
    2022-10-18
  • mysql主从同步原理、配置以及延迟的示例分析
    小编给大家分享一下mysql主从同步原理、配置以及延迟的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mysql的主从同步原理、主从同步配置、主从同步延迟,首先我们先来了解什么是主...
    99+
    2022-10-18
  • 教你彻底解决MySQL 5.7 主从复制的延迟问题方法
    本文主要给大家简单讲讲彻底解决MySQL 5.7 主从复制的延迟问题方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望彻底解决MySQL 5.7 主从复制的...
    99+
    2022-10-18
  • 阿里云数据库写入延迟问的原因及解决方法
    简介:阿里云数据库作为企业级数据库服务,在实际应用中可能会遇到写入延迟的问题。本文将分析该问题可能的原因,并提供相应的解决方法,帮助用户更好地使用阿里云数据库。 阿里云数据库写入延迟的原因及解决方法数据库写入延迟是指在向数据库中写入数据时,...
    99+
    2023-12-29
    阿里 解决方法 原因
  • 如何解决MySQL中主从延迟与读写分离的问题
    小编给大家分享一下如何解决MySQL中主从延迟与读写分离的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言:我们都知道互联网数据有个特性,大部分场景都是 读...
    99+
    2023-06-29
  • 分享MySQL 主从延迟与读写分离的七种解决方案
    目录一、强制走主库二、从库延迟查询三、判断主从是否延迟决定选主库还是从库1.针对这个问题,有什么解决方案四、从库节点判断主库位点五、比较 GTID六、引入缓存中间件七、数据分片1.转...
    99+
    2022-11-13
  • 怎么解决Mysql主从不同步问题的
    本篇内容主要讲解“怎么解决Mysql主从不同步问题的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决Mysql主从不同步问题的”吧!由于各种原因,mysq...
    99+
    2022-10-18
  • Class path contains multiple SLF4J bindings.问题原因及解决方案
    问题背景 在进行logback的日志输出测试时,显示如下错误 SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/D:/...
    99+
    2023-08-23
    log4j apache java
  • MySQL主从复制架构实践:主从不同步的解决方案
    前言 大家好,我是沐风晓月,本文收录于《MySQL入门到精通》专栏,希望对你有用; 之前在做MySQL主从架构的时候,遇到了形形色色的问题,比如: 主从配置好之后,双yes的情况下,居然不能同步;切换...
    99+
    2023-10-25
    架构 服务器 运维 云原生 linux
  • 阿里云主从服务器连接失败原因及解决方案
    阿里云是目前中国最大的云服务提供商,提供了大量的服务器和存储资源。然而,有时候用户可能会遇到阿里云主从服务器连接失败的情况。本文将深入探讨导致阿里云主从服务器连接失败的原因,并提供相应的解决方案。 一、阿里云主从服务器连接失败的原因分析阿里...
    99+
    2023-10-29
    主从 阿里 解决方案
  • ajax请求前端跨域问题原因及解决方案
    目录一、跨域是怎么形成的二、导致跨域的根本原因三、解决方法1 、JSONP2、 CORS3 、代理转发一、跨域是怎么形成的 当我们请求一个url的 协议、域名、端口三者之间任意一个与...
    99+
    2022-11-12
  • 乱码问题的原因及解决方法
    这篇文章主要讲解了“乱码问题的原因及解决方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“乱码问题的原因及解决方法”吧!PHP乱码问题1、PHP 如何处理上传的CSV文件?可以用fgetcs...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作