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

问题背景

研发执行了一个批量更新数据的操作,操作的表是个宽表,大概有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.hqwc.cn/news/427169.html

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

相关文章

Hbas简介:数据模型和概念、物理视图

文章目录 说明零 BigTable一 Hbase简介二 HBase 访问接口简介三 行式&列式存储四 HBase 数据模型4.1 HBase 列族数据模型4.2 数据模型的相关概念4.3 数据坐标 五 概念&物理视图 说明 本文参考自林子雨老师的大数据技术原理与应用(第三版)教材内容,仅供学习…

SQL 系列教程(二)

目录 SQL DELETE 语句 DELETE 语句 演示数据库 DELETE 实例 删除所有行 SQL TOP, LIMIT, ROWNUM 子句 TOP 子句 演示数据库 SQL TOP、LIMIT 和 ROWNUM 示例 SQL TOP PERCENT 实例 添加WHERE子句 SQL MIN() 和 MAX() 函数 MIN() 和 MAX() 函数 演示数据库 MIN() …

热压机PLC数据采集远程监控物联网解决方案

热压机PLC数据采集远程监控物联网解决方案 热压机是制造行业中重要的设备之一,广泛应用于木材加工、纸制品生产、塑料加工等领域。随着工业自动化技术的发展,热压机的自动化程度也越来越高。然而,热压机的远程监控仍然是制造企业普遍面临的问…

OpenGL ES 实现图像腐蚀、膨胀、边缘检测

前文我们详细讲了图像锐化的基本原理,本文再介绍一下图像基本处理之腐蚀、膨胀和边缘检测,它们在图像处理和计算机视觉领域有着广泛的应用。 图像腐蚀(Image Erosion):用于缩小或消除图像中物体的边界。主要用于去除图像中的小细节、噪声或不规则物体。 实现图像腐蚀的片…

代码随想录刷题

数组篇 704. 二分查找 class Solution:def search(self, nums: List[int], target: int) -> int:left 0right len(nums) - 1while(left < right):mid (left right) // 2if nums[mid] target:return midelif nums[mid] > target:right mid - 1elif nums[mid] &l…

力扣日记1.21-【回溯算法篇】77. 组合

力扣日记&#xff1a;【回溯算法篇】77. 组合 日期&#xff1a;2023.1.21 参考&#xff1a;代码随想录、力扣 终于结束二叉树了&#xff01;听说回溯篇也是个大头&#xff0c;不知道这一篇得持续多久了…… 77. 组合 题目描述 难度&#xff1a;中等 给定两个整数 n 和 k&#…

实现AVL树

王有志&#xff0c;一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群&#xff1a;共同富裕的Java人 上一篇我们学习了平衡二分搜索树的理论知识&#xff0c;并学习了AVL树是如何保持二分搜索树的平衡的&#xff0c;今天我们一起来实现AVL树。Tips&#xff1a; AVL树和…

22k+star一款自托管的开源的的好用的碎片化笔记软件 Memos超级详细部署教程

目录 1.拉取镜像 2.启动 3.体验 4.源码地址 1.拉取镜像 docker pull neosmemo/memos:stable 2.启动 创建目录 mkdir -p /opt/memos/ 启动 docker run -d --name memos -p 10006:5230 -v /opt/memos/:/var/opt/memos neosmemo/memos:stable 3.体验 浏览器输入下面地址…

Node.JS CreateWriteStream(大容量写入文件流优化)

Why I Need Node.JS Stream 如果你的程序收到以下错误&#xff0c;或者需要大容量写入很多内容(几十几百MB甚至GB级别)&#xff0c;则必须使用Stream文件流甚至更高级的技术。 Error: EMFILE, too many open files 业务场景&#xff0c;我们有一个IntradayMissingRecord的补…

Unity -简单键鼠事件和虚拟轴

简单键鼠事件 — “Test_03” KeyTest 键鼠事件每帧都要监听&#xff0c;要放在Update()中处理 public class KeyTest : MonoBehaviour {// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){// 【鼠标点击事件…

ffplay 之 Invalid data found when processing input

调试rtsp 通信协议时&#xff0c;发现使用 ffplay -i rtsp://127.0.0.1:554 tcp通信会先返回OPTIONS、DESCRIBE 2个指令&#xff0c;当返回SETUP指令给ffplay.exe程序时&#xff0c;会出现&#xff1a; 仔细查看代码&#xff0c;未支持UDP&#xff1a; 故,找到原因 ffplay -…

RPC框架的Dubbo介绍

什么是Dubbo&#xff1f; Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架&#xff0c;可以和Spring框架无缝集成。 什么是RPC&#xff1f; RPC全称为remote procedure call&#xff0c;即远程过程调用。比如两台服…