FAQ系列 | 磁盘空间满了之后MySQL会怎样

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

导读

当磁盘空间爆满后,MySQL会发生什么事呢?又应该怎么应对?

会发生什么事

当磁盘空间写满了之后,MySQL是无法再写入任何数据的,包括对表数据的写入,以及binlog、binlog-index等文件。
当然了,因为InnoDB是可以把脏数据先放在内存里,所以不会立刻表现出来无法写入,除非开启了binlog,写入请求才会被阻塞。

当MySQL检测到磁盘空间满了,它会:

每分钟:检查空间是否得到释放,以便写入新数据。当发现有剩余空间了,就会继续写入数据,一切照旧。
每十分钟:如果还是发现没剩余空间,则会在日志中写入一条记录,报告磁盘空间满(这时候只写入几个字节还是够的)。
应该怎么办

那么,当发现磁盘空间满了之后,我们应该怎么处理呢,建议:

提高监控系统检测频率,预防再次发生;
及时删除不用的文件,释放空间;
若有线程因磁盘满的问题被阻塞了,可先杀掉,等到下一分钟重新检测时它可能又可以正常工作了;
可能因磁盘满导致某些线程被阻塞,引发其他线程也被阻塞,可把导致阻塞的线程杀掉,其他被阻塞的线程也就能继续工作了。
例外

有个例外的情况是:
当执行 REPAIR TABLE 或者 OPTIMIZE TABLE 操作时,或者执行完 LOAD DATA INFILE 或 ALTER TABLE 之后批量更新索引时,这些操作会创建临时文件,当执行这些操作过程中mysqld发现磁盘空间满了,就会把这个涉及到的表标记为crashed,删掉临时文件(除了 ALTER TABLE 操作,MySQL会放弃正在执行的操作,删除临时文件,释放磁盘空间)。

备注:当执行这些命令过程中mysqld进程被意外被杀掉的话,其所生成临时文件不会自动删除,需要手工删掉才能释放磁盘空间。

文章转自老叶茶馆公众号,原文链接:https://mp.weixin.qq.com/s/qQsKj5kHE0P41rWvBZ26Kg

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL 安全 关系型数据库
MySQL有哪些常见问题
MySQL有哪些常见问题
|
9月前
|
关系型数据库 MySQL 数据库
MySQL常见问题一
MySQL常见问题一
195 0
|
监控 关系型数据库 MySQL
FAQ系列 磁盘空间满了之后MySQL会怎样
FAQ系列 | 磁盘空间满了之后MySQL会怎样
179 0
|
SQL 存储 算法
[MySQL FAQ]系列 — 什么情况下会用到临时表
[MySQL FAQ]系列 — 什么情况下会用到临时表
|
关系型数据库 MySQL PHP
MySQL - 如何查看 MySQL 服务启动失败具体问题
MySQL - 如何查看 MySQL 服务启动失败具体问题
213 0
MySQL - 如何查看 MySQL 服务启动失败具体问题
|
SQL 存储 安全
[MySQL FAQ]系列 — 如何安全地关闭MySQL实例
[MySQL FAQ]系列 — 如何安全地关闭MySQL实例
225 0
|
SQL 存储 关系型数据库
[MySQL FAQ]系列 — PROFILING中要关注哪些信息
[MySQL FAQ]系列 — PROFILING中要关注哪些信息
|
SQL 监控 关系型数据库
mysql常见问题解决
日常使用mysql数据库遇到的一些问题,做下记录,会持续更新。 一、MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法 环境:linux,mysql5.
2259 0
|
监控 关系型数据库 MySQL
FAQ系列 | 磁盘空间满了之后MySQL会怎样
FAQ系列 | 磁盘空间满了之后MySQL会怎样
|
关系型数据库 MySQL
如何查看MySQL的表空间
SELECT CONCAT( table_schema, '.', table_name ) table_name, CONCAT( ROUND( data_length / ( 1024 *1024 ) , 2 ) , 'M' ) data_length, CONCAT( R.
5548 0