背景

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. docker相关总结

    Docker 的相关使用记录 一.安装docker linux环境使用yum命令安装docker 第一步:确保自己的虚拟机没有安装过docker,如果安装过的需要将原先的docker进行卸载,命令如下 ...

  2. SVM公式详尽推导,没有思维跳跃。

    假定数据集\(T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\},x_n \in R_k, y_n \in \{1,-1\}\)线性可分,SVM的优化目标是: 优化一个超平 ...

  3. C#高级特性(反射)

    今天来讲解反射的应用: 一.反射是什么? 简诉一下,反射就是.Net Framework 的一个帮助类库,可以获取并使用metadata(元数据清单):说的通俗易懂点,就是不用通过引用,仍然可以使用其 ...

  4. aardio + VBScript 混合开发

    aardio 与 VBScript 可以直接混合编程,VBScript 属于 Windows 系统自带组件 -- 可以方便地生成独立 EXE 程序. 快速入门 首先创建 VBScript 解释器,aa ...

  5. [题解] BZOJ 3456 洛谷 P4841 [集训队作业2013]城市规划 多项式,分治FFT

    题目 令\(f_i\)表示n个点的答案.考虑容斥,用所有连边方案减去有多个连通块的方案.枚举1号点所在的连通块大小: \(f_i=2^{i(i-1)/2}-\sum_{j>0}^{i-1}f_j ...

  6. 一篇文章带你掌握主流服务层框架——SpringMVC

    一篇文章带你掌握主流服务层框架--SpringMVC 在之前的文章中我们已经学习了Spring的基本内容,SpringMVC隶属于Spring的一部分内容 但由于SpringMVC完全针对于服务层使用 ...

  7. NOI2018 D1T1 洛谷P4768 归程 (Kruskal重构树)

    实际上是一个最短路问题,但加上了海拔这个条件限制,要在海拔<水位线p中找最短路. 这里使用Kruskal重构树,将其按海拔建成小根堆,我们就可以在树中用倍增找出他不得不下车的点:树中节点有两个权 ...

  8. Goland Socket 服务

    客户端发送消息 并接收服务端消息 package main import ( "fmt" "net" ) func main() { // conn, err ...

  9. 多线程的使用(springboot)

    预备知识 业务使用多线程的原因 目的是面对高并发的时候,提高运行速度 场景一: 一个业务逻辑有很多次的循环,每次循环之间没有影响,比如验证1万条url路径是否存在,正常情况要循环1万次,逐个去验证每一 ...

  10. spark之交集并集差集拉链

    spark之交集并集差集拉链 def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster(&qu ...