my16_sql_thread执行慢导致主从延迟高的一个情景

每周向前一小步 每周向前一小步     2022-11-23     107

关键词:


现象:从库延迟高,查看slave status发现sql_thread执行语句的速度比主库慢,这样的延迟会一直高下去,下面是排查的一些过程
1. 检查了从库的配置,磁盘的写入速度的确没有主库高
2. iostat -m 1 10查看磁盘写入 ,从库为2M/S,主库也就3M/S,从库磁盘没主库高,但这个档次的速度应该不影响
3. 将sync_binlog从1设置为,0,3,10,100 无效果,innodb_flush_log_at_trx_commit的值为2
4. 增加slave_parallel_workers的值,无效果
5. 然后又排查了内存相关参数,没有明显不合理的地方
6. 最后要从binlog中解析SQL,看看执行的都是哪些SQL,哪些表,在从binlog抽取SQL之前,查看了一下 show full processlist,看到了 System lock

然后就重启了一下slave,这是个作为备份用的从库,业务不访问,当时没有考虑锁的问题,应该再排查一下,有没有其他锁

解决方法为重启一下slave;

>show full processlist;
+---------+-------------+-----------+-------------+---------+---------+---------------------------------------------+--------------------------------------------------------------------------------------------+-----------+---------------+
| Id | User | Host | db | Command | Time | State | Info | Rows_sent | Rows_examined |
+---------+-------------+-----------+-------------+---------+---------+---------------------------------------------+--------------------------------------------------------------------------------------------+-----------+---------------+
| 1 | system user | | NULL | Connect | 2698858 | Waiting for master to send event | NULL | 0 | 0 |
| 2 | system user | | NULL | Connect | 0 | Waiting for dependent transaction to commit | NULL | 0 | 0 |
| 3 | system user | | NULL | Connect | 67873 | System lock | UPDATE......... |


stop slave;
start slave;

>show full processlist;
+---------+-------------+-----------+-------------+---------+-------+---------------------------------------------+-----------------------+-----------+---------------+
| Id | User | Host | db | Command | Time | State | Info | Rows_sent | Rows_examined |
+---------+-------------+-----------+-------------+---------+-------+---------------------------------------------+-----------------------+-----------+---------------+
| 3506710 | root | localhost | ad_dianjing | Query | 0 | starting | show full processlist | 0 | 0 |
| 3508115 | system user | | NULL | Connect | 53 | Waiting for master to send event | NULL | 0 | 0 |
| 3508116 | system user | | NULL | Connect | 0 | Waiting for dependent transaction to commit | NULL | 0 | 0 |
| 3508117 | system user | | NULL | Connect | 56827 | System lock | NULL | 0 | 0 |
| 3508118 | system user | | NULL | Connect | 56828 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508119 | system user | | NULL | Connect | 56828 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508120 | system user | | NULL | Connect | 56977 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508121 | system user | | NULL | Connect | 56981 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508122 | system user | | NULL | Connect | 57852 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508123 | system user | | NULL | Connect | 57852 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508124 | system user | | NULL | Connect | 57852 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508125 | system user | | NULL | Connect | 57852 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508126 | system user | | NULL | Connect | 57852 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508127 | system user | | NULL | Connect | 57852 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508128 | system user | | NULL | Connect | 57852 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508129 | system user | | NULL | Connect | 57852 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508130 | system user | | NULL | Connect | 57852 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508131 | system user | | NULL | Connect | 57852 | Waiting for an event from Coordinator | NULL | 0 | 0 |
| 3508132 | system user | | NULL | Connect | 57852 | Waiting for an event from Coordinator | NULL | 0 | 0 |
+---------+-------------+-----------+-------------+---------+-------+---------------------------------------------+-----------------------+-----------+---------------+
19 rows in set (0.00 sec)

Seconds_Behind_Master: 54622
然后就可以看到Seconds_Behind_Master的数值以每秒100的速度往下降

System lock的产生原因分析可以参考下面这篇文章
http://blog.itpub.net/7728585/viewspace-2149659

mysql主从同步延迟问题及解决方案

对于主从正常执行,相应的延迟几乎是不存在的。但是在高QPS下,主从同步却出现了比较明显的延迟情况。_________________________________________________________问题一:主库的从库太多,导致复制延迟从库数据以3-5个为宜,要复制的从节... 查看详情

mysql主从同步延迟问题及解决方案

对于主从正常执行,相应的延迟几乎是不存在的。但是在高QPS下,主从同步却出现了比较明显的延迟情况。_________________________________________________________问题一:主库的从库太多,导致复制延迟从库数据以3-5个为宜,要复制的从节... 查看详情

mysql主从同步延迟问题及解决方案

对于主从正常执行,相应的延迟几乎是不存在的。但是在高QPS下,主从同步却出现了比较明显的延迟情况。_________________________________________________________问题一:主库的从库太多,导致复制延迟从库数据以3-5个为宜,要复制的从节... 查看详情

mysql主从同步延迟问题及解决方案

对于主从正常执行,相应的延迟几乎是不存在的。但是在高QPS下,主从同步却出现了比较明显的延迟情况。_________________________________________________________问题一:主库的从库太多,导致复制延迟从库数据以3-5个为宜,要复制的从节... 查看详情

mysql中主从延迟高,怎么解决?

...去主服务器同步二进制日志,当某个SQL在从服务器上执行的时间稍长或者由于某个SQL要进行锁表就会导致主服务器的SQL大量积压,未被同步到从服务器里。这就导致了主从不一致,也就是主 查看详情

mysql中主从延迟高,怎么解决?

...去主服务器同步二进制日志,当某个SQL在从服务器上执行的时间稍长或者由于某个SQL要进行锁表就会导致主服务器的SQL大量积压,未被同步到从服务器里。这就导致了主从不一致,也就是主 查看详情

mysql中主从延迟高,怎么解决?

...去主服务器同步二进制日志,当某个SQL在从服务器上执行的时间稍长或者由于某个SQL要进行锁表就会导致主服务器的SQL大量积压,未被同步到从服务器里。这就导致了主从不一致,也就是主从延迟。主从同步延迟的解... 查看详情

导致mysql主从延迟的原因和现象

...间字段,用于记录主库上写入的时间;备库取出当前正在执行的事务的时间字段的值,计算它与当前系统时间的差值,得到seconds_behind_master。主备延迟的主要来源是备库接收完binlog和执行完这个事务之间的时间差。你可能会问,... 查看详情

mysql占用磁盘io过高(主从延迟高)(代码片段)

问题mysql主从同步延迟大排查sar查看磁盘io占用cpu高[root@zy-mysql-pre02shide]#sar-d1Linux5.18.2-1.el7.elrepo.x86_64(zy-mysql-pre02)02/14/2023_x86_64_(4CPU)02:45:47PMDEVtpsrd_sec/swr_sec/savgrq-szavgqu-szawaitsvctm%util02:45:48PMdev8-00.000.000.000.000.000.000.000.0002:45:48PMdev8-164... 查看详情

聊聊mysql主从延迟

...呢?高可用性(highavailability,缩写HA),指系统无中断地执行其功能的能力,代表系统的可用性程度。高可用性通常通过提高系统的容错能力来实现。首先,我们来看张图过程:开始时,处理流程主要是场景一 查看详情

一周碎碎念,2021.7.11,主从延迟慢sql优化ansibledocker等(代码片段)

...这些大事务在从库apply时,由于没有合适的索引,导致全表扫描,少则将近百万行记录,多则二千多万行记录。可能是遇到了AHI方面的 查看详情

彻底终结mysql同步延迟问题

...慢的问题,其实原因非常多,可能是因为主从的网络问题导致,可能是因为网络带宽问题导致,可能是因为大事务导致,也可能是因为单线程复制导致的延迟。最近遇到一个很典型的同步延迟问题,将分析过程写出来,希望对广... 查看详情

mysql主从同步机制与同步延时问题追查过程(代码片段)

...慢的问题,其实原因非常多,可能是因为主从的网络问题导致,可能是因为网络带宽问题导致,可能是因为大事务导致,也可能是因为单线程复制导致的延迟。今天遇到一个问题,Mysql持续报错,主从同步延时数过大或错误。所... 查看详情

mysql主从复制和读写分离(代码片段)

...从复制mysql复制类型statement基于语句的复制。在服务器上执行sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制,执行效率高row基于行的复制,把改变的内容复制过去,而不是把命令在从服... 查看详情

redis常见延迟问题排查手册!附33条优化建议

...统计功能,我们通过以下设置,就可以查看有哪些命令在执行时延迟比较大。首先设置Redis的慢日志阈值,只有超过阈值的命令才会被记录,这里的单位是微妙,例如设置慢日志的阈值为5毫秒,同时设置只保留最近1000条慢日志... 查看详情

数据库执行计划慢导致i/o慢

 MemoryStatistics~~~~~~~~~~~~~~~~~BeginEnd------------------------HostMem(MB):16,338.516,338.5SGAuse(MB):3,072.03,072.0PGAuse(MB):805.1861.7%HostMemusedforSGA+PGA:23.7324.08 异常响应:Physicalread(blo 查看详情

redis主从复制数据延迟解决方案

...端避免读取延迟过高的从节点。编写监控程序,然后定时执行在从节点种模拟网络延迟步骤运行结果: 查看详情

oracle10g查看主从延迟

参考技术A可能有2个原因。1在plsql中执行的结果实际上显示的是主库的查询结果(因为plsql默认连接的是数据库的VIP)。2主要原因是这个时间点业务量比较小,导致备库sysdate-controlfile_time的值变大。ZABBIX近段时间某地区的DB备库同步... 查看详情