【MySQL故障】主从延迟越来越大

news2024/9/29 19:14:25

问题背景

研发执行了一个批量更新数据的操作,操作的表是个宽表,大概有90多个字段,数据量有800多w,但是研发是根据ID按行更新。更新开始后,该集群的主从延迟越来越大。

问题现象 

1 从库应用binlog基本无落后,sql_thread 无落后。

2 从库落后主库很多个binlog

3 从库的io_thread一直处于 Queueing master event to the relay log 状态

4 Seconds_Behind_Master数值越来越大

问题分析

出现主从延迟后,首先分析是io_thread(拉取日志然后写中继日志) 还是 sql_thread(应用中级日志)。

另外需要明确 Seconds_Behind_Master是从库本地时间 - 主库binlog event的时间

sql_thread延迟的原因大概有

  • 大事务 ,执行时间长
  • DDL,执行时间长
  • 元数据锁,主库完成变更后,在从库上应用的时候,从库刚好有个该表的长查询。造成该表所有的更新都被堵塞等待元数据锁
  • 延迟从库,
  • 并行复制,有无开启,并发度等
  • 表上无主键
  • 从库上备份,一般备份工具在备份非InnoDB 存储引擎的时候都会执行FTWRL

io_thread延迟的原因大概有

  • 网络问题,网卡流量大,造成的网络拥塞
  • 磁盘IO瓶颈

排查过程

首先确认落后是在 IO_thread(拉取binlog日志) 还是在 SQL_thread(应用binlog日志)

对比执行的文件和位点

Master_Log_File 与 Read_Master_Log_Pos (读取到的主库的binlog文件和位点)

Relay_Master_Log_File 与 Exec_Master_Log_Pos(sql_thread 应用的relay_log对应主库文件和位点)

发现文件编号基本一直,位点也相差无几,说明sql_thread 并无落后

再次确认,查看主库上有无大事务,DDL, 从库上有无长查询阻塞DDL,从库上备份等。该表有无主键,逐个排查并没有发现以上问题。

查看主库的此刻binlog 编号 与 从库获取到的标号,发现落后很多。

应该是IO_thread 拉取  然后 转写为 relay_log 的过程比较慢,这个过程主要设计到网络 和 磁盘IO的问题

在从库上查看会话 ,有个会话一直处于 Queueing master event to the relay log,查看官方文档 ,

The thread has read an event and is copying it to the relay log so that the SQL thread can process it. 该线程读取binlog中的 event 然后复制为中继日志,以便sql thread 可以应用这些event.

从官方文档中可以看到 该会话一直在将主库的event 写成从库的relay log

在服务器上通过IOTOP 命令查看磁盘IO状况

发现有个线程IOwait 一直很高 ,保持在70% 到 80%

通过查询 服务器上该线程ID 刚好 对应 数据库中写relay log的会话id.

此刻基本定位到是写relay 很慢,应该是和该表是宽表,

修改relay log的落盘参数,sync_relay_log 原来设置的是1 ,该大一些

set global sync_relay_log=100000;

监控图

总结 

参考

类似问题:

https://www.cnblogs.com/zping/p/10861902.html

主从延迟原因

https://www.cnblogs.com/ivictor/p/17331981.html

官方文档  I/O Thread States

MySQL :: MySQL 5.7 Reference Manual :: 8.14.6 Replication Replica I/O Thread States

 24 | MySQL是怎么保证主备一致的?-极客时间

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

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

相关文章

【腾讯云服务器】幻兽帕鲁私服服务器部署保姆级教程

在帕鲁的世界,你可以选择与神奇的生物「帕鲁」一同享受悠闲的生活,也可以投身于与偷猎者进行生死搏斗的冒险。帕鲁可以进行战斗、繁殖、协助你做农活,也可以为你在工厂工作。你也可以将它们进行售卖,或分解后食用。 想要部署属于自…

IDEA常用插件(本人常用,不全)

文章目录 一、图标提示类插件1、Lombok插件(用户配合lombok依赖的工具)2、MybatisX插件3、GitToolBox4、VUE.js5、ESLint 二、代码自动生成插件1、EasyCode插件:自动生成代码神器2、GsonFormat 三、常用工具类1、IDE Eval Reset 插件&#xf…

解读Android进程优先级ADJ算法

本文基于原生Android 9.0源码来解读进程优先级原理,基于篇幅考虑会精炼部分代码 一、概述 1.1 进程 Android框架对进程创建与管理进行了封装,对于APP开发者只需知道Android四大组件的使用。当Activity, Service, ContentProvider, BroadcastReceiver任一组件启动时,当其所…

python小项目:口令保管箱

代码&#xff1a; #! python3 # python 编程-----口令保管箱passwords{emails: F7minlBDDuvMJuxESSKHFhTxFtjVB6,blog:VmALvQyKAxiVH5G8v01if1MLZF3sdt,luggage:12345,} import sys,pyperclip if len(sys.argv)<2:print(usage:python python3文件[accout]-copy accout pass…

大模型学习笔记一:大模型应用开发基础

文章目录 一、大模型一些概念介绍 一、大模型一些概念介绍 1&#xff09;产品和大模型的区别&#xff08;产品通过调用大模型来具备的能力&#xff09; 2&#xff09;AGI定义 概念&#xff1a;一切问题可以用AI解决 3&#xff09;大模型通俗原理 根据上文&#xff0c;猜测下…

100.乐理基础-五线谱-是否需要学习五线谱

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;99.乐理基础-简谱的多声部-CSDN博客 简谱与五线谱的区别&#xff0c;各自的优劣势、使用场景、范围等&#xff1a; 要搞懂这个问题&#xff0c;其实核心就是四个词&#xff1a;首调、固定调、单声部、多声部 首调、…

github ssh ssh-keygen

生成和使用 SSH 密钥对是一种安全的身份验证方式&#xff0c;用于在你的本地系统和 GitHub 之间进行身份验证。以下是在 GitHub 上生成和使用 SSH 密钥对的基本步骤&#xff1a; 1. 生成 SSH 密钥对 在命令行中执行以下命令来生成 SSH 密钥对&#xff1a; ssh-keygen -C &q…

计算机速成课Crash Course - 23. 屏幕 2D 图形显示

今天继续计算机速成课Crash Course的系列讲解。 更多技术文章&#xff0c;全网首发公众号 “摸鱼IT” 锁定 -上午11点 - &#xff0c;感谢大家关注、转发、点赞&#xff01; 计算机速成课Crash Course - 23. 屏幕& 2D 图形显示 (qq.com) 23. 屏幕& 2D 图形显示 这台…

YOLOv5改进系列(28)——添加DSConv注意力卷积(ICCV 2023|用于管状结构分割的动态蛇形卷积)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

06.Elasticsearch应用(六)

Elasticsearch应用&#xff08;六&#xff09; 1.什么是分词器 ES文档的数据拆分成一个个有完整含义的关键词&#xff0c;并将关键词与文档对应&#xff0c;这样就可以通过关键词查询文档。要想正确的分词&#xff0c;需要选择合适的分词器 2.ES中的默认分词器 fingerprint…

软件游戏提示msvcp140.dll丢失的解决方法,全面分析msvcp140.dll文件

msvcp140.dll是Microsoft Visual C 2015 Redistributable的一部分&#xff0c;它包含了许多用于运行程序的函数和类库。当这个文件丢失或损坏时&#xff0c;依赖于该组件的应用程序可能无法正常启动&#xff0c;系统会弹出错误提示&#xff0c;告知用户找不到msvcp140.dll文件。…

【寒假打卡】Day02

文章目录 选择编程NC31 第一个只出现一次的字符面试题 01.01. 判定字符是否唯一 选择 以下程序运行后的输出结果是&#xff08; &#xff09; #include <stdio.h> void fun(char **p) { int i; for(i 0; i < 4; i) printf("%s", p[i]); } in t main() { …

河南嘉家购商贸有限公司获绿色积分信用认证

“实现绿色产业、打造完善的绿色产业链、走可持续发展共创共赢”。近日&#xff0c;河南嘉家购商贸有限公司获得绿色积分认证&#xff0c;确认了该企业在绿色消费积分领域的领先地位。 据了解&#xff0c;河南嘉家购商贸有限公司始终将绿色积分视为企业发展的核心要素。全面优化…

使用collection.Counter实现统计简化

背景介绍 在python的应用场景中&#xff0c;我们常常需要通过建立统计表来对某一个数据集中某些数据出现次数的统计&#xff0c;这时候经常会使用到python的字典数据类型建立映射表&#xff0c;一般的方法可能会比较繁琐&#xff0c;本篇博客介绍collection.Counter方法帮助简…

[Python] KDE图[作密度图(Kernel Density Estimate,核密度估计)]介绍和使用场景(案例)

KDE图是什么&#xff1f; 核密度估计&#xff08;Kernel Density Estimate&#xff0c;KDE&#xff09;是一种非参数统计方法&#xff0c;用于估计未知随机变量的概率分布。它通过在每个数据点附近放置一个核函数&#xff0c;并将这些核函数加总起来&#xff0c;得到对概率分布…

用可视化案例讲Rust编程4. 用泛型和特性实现自适配shapefile的读取

本节已经涉及Rust学习曲线上的一个大坑&#xff1a;泛型和特性了&#xff0c;属于语言的深水区&#xff0c;如果初学者&#xff0c;建议看一眼知道有这个功能即可。 如果我们立足于功能实现&#xff0c;那么做到像上一节那样就可以了&#xff0c;从原理上来说&#xff0c;每个…

javascript跳转微信: 扫码,分享链接,下载二维码

文章目录 微信后台配置扫码前端配置扫描二维码分享链接下载二维码 总结 微信后台配置扫码 参考&#xff1a; 微信二维码内容获取 在开发设置中配置扫码路由以及跳转路径 完成该配置后&#xff0c;可以通过扫描对应地址的二维码进入小程序的指定页面 前端配置 扫描二维码 …

【github】使用github action 拉取国外docker镜像

使用github action 拉取国外docker镜像 k8s部署经常用到国外镜像&#xff0c;如果本地无法拉取可以考虑使用github action环境 github action的ci服务器在国外&#xff0c;不受中国防火墙影响github action 自带docker命令运行时直接将你仓库代码拉取下来 步骤 你的国内dock…

测试人年终总结:入行三年,下一步怎么走,思想碰撞

原贴地址&#xff1a;入行三年&#xff0c;下一步怎么走&#xff0c;思想碰撞 TesterHome 熟悉环境&#xff0c;进步缓慢&#xff1b;停止思考&#xff0c;举步不前&#xff08;为什么会有这篇文章why 初心变质&#xff1a;计算机系毕业&#xff0c;毕业时的打算是从测试进&a…

如何实现人口、GDP等的空间化效果?

现在假设你遇到了某个情况&#xff0c;手头有某市十几个区县的人口总数但是你想要更加精细化的空间化数据产品&#xff0c;以方便后续进行核密低分析或者进行其它的空间、数据分析。 那我们应该如何通过十几个点的人口数据进行空间化呢&#xff0c;详细步骤如下&#xff1a; 第…