最近在做zabbix的数据库MySQL5.6升级5.7时,出现主从延迟问题,这个问题困扰了很久没有解决,昨天终于解决了,整理了一下整个排查过程,分享给大家。

环境说明:

mysql主库为5.6的版本,有四个从库,三个为5.6的版本,一个为5.7的版本,所有主从的库表结构均一致,5.7的从库出现大量延迟,5.6的没问题,业务为zabbix监控,基本全部为insert批量插入操作,每条insert SQL插入数据为400-1000行左右。

问题:

MySQL5.7的从库大量延迟,relaylog落盘正常,应用到数据库比较慢,磁盘IO和CPU没有压力,sync_binlog为20000或是0没有区别,max_allowed_packet=128M,innodb_flush_log_at_trx_commit=0,bulk_insert_buffer_size = 128M,binlog_format=row,sync_relay_log=10000,没有使用并行复制,没有开启SSL,没有开启GDID,没有开启半同步。

排查过程:

1:检查各个核对各个和性能相关的参数,没有发现异常。

2:检查网卡、硬盘、更换服务器、数据库服务器重启均没有效果,5.7的延迟依然存在,排除硬件问题。

3:5.7同步主库5.6的binlog到relaylog很快,正常,但是relaylog在5.7数据库中回放效率极低。

4:对比5.6和5.7从库的show engine innodb status结果:

=============5.6===============================

---BUFFER POOL 1

Buffer pool size 655359

Buffer pool size, bytes 10737401856

Free buffers 1019

Database pages 649599

Old database pages 239773

Modified db pages 119309

Pending reads 0

Pending writes: LRU 0, flush list 0, single page 0

Pages made young 10777670, not young 181119246

13.90 youngs/s, 157.51 non-youngs/s

Pages read 8853516, created 135760152, written 784514803

20.96 reads/s, 58.17 creates/s, 507.02 writes/s

Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 2 / 1000

Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s

LRU len: 649599, unzip_LRU len: 0

I/O sum[209618]:cur[2], unzip sum[0]:cur[0]

=============5.7==============================

---BUFFER POOL 1

Buffer pool size 819100

Buffer pool size, bytes 13420134400

Free buffers 1018

Database pages 722328

Old database pages 266620

Modified db pages 99073

Pending reads 0

Pending writes: LRU 0, flush list 0, single page 0

Pages made young 37153, not young 795

0.00 youngs/s, 0.00 non-youngs/s

Pages read 149632, created 572696, written 2706369

0.00 reads/s, 0.00 creates/s, 0.00 writes/s

Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000

Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s

LRU len: 722328, unzip_LRU len: 453903

I/O sum[98685]:cur[0], unzip sum[882]:cur[6]

+++++++++++++++++++++++

对比发现5.7中unzip存在数值,5.6的没有,初步怀疑造成延迟的原因和压缩解压相关。

5:使用perf top -p pidof mysqld查看5.7从库

发现libz.so.1.2.7 [.] crc32的占比要高于mysqld,在6%左右,这个库和压缩解压相关。

6:修改innodb_compression_level的等级为0(就是不启用压缩,默认为6,范围为0-9),观察无效果,延迟依然存在。只是

libz的占比下去了,但libc-2.17.so的占比上去了,比mysqld高,在9%左右。使用pstack查看存在研所解压的等待的问题。

7:检查zabbix的历史表,当时为了节约磁盘空间,对这些表做了压缩处理:

CREATE TABLE trends (

itemid bigint(20) unsigned NOT NULL,

clock int(11) NOT NULL DEFAULT '0',

num int(11) NOT NULL DEFAULT '0',

value_min double(16,4) NOT NULL DEFAULT '0.0000',

value_avg double(16,4) NOT NULL DEFAULT '0.0000',

value_max double(16,4) NOT NULL DEFAULT '0.0000',

PRIMARY KEY (itemid,clock),

KEY clock (clock)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8

怀疑和ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8这个压缩参数相关。

8:重建所有历史表,去掉ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8,,重新同步,延迟逐步降低,恢复。

疑问:为什么相同的表结构,在5.7中会造成主从延迟而5.6没有?可能是压缩和解压在MySQL5.7中向下兼容性问题造成的,没有深究,但给官方提了一个BUG,让官方走源码层面去看看:http://bugs.mysql.com/100702。

在生产中请慎用ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8。和业内几位专家交流,表示MySQL8.0之前的版本压缩不太靠谱,8.0的用ZSTD还好一点。

到此这篇关于MySQL5.6升级5.7时出现主从延迟问题排查过程的文章就介绍到这了,更多相关MySQL5.6升级5.7主从延迟内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

本文标题: MySQL5.6升级5.7时出现主从延迟问题排查过程

本文地址: http://www.cppcns.com/shujuku/mysql/342435.html

mysql 5.7 延迟同步_MySQL5.6升级5.7时出现主从延迟问题排查过程相关推荐

  1. mysql5.6 主从 延迟_MySQL5.6升级5.7时,出现主从延迟问题排查过程

    最近在做zabbix的数据库MySQL5.6升级5.7时,出现主从延迟问题,这个问题困扰了很久没有解决,昨天终于解决了,整理了一下整个排查过程,分享给大家. 环境说明: mysql主库为5.6的版本, ...

  2. mysql 5.6 不同步_MySQL5.6配置同步复制的新方法以及常见问题的解决方法

    MySQL5.6新增一种不用设置log_bin文件和log位置的方法,之前我们都需要查看master机器信息(show master status),然后在slave设置 master_host='1 ...

  3. redis mysql主从延迟_MySQL主从延迟问题解决

    今天我们就来看看为什么会产生主从延迟以及主从延迟如何处理等相关问题. 坐好了,准备发车! 主从常见架构 随着日益增长的访问量,单台数据库的应接能力已经捉襟见肘.因此采用主库写数据,从库读数据这种将读写 ...

  4. mysql主从延时这么长_MySQL主从延迟问题解决

    今天我们就来看看为什么会产生主从延迟以及主从延迟如何处理等相关问题. 坐好了,准备发车! 主从常见架构 随着日益增长的访问量,单台数据库的应接能力已经捉襟见肘.因此采用主库写数据,从库读数据这种将读写 ...

  5. MySQL主从延迟的解决方案

    之前项目中基于 MySQL 主从复制以及 AOP 的方式实现了读写分离,也写了博客记录了这个实现过程.既然配置了 MySQL 主从复制,那么自然会存在主从延迟,如何尽可能减小主从延迟对应用系统的影响是 ...

  6. php mysql主从延迟_如何解决主从数据库同步延迟问题?php连接 mysql 数据库如何添加一个公共的配置文件50...

    在上一篇文章中,小编为您详细介绍了关于<图上属标注的什么样元器件?火车购票明明显示无座为什么样乘车后却发现有很多空座>相关知识.本篇中小编将再为您讲解标题如何解决主从数据库同步延迟问题?p ...

  7. mysql主从延迟_MySQL主从同步个般是多久的延迟?

    这次单独调查一下主从延迟的时间.这里说的主从延迟,并不是指"从库更新性能跟不上主库", 而是"一个命令从主库更新完成到从库更新完成的延迟时间. 基本流程: 对于每一个连上 ...

  8. mysql 5.7 延迟同步_完全解决 MySQL 5.7 主从复制的延迟问题

    1.问题发现 sysbench使用以下配置对MySQL进行测试 sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \ -- ...

  9. MySql数据库从库同步的延迟问题及解决方案

    1).MySQL数据库主从同步延迟原理mysql主从同步原理: 主库针对写操作,顺序写binlog,从库单线程去主库顺序读"写操作的binlog",从库取到binlog在本地原样执 ...

最新文章

  1. CSDN博客的安全性为什么一直如此薄弱?
  2. 从草根到百万年薪程序员的十年风雨之路,使用指南
  3. es6 数组去重_《前端算法系列》数组去重
  4. 解决MySQL在修改列时因为外键依赖出错的问题
  5. Sentinel流控规则_预热_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0036
  6. 京东联盟开发(10)——轮询获取数据
  7. Microsoft Visual Studio.NET 2003 (VS2003) 简体中文企业级结构设计版+MSDN中文版
  8. maven中引用JDK中的tools jar
  9. 【C++】常用拷贝算法和替换算法
  10. rpm方式安装mysql5.7_centos下rpm方式安装mysql5.7
  11. 【机器视觉】独家盘点:详解国内外34家物联网机器视觉技术企业
  12. 联想小新潮5000 完美黑苹果 EFI文件
  13. android studio 登录与注册,Android Studio实现QQ的注册登录和好友列表跳转
  14. Jflash 工程配置及下载
  15. win7万能声卡驱动_驱动精灵万能网卡版下载-驱动精灵万能网卡版免费下载
  16. 系统架构设计方法论——Zachman
  17. ShareX:一款你值得拥有的截图识别工具ShareX
  18. 国外2个在线web程序代码编辑网站
  19. 几种重要的工业现场总线的对比分析
  20. JMeter—录制脚本

热门文章

  1. 广州驾考科目三电子考16日全面启动
  2. HEVC/H265 文档获得
  3. 多媒体技术复习汇总 收藏
  4. Docker,容器,虚拟机和红烧肉
  5. Django congtent types应用
  6. CentOS 7 使用iptables防火墙
  7. 动态规划(制表法)模板及应用
  8. CSS布局奇淫技巧之--各种居中
  9. perl学习之:编译、执行与内存关系(转)
  10. USACO 1.5.4 Checker Challenge