MySQL实例crash深度剖析:truncatetableevents_statements_summary_by_diges...
需积分: 0 47 浏览量
更新于2024-09-01
收藏 255KB PDF 举报
本文将深入探讨MySQL实例crash的案例,针对生产环境中多台MySQL 5.6.21服务器出现的不定期crash问题进行详细分析。问题发生时,错误日志中缺乏崩溃堆栈信息,仅记录了重启过程。为了定位问题,作者采取了一系列排查步骤:
1. **开启mysql core dump功能**:首先在my.cnf文件中添加了`core_file`配置项,并设置了`core-file-size=unlimited`,允许在服务崩溃时生成corefile。同时,调整系统参数`suid_dumpable`,使得corefile可以正确生成。
2. **收集崩溃核心文件**:在开启了core dump之后,当服务器再次crash,corefile成功生成,这为后续的故障诊断提供了关键线索。
3. **利用gdb分析堆栈信息**:通过gdb工具解析corefile,发现崩溃是由`table_esms_by_digest::delete_all_rows`中的`truncatetableevents_statements_summary_by_digest`操作引起的。这与数据库内一个用于监控DML(数据修改)活动的分析工具紧密相关,该工具每分钟从`events_statements_summary_by_digest`表获取数据并执行truncate操作。
4. **停止DML采集程序的影响**:通过暂停这个采集程序,服务器的crash现象得以缓解,表明这个问题可能与该工具的频繁操作有关。
5. **深入核心函数的分析**:进一步分析多个corefile显示,崩溃点集中在`_lf_pinbox_real_free`函数上。这提示可能存在内存管理问题,特别是当查看到某个变量地址偏低时,可能预示着内存泄漏或其他内存异常。
6. **现场环境的两点关注**:
- **内存异常**:变量地址的不正常可能是内存溢出或内存管理不当的迹象。
- **潜在的并发问题**:由于涉及到多台服务器和频繁的DML操作,可能存在并发控制或锁竞争的问题,导致内存泄露或资源争抢引发crash。
通过对crash核心文件的深入分析,文章提供了一种逐步排查和定位MySQL实例crash问题的方法,包括检查内存异常、分析高频率操作对系统的影响以及可能的并发问题。这对于MySQL管理员和开发人员来说,是一个实用的学习案例,可以帮助他们更好地理解和解决类似问题。
2008-05-20 上传
2012-02-28 上传
2019-03-16 上传
2023-07-08 上传
2023-08-10 上传
2024-10-26 上传
2024-01-11 上传
2023-10-30 上传
2024-10-27 上传
weixin_38596413
- 粉丝: 6
- 资源: 956
最新资源
- StarModAPI: StarMade 模组开发的Java API工具包
- PHP疫情上报管理系统开发与数据库实现详解
- 中秋节特献:明月祝福Flash动画素材
- Java GUI界面RPi-kee_Pilot:RPi-kee专用控制工具
- 电脑端APK信息提取工具APK Messenger功能介绍
- 探索矩阵连乘算法在C++中的应用
- Airflow教程:入门到工作流程创建
- MIP在Matlab中实现黑白图像处理的开源解决方案
- 图像切割感知分组框架:Matlab中的PG-framework实现
- 计算机科学中的经典算法与应用场景解析
- MiniZinc 编译器:高效解决离散优化问题
- MATLAB工具用于测量静态接触角的开源代码解析
- Python网络服务器项目合作指南
- 使用Matlab实现基础水族馆鱼类跟踪的代码解析
- vagga:基于Rust的用户空间容器化开发工具
- PPAP: 多语言支持的PHP邮政地址解析器项目