mysql 数据库磁盘巨量占用惊魂
一、事由:主力 Mysql 数据突然巨量占满空间而停摆
空间占满 100G 后,再度占满 170G,冒了一阵冷汗,以为受攻击,如下图
二、时间点回顾
- 15 点,发现数据库占满 100G 空间,查了实际数据库文件大小才 11G
- 虽觉意外,为恢复正常,还是先加空间(还好是 RDS 云数据库,硬盘扩展方便)
- 空间加到 170G,数据库恢复正常,然后就找日志表来清,想缩减下空间占用
- 删除了不少日志表(使用 truncate 清表),也看到空间占用微微在下降
- 还有一张千成级的日志表,准备要清掉,结果开发说,要留下本月的数据,于是就用 delete+optimize 方式 : delete from ###_logs where id < ####, 结果十几分钟没有结果返回
- 最后跟开发协调,还是把这张表全清了,还是用 truncate 清表,瞬间清掉了
- 查看数据库的空间占用,好像没降多少空间
- 大概过了十几分钟,进入数据库面板,发现空间再度被占满,有点急了,第一反应是不是被攻击了
- 查数据库文件,还是 11G,那为什么会占满 170G
- 于是又再次增加空间,并关掉远程连接,把疑似问题账号关了
- 重启数据库
- 结果数据库空间占用回到 20G, 一切又正常了
三、事故排查
- 是否受攻击:仔细看了网络连接情况,正常,排除了攻击
- 慢查询监控:近期有不少慢查询记录,估计慢查询会产生 temp 临时文件
- 数据库实例两年多没有重启过,网上说 mysql5.7 默认情况,不重启的话,临时文件会一直累积
- 千万级表 delete 产生大量临时文件
- 重启 mysql 实例是最有效的清临时文件方式
本文由 vps网友提供,转载请注明出处
本文链接: https://www.vpsvsvps.com/discuss/a/1676472052887851008.html