背景

12月1号中午突然收到大量报警,某客户环境操作数据库大量失败,报错信息如下图所示:

这个报错我是第一次见,一时间有点无所适从,但是从字面意思来看是MySQL目前处于LOCK_WRITE_GROWTH状态,拒绝执行当前的语句,一定是MySQL出问题了。

初定位

我随即登录阿里云控制台查看MySQL是否有什么异常,果不其然运行状态那里提示“锁定中(空间不足)”,我根据提示链接简单阅读了阿里云关于锁定状态的解释说明以及处理措施。

以下为阿里云官方内容截取,想了解更多细节的请前往推荐阅读部分第一个链接。

虽说事有蹊跷,但是为了快速恢复服务,来不及深思,立即删除了一部分日志型数据,释放出来10个G左右的空间,几分钟以后数据库状态正常。

剥茧抽丝

服务恢复以后我们兵分两路,一方面联系客户扩容数据库,10G估计撑不了多长时间;另一方面我开始剥茧抽丝般的寻找程序上可能的bug,比如新上了什么功能导致存储过多的数据诸如此类。

通过阿里云监控发现11月30的存储空间占用只有300G,到了第二天中午瞬间增长了150G左右,这很不正常,感觉一定是程序的bug,询问一番以后发现昨晚并没有发版,难道是个历史bug?

怎么揪出这个bug呢,我首先寻找阿里云控制台是否有表粒度的空间变化趋势图,找了一圈没找到,只有整体空间的变化趋势,似乎对排查不利,但其中一个细节引起了我的注意,请看下图。

已总空间≠数据空间+临时空间+日志空间,有150G左右的空间被狗吃了?带着问题我又找到了另一张监控,可以初步解释那150G去哪了。

 

这张图中多出来一个“mysql.other.size”,有157G左右,和上面被狗吃掉的150多G高度吻合,成功引起了我的注意,但mysql.other.size到底所谓何物?

真相

接下来我提工单给阿里云工程师询问这一情况,一起看看专业人士的解答。

慢查居然还能导致数据库空间满,也算是弥补了我数据库知识的又一片空白。

看下官网的一篇“RDS MySQL临时文件导致实例磁盘空间满且出现“锁定中”状态”的相关描述(推荐阅读第二个链接)。

 

事后我们重启了数据库,临时表空间释放出来150G,随即叫停了扩容。

接下来需要清理一波慢查,避免悲剧再次发生。

 

推荐阅读

https://help.aliyun.com/document_detail/410115.html?spm=5176.19907426.help.108.7bba1450IcmI9j

https://help.aliyun.com/document_detail/101763.html?spm=5176.19907426.help.11.7bba1450IcmI9j#concept-nqk-bh3-3gb

MySQL空间暴涨150G导致锁定,发生了什么的更多相关文章

  1. 清理 zabbix 历史数据, 缩减 mysql 空间

    zabbix 由于历史数据过大, 因此导致磁盘空间暴涨,  下面是结局方法步骤 1. 停止 ZABBIX SERER 操作 [root@gd02-qa-plxt2-nodomain-web-95 ~] ...

  2. RDS MySQL 空间问题的原因和解决

    来源:https://help.aliyun.com/knowledge_detail/41739.html RDS MySQL 空间问题的原因和解决 更新时间:2016-07-22 17:20:14 ...

  3. MySQL存储引擎 -- MyISAM(表锁定) 与 InnoDB(行锁定) 锁定机制

    前言 为了保证数据的一致完整性,任何一个数据库都存在锁定机制.锁定机制的优劣直接应想到一个数据库系统的并发处理能力和性能,所以锁定机制的实现也就成为了各种数据库的核心技术之一.本章将对MySQL中两种 ...

  4. (转)mysql自增列导致主键重复问题分析

    mysql自增列导致主键重复问题分析...  原文:http://www.cnblogs.com/cchust/p/3914935.html 前几天开发童鞋反馈一个利用load data infile ...

  5. MySQL空间函数实现位置打卡

    项目需求是跟用户当前位置判断是否在给定的地理位置范围内,符合位置限制才可以打卡,其中的位置范围是一个或多个不规则的多边形.如下图,判断用户是在清华还是北大. 图形获取区域坐标 因为项目前端使用微信小程 ...

  6. ASP.NET MVC:会导致锁定的会话

    ASP.NET MVC:会导致锁定的会话 背景 一直没有意识到会话的访问会导致会话锁定,现在想想这样设计是非常合理的,不过某些情况下这样会导致同一个会话的并发访问非常低(只能串行化),好在MS提供了机 ...

  7. Reporting Service 2008 “报表服务器数据库内出错。此错误可能是因连接失败、超时或数据库中磁盘空间不足而导致的”

    今天遇到了两个关于Reporting Service的问题, 出现问题的环境为Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) .具体情况 ...

  8. mysql空间扩展 VS PostGIS

    http://www.cnblogs.com/LBSer/p/3629149.html 功能 Mysql spatial extension  PostGIS 空间索引 仅MyISAM支持R树索引,I ...

  9. 记一次mysql事务未提交导致锁未释放的问题

    记一次mysql事务未提交导致锁未释放的问题 ## 查看未提交的事务(3秒内未操作的事务) SELECT p.ID AS conn_id, P.USER AS login_user, P.HOST A ...

  10. mysql临时表空间暴涨

    (此文刚好遇到转载记录) 一.内部临时表使用 在某些情况下,服务器在处理语句时创建内部临时表,而用户无法直接控制临时表何时发生,完全有MySQL内部自行决定. MySQL在以下几种情况会创建临时表: ...

随机推荐

  1. PHP全栈开发(七):PHP与MySQL存储交互(2.插入、读取)

    <?php $servername = "localhost"; $username = "root"; $password = "beijin ...

  2. IDEA上关于 jstl导包的问题

    IDEA上关于 jstl的问题 在 IDEA上使用 maven创建 web骨架项目,在 pom文件中添加 jstl依赖 <dependency> <groupId>jstl&l ...

  3. spring boot项目使用mybatis-plus代码生成实例

    前言 mybatis-plus官方地址 https://baomidou.com mybatis-plus是mybatis的增强,不对mybatis做任何改变,涵盖了代码生成,自定义ID生成器,快速实 ...

  4. python续集

    上集回顾 数据类型内置方法简介 所有的数据类型基本上都自带了一些操作以及通过点的方式调用自带的方法 整型相关操作 类型转换 int() 十进制转其他进制 bin() oct() hex() 其他进制转 ...

  5. String内建函数

    int length():返回字符串的长度: return value.lengthchar charAt(int index): 返回某索引处的字符return value[index]boolea ...

  6. 路由组件构建方案(分库分表)V1

    路由组件构建方案V1 实现效果:通过注解实现数据分散到不同库不同表的操作. 实现主要以下几部分: 数据源的配置和加载 数据源的动态切换 切点设置以及数据拦截 数据的插入 涉及的知识点: 分库分表相关概 ...

  7. Hyperf使用ElasticSearch记录

    Hyperf 安装 Elasticsearch 协程客户端 hyperf/elasticsearch 主要为 elasticsearch-php 进行了客户端对象创建的工厂类封装,elasticsea ...

  8. 泛化之美 —— C++11 可变参数模板的妙用

    概述 首先这篇文章出自博客园作者:[qicosmos ],我对本文的实例代码进行了学习.思考和整理纠正,理清了文章的全部细节,觉得这是一篇让我受益匪浅的文章.之所以会接触「可变参数模板」这部分的内容, ...

  9. 真正“搞”懂HTTP协议02之空间穿梭

    时隔四年,这个系列鸽了四年,我终于觉得我可以按照自己的思路和想法把这个系列完整的表达出来了. 想起四年前,那时候还是2018年的六月份,那时候我还工作不到两年,那时候我翻译了RFC2616的部分内容, ...

  10. dns隧道攻击原理及常用工具流量分析

    DNS协议是一种请求应答协议,也是一种可用于应用层的隧道技术.虽然DNS流量的异常变化可能会被发现,但是在基于传统socket隧道已经濒临淘汰,TCP.UDP通信大量被安全设备拦截的大背景下,DNS. ...