-------------------------------------------------------------------------------------------------正文---------------------------------------------------------------------------------------------------------------
接前文: http://blog.itpub.net/29510932/viewspace-2129312/

场景 :
MySQL-5.7, 所有的小版本(<=17), percona-mysql-5.7所有版本;
开启多源复制的只读实例的内存无限增长, 直到触发系统的OOM Kill;

结论 :
mysql bug, 附上bug单链接: https://bugs.mysql.com/bug.php?id=85371

现象描述 :
内存监控如图

问题原因:
目前只能基于现象来分析;

开启binlog_rows_query_log_events之后, 启用多源复制的slave会出现内存泄漏; 
表现为内存使用率不断增长: 占用内存的为slave_sql线程, 数据库事件为memory/sql/Log_event;

相关数据(来源于截图中的实例): 
重启只读slave之后, 相关事件的内存使用: 
申请了内存,但是没有释放过: COUNT_FREE, SUM_NUMBER_OF_BYTES_FREE为0

点击(此处)折叠或打开

  1. *************************** 2. row ***************************
  2. THREAD_ID: 18189
  3. EVENT_NAME: memory/sql/Log_event
  4. COUNT_ALLOC: 521692
  5. COUNT_FREE: 0
  6. SUM_NUMBER_OF_BYTES_ALLOC: 117988604
  7. SUM_NUMBER_OF_BYTES_FREE: 0
  8. ...
  9. LOW_NUMBER_OF_BYTES_USED: 25286276
  10. CURRENT_NUMBER_OF_BYTES_USED: 117988604
  11. HIGH_NUMBER_OF_BYTES_USED: 117988604
  12. *************************** 3. row ***************************
  13. THREAD_ID: 18183
  14. EVENT_NAME: memory/sql/Log_event
  15. COUNT_ALLOC: 521426
  16. COUNT_FREE: 0
  17. SUM_NUMBER_OF_BYTES_ALLOC: 117732632
  18. SUM_NUMBER_OF_BYTES_FREE: 0
  19. ...
  20. LOW_NUMBER_OF_BYTES_USED: 25154914
  21. CURRENT_NUMBER_OF_BYTES_USED: 117732632
  22. HIGH_NUMBER_OF_BYTES_USED: 117732632

两小时以后:

点击(此处)折叠或打开

  1. *************************** 1. row ***************************
  2. THREAD_ID: 18189
  3. EVENT_NAME: memory/sql/Log_event
  4. COUNT_ALLOC: 2297022
  5. COUNT_FREE: 0
  6. SUM_NUMBER_OF_BYTES_ALLOC: 525744164
  7. SUM_NUMBER_OF_BYTES_FREE: 0
  8. ...
  9. LOW_NUMBER_OF_BYTES_USED: 25286276
  10. CURRENT_NUMBER_OF_BYTES_USED: 525744164
  11. HIGH_NUMBER_OF_BYTES_USED: 525744164
  12. *************************** 2. row ***************************
  13. THREAD_ID: 18183
  14. EVENT_NAME: memory/sql/Log_event
  15. COUNT_ALLOC: 2296412
  16. COUNT_FREE: 0
  17. SUM_NUMBER_OF_BYTES_ALLOC: 524600639
  18. SUM_NUMBER_OF_BYTES_FREE: 0
  19. ...
  20. LOW_NUMBER_OF_BYTES_USED: 25154914
  21. CURRENT_NUMBER_OF_BYTES_USED: 524600639
  22. HIGH_NUMBER_OF_BYTES_USED: 524600639

event对应的线程:

点击(此处)折叠或打开

  1. *************************** 1. row ***************************
  2. thd_id: 18183
  3. conn_id: 18158
  4. user: sql/slave_sql
  5. command: Sleep
  6. state: Slave has read all relay log; waiting for more updates
  7. current_memory: 532.28 MiB
  8. *************************** 2. row ***************************
  9. thd_id: 18189
  10. conn_id: 18164
  11. user: sql/slave_sql
  12. command: Sleep
  13. state: Slave has read all relay log; waiting for more updates
  14. current_memory: 533.50 MiB
  15. 2 rows in set (0.10 sec)

解决方案 :
关闭binlog_rows_query_log_events(默认就是关闭的),
实际上这个参数主要是控制binlog中是否记录原始SQL语句的, 主要是Debug用;
而平时用-vv来解析binlog以后, 本身也会注明row模式中的SQL语句, 可读性也还可以接受;

这个bug目前是S2(Serious)

关闭这个配置以后, 内存变化如上图的后半部分, 基本可以看到不再有明显的上升趋势;
需要注意的是, 并不一定就不再有内存泄漏的问题了, 希望官方早日修复~

PS: Null的测试继续拖, 写不动写不动写不动_(:з」∠)_

MySQL案例-多源复制引起的内存泄漏相关推荐

  1. MySQL 5.7--多源复制(非GTID模式)

    ==================================================== 在MYSQL5.7版本中引入多源复制,一个从库允许复制多个主库的数据,每个主库被配置为一个单独 ...

  2. php+mysql案例含源码_【专注】Zabbix源码安装教程—步骤详解(1)安装前准备

    一.实验环境准备 Rhel 7.6 x86_64(server) 192.168.163.72 Rhel 6.5 x86_64(agent) 192.168.163.61 均已配置操作安装光盘为YUM ...

  3. php+mysql案例含源码_[源码和文档分享]基于PHP和MYSQL数据库实现的失物招领系统...

    一.功能描述 1.1 系统实现的目的和意义 目的:在新校区为大家提供一个失物招领的平台. 意义:现在新校区面积较大,同学们丢失物品后,只通过线下途径进行效率低下且失主与拾物者联系不便,所以想通过这个系 ...

  4. mysql多源复制 知乎_技术分享 | MySQL 多源复制场景分析

    作者:杨涛涛 今天有客户问起:如何汇总多台 MySQL 数据到一台上? 我回答:可以尝试下 MySQL 的多源复制. 我们知道 MySQL 单主一从,单主多从,或者级联的主从架构我们都见的很多了.但是 ...

  5. Android—内存泄漏、GC及LeakCanary源码解析

    内存抖动:内存频繁的分配和回收,频繁的GC会导致UI卡顿,严重的时候导致OOM. 内存泄露:程序在向系统申请分配内存空间后(new),在使用完毕后未释放.结果导致一直占据该内存单元,我们和程序都无法再 ...

  6. Android内存泄漏定位、分析、解决全方案

    为什么会发生内存泄漏 内存空间使用完毕之后未回收, 会导致内存泄漏.有人会问:Java不是有垃圾自动回收机制么?不幸的是,在Java中仍存在很多容易导致内存泄漏的逻辑(logical leak).虽然 ...

  7. android 内存泄漏分析工具,Android内存泄漏终极解决篇(上)

    一.概述 在Android的开发中,经常听到"内存泄漏"这个词."内存泄漏"就是一个对象已经不需要再使用了,但是因为其它的对象持有该对象的引用,导致它的内存不能 ...

  8. android 内存泄漏(持续更新)

    1.产生原因 该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收 参考: Android 内存泄漏总结-阿里云开发者社区 2.内存泄漏的场景       1.单例导致内 ...

  9. mysql复制多行_mysql中的复制方式总结(半同步复制,并行复制,多源复制)

    一.MySQL主从复制(异步复制,默认) Mysql主从复制原理 Mysql的复制原理大致如下: 1.主库记录binlog日志 在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志b ...

最新文章

  1. 【LaTeX】E喵的LaTeX新手入门教程(3)数学公式
  2. IT运维服务管理中知识
  3. HTML5学习笔记(二)2015-12-7
  4. java整合apollo(一)
  5. html中flash的使用,[转载]flash中可以使用的HTML标签[有用]
  6. [转载] python中字符串编码形式及其所占字节
  7. css垂直水平居中的整理
  8. android权威指南十三章,《Android编程权威指南》第30~32以及第34章读书笔记
  9. 图书封面的故事之——“巴别塔”选自《七周七语言:理解多种编程范型》
  10. oracle11g 冷备,oracle11G Windows冷备恢复
  11. FCKeditor配置和使用(转)
  12. web前端效率提升之禁用缓存-遁地龙卷风
  13. 何凯明———去雾算法论文阅读记录
  14. 全套web前端课程思维导图+视频+源码 web高端课程 深入学习 624个视频教程
  15. redis专题-----11-----redis订阅发布以及stream
  16. Python3 计算空气质量指数AQI
  17. tof相机简介及三维坐标转化,plotly画3D点云
  18. 数字化转型 — 新能源汽车 — 产品设计与研发流程
  19. 【安卓Handler】Handler消息机制
  20. alsa 驱动介绍及user层到hw层文件ioctl操作流程分析

热门文章

  1. java中抽象接口_一篇文章让你彻底理解java中抽象类和接口
  2. kmeans及模型评估指标_模型评估常用指标
  3. python自带图形模块_检查单击是否在图形对象内[Python图形模块]
  4. iOS 图片处理-图片旋转和裁剪
  5. 按照文字内容动态设置TableViewCell的高度
  6. 运维开发笔记整理-前后端分离
  7. windows 自动化目录大纲(各企业架构不一样,按需选择)
  8. 【地图API】收货地址详解2
  9. oracle 内存分配和调优 总结
  10. 20151102adonet2