iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >【MySQL】MySQL主从同步延迟原因与解决方案
  • 336
分享到

【MySQL】MySQL主从同步延迟原因与解决方案

mysql数据库sql 2023-08-19 21:08:09 336人浏览 八月长安
摘要

文章目录 一、MySQL数据库主从同步延迟产生的原因二、关于DDL和DML三、主从延时排查方法四、解决方案3.1 解决从库复制延迟的问题:3.2 MySql数据库从库同步其他问题及解决方案 一、Mysql数据库主从同步延迟产

一、Mysql数据库主从同步延迟产生的原因

mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高。
Slave的sql Thread线程将主库的DDL和DML操作事件在slave中重放。DML和DDL的io操作是随即的,不是顺序的,成本高很多。
另一方面,由于SQL Thread也是单线程的,当主库的并发较高时,产生的DML数量超过slave的SQL Thread所能处理的速度,或者当slave中有大型query语句产生了等待那么延时就产生了。

常见原因:Master负载过高、Slave负载过高、网络延迟、机器性能太低、MySQL配置不合理。

二、关于DDL和DML

SQL语言共分为以下几大类:查询语言DQL,控制语言DCL,操纵语言DML,定义语言DDL。事务控制TCL.

  • DQL(Data QUERY Languages)语句:即数据库定义语句,用来查询SELECT子句,FROM子句,WHERE子句组成的查询块,比如:select–from–where–grouop by–having–order by–limit

  • DDL(Data Definition Languages)语句:即数据库定义语句,用来创建数据库中的表、索引、视图、存储过程、触发器等,常用的语句关键字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。增删改表的结构

  • DML(Data Manipulation Language)语句:即数据操纵语句,用来查询、添加、更新、删除等,常用的语句关键字有:SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLaiN PLAN,LOCK TABLE,包括通用性的增删改查。增删改表的数据

  • DCL(Data Control Language)语句:即数据控制语句,用于授权/撤销数据库及其字段的权限(DCL is short name of Data Control Language which includes commands such as GRANT and mostly concerned with rights, permissions and other controls of the database system.)。常用的语句关键字有:GRANT,REVOKE。

  • TCL(Transaction Control Language)语句:事务控制语句,用于控制事务,常用的语句关键字有:COMMIT,ROLLBACK,SAVEPOINT,SET TRANSACTION。

三、主从延时排查方法

通过监控 show slave status 命令输出的Seconds_Behind_Master参数的值来判断:

  • NULL,表示io_thread或是sql_thread有任何一个发生故障;

  • 0,该值为零,表示主从复制良好;

  • 正值,表示主从已经出现延时,数字越大表示从库延迟越严重
    在这里插入图片描述

四、解决方案

解决数据丢失的问题:

  • 半同步复制
    从MySQL5.5开始,MySQL已经支持半同步复制了,半同步复制介于异步复制和同步复制之间,主库在执行完事务后不立刻返回结果给客户端,需要等待至少一个从库接收到并写到relay log中才返回结果给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一个tcp/IP往返耗时的延迟。

  • 主库配置sync_binlog=1,innodb_flush_log_at_trx_commit=1 sync_binlog的默认值是0,MySQL不会将binlog同步到磁盘,其值表示每写多少binlog同步一次磁盘。

    innodb_flush_log_at_trx_commit为1表示每一次事务提交或事务外的指令都需要把日志flush到磁盘。

注意:将以上两个值同时设置为1时,写入性能会受到一定限制,只有对数据安全性要求很高的场景才建议使用,比如涉及到钱的订单支付业务,而且系统I/O能力必须可以支撑!

3.1 解决从库复制延迟的问题:

  • 架构方面

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

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

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

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

    5. 使用比主库更好的硬件设备作为slave,mysql压力小,延迟自然会变小。

  • 硬件方面

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

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

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

    总结,硬件强劲,延迟自然会变小。一句话,缩小延迟的解决方案就是花钱和花时间。

  • mysql主从同步加速

    1. sync_binlog在slave端设置为0

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

    3. 直接禁用slave端的binlog

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

  • 从文件系统本身属性角度优化
    master端修改linux、Unix文件系统中文件的etime属性, 由于每当读文件时OS都会将读取操作发生的时间回写到磁盘上,对于读操作频繁的数据库文件来说这是没必要的,只会增加磁盘系统的负担影响I/O性能。可以通过设置文件系统的mount属性,组织操作系统写atime信息,在linux上的操作为:打开/etc/fstab,加上noatime参数/dev/sdb1 /data reiserfs noatime 1 2然后重新mount文件系统#mount -oremount /data

  • 同步参数调整主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置是需要的而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,innodb_flushlog也可以设置为0来提高sql的执行效率

3.2 MySql数据库从库同步其他问题及解决方案

  • mysql主从复制存在的问题:

    • 主库宕机后,数据可能丢失
    • 从库只有一个sql Thread,主库写压力大,复制很可能延时
  • 解决方法:

    • 半同步复制—解决数据丢失的问题
    • 并行复制----解决从库复制延迟的问题
  • 半同步复制mysql semi-sync(半同步复制)半同步复制:

    • 5.5集成到mysql,以插件的形式存在,需要单独安装
    • 确保事务提交后binlog至少传输到一个从库
    • 不保证从库应用完这个事务的binlog
    • 性能有一定的降低,响应时间会更长
    • 网络异常或从库宕机,卡主主库,直到超时或从库恢复
  • 主从复制–异步复制原理、半同步复制和并行复制原理比较

在这里插入图片描述

在这里插入图片描述

来源地址:https://blog.csdn.net/u011397981/article/details/130879469

您可能感兴趣的文档:

--结束END--

本文标题: 【MySQL】MySQL主从同步延迟原因与解决方案

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

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

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

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

下载Word文档
猜你喜欢
  • 【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的主从同步在实际使用过程中会有从库延迟的问题,那么为什么会有这种问题呢 如何避免这种问题呢 情况一: 从服务器配置过低导致延迟 这类延迟场景的出现往往是主节点拥有较大规格的配置,而只...
    99+
    2023-08-31
    数据库 服务器 mysql Powered by 金山文档
  • 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主从同步延迟怎么解决这篇文章可以给大家带来一些实...
    99+
    2022-10-18
  • mysql主从同步为何延迟及解决办法
    下文主要给大家带来mysql主从同步为何延迟及解决办法,希望这些内容能够带给大家实际用处,这也是我编辑mysql主从同步为何延迟及解决办法这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。2.MySQ...
    99+
    2022-10-18
  • MySQL主从数据库同步延迟问题怎么解决
    这篇文章主要讲解了“MySQL主从数据库同步延迟问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL主从数据库同步延迟问题怎么解决”吧!My...
    99+
    2022-10-18
  • 分享MySQL 主从延迟与读写分离的七种解决方案
    目录一、强制走主库二、从库延迟查询三、判断主从是否延迟决定选主库还是从库1.针对这个问题,有什么解决方案四、从库节点判断主库位点五、比较 GTID六、引入缓存中间件七、数据分片1.转...
    99+
    2022-11-13
  • mysql主从同步原理、配置以及延迟的示例分析
    小编给大家分享一下mysql主从同步原理、配置以及延迟的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mysql的主从同步原理、主从同步配置、主从同步延迟,首先我们先来了解什么是主...
    99+
    2022-10-18
  • MySQL主从延迟解决方法的归纳和总结
    MySQL主从延迟情况共分为以下四类 一.MIXED模式无索引或SQL慢 在从库上 pager grep -v Sleep;show processlist 查看到正在执行的SQL 解决方法: 1.SQL比...
    99+
    2022-10-18
  • mysql复制slave服务器数据延迟的原因与解决方法
    mysql复制slave服务器数据延迟的原因与解决方法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。复制slave服务器数据延...
    99+
    2022-10-18
  • MySQL主从复制架构实践:主从不同步的解决方案
    前言 大家好,我是沐风晓月,本文收录于《MySQL入门到精通》专栏,希望对你有用; 之前在做MySQL主从架构的时候,遇到了形形色色的问题,比如: 主从配置好之后,双yes的情况下,居然不能同步;切换...
    99+
    2023-10-25
    架构 服务器 运维 云原生 linux
  • 如何解决MySQL中主从延迟与读写分离的问题
    小编给大家分享一下如何解决MySQL中主从延迟与读写分离的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言:我们都知道互联网数据有个特性,大部分场景都是 读...
    99+
    2023-06-29
  • MySQL数据库主从没有同步的两种解决方案
    下文主要给大家带来MySQL数据库主从没有同步的两种解决方案,希望这些内容能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。方法一:忽略错误,继续同步该方法适用于主从...
    99+
    2022-10-18
  • 阿里云服务器低延迟网络异常原因与解决方案
    随着互联网的发展,越来越多的企业开始将业务迁移到云服务器上,以提高业务的灵活性和效率。然而,阿里云服务器低延迟网络异常成为了许多用户面临的问题。这篇文章将探讨阿里云服务器低延迟网络异常的原因,并提供相应的解决方案。 阿里云服务器低延迟网络异...
    99+
    2023-10-29
    阿里 异常 解决方案
  • 教你彻底解决MySQL 5.7 主从复制的延迟问题方法
    本文主要给大家简单讲讲彻底解决MySQL 5.7 主从复制的延迟问题方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望彻底解决MySQL 5.7 主从复制的...
    99+
    2022-10-18
  • mysql主从不同步报错Last_Errno 1197的解决方法
    本篇内容主要讲解“mysql主从不同步报错Last_Errno 1197的解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql主从不同步报错Last...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作