磁盘满了MySQL会做什么?

记一次MySQL磁盘满了之后清理的过程 昨天使用命令发现磁盘使用率为100%了,还剩几十兆。 一系列神操作 备份数据库,删除实例、删除数据库表、重启mysql服务,结果磁盘空间均没有释放。 怎么办 网上查了很多资源,说要进行磁盘碎片化整理。原因是datafree占据的空间太多啦。具体可以通过这个sql查看。 SELECT CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB') AS data_size, CONCAT(TRUNCATE(SUM(max_data_leng 阅读详情

最近遇到一个故障和磁盘满有关系,并且同事也发现经常有磁盘满导致操作hang住无响应的情况,于是抽时间研究了一下这2种情况。

 

一、磁盘满了之后MySQL会做什么?

我们看下官方的说法

When a disk-full condition occurs, MySQL does the following: 
  * It checks once every minute to see whether there is enough space to write the current row. If there is enough space,it continues as if nothing had happened.
  *
Every 10 minutes it writes an entry to the log file, warning about the disk-full condition.

其实MySQL本身并不会做任何操作,如官方文档说说,只会每分钟check一次是否有空闲空间,并且10分钟写一次错误日志。

但是再次期间由于磁盘满了,意味着binlog无法更新,redo log也无法更新,所有buffer pool中的数据无法被flush上,如果不幸的服务器重启,或者实例被kill了,那必然会造成数据丢失,这几乎是一定的。所以,处理磁盘满的问题最好是先释放出来一定空间让dirty数据刷新下来。

 

二、磁盘满了为什么会导致操作hang住?

1、select

  首先经过经验和实际测试,select操作不会由于磁盘满导致问题,也就是所有select操作都会正常运行。

2、insert

  经过不通的测试发现,当磁盘满了之后,并不是第一个insert就卡住,而是会在n个之后出现卡住的情况。

  通过查看error日志,发现卡住现象和刷磁盘的操作有关系。

[ERROR] /usr/local/mysql-5.1.42/libexec/mysqld: Disk is full writing './test/cj_webex.MYD'

[ERROR] /usr/local/mysql-5.1.42/libexec/mysqld: Disk is full writing './mysql-bin.000017'

  为了验证推论是否正确,我们将sync_binlog设置为1,在这种情况下,insert第一条就卡住了,并且error log中直接报错提示写binlog失败。看来卡住确实和刷磁盘有关系。

  目前已知和刷磁盘有关系的参数有3个,分别是sync_binlog,innodb_flush_log_tr_commit,和duoblewrite。

3、show slave status

  在从库经过测试,操作会被卡住,这主要是由于执行show slave status需要获得LOCK_active_mi锁,然后锁上mi->data_lock,但是由于磁盘满了无法将io_thread中的数据写入到relay log中,导致io_thread持有mi->data_lock锁,这就导致了死锁。

  所以,这就导致在磁盘满的情况下,执行show slave status操作会卡住。

4、show status

  测试可以正常操作,但是如果先执行了show slave status操作的情况下,show status也会被卡住。这是因为执行show status需要锁上LOCK_status,而由于status状态中包含slave status,所以还需要锁上LOCK_active_mi。如果限制性了show slave status,这时候由于mi->data_lock死锁问题,导致io_thread不会释放LOCK_active_mi锁。这时候就导致show status和show slave status争抢同一把LOCK_active_mi锁,也形成了死锁。

  所以,在磁盘满的情况下,如果先执行show slave status,后执行show status,连个操作都会卡住。

 

ps:3和4的结果可以参考,这篇blog《MySQL源代码管中窥豹(一):磁盘写满之后,数据库show status受到阻塞的原因》http://my.oschina.net/llzx373/blog/224175


mysql磁盘满时操作 当磁盘空间写满了之后,MySQL是无法再写入任何数据的,包括对表数据的写入,以及binlog、binlog-index等文件。 当然了,因为InnoDB是可以把脏数据先放在内存里,所以不会立刻表现出来无法写入,除非开启了binlog,写入请求才会被阻塞。 当MySQL检测到磁盘空间满了,它会: 每分钟:检查空间是否得到释放,以便写入新数据。当发现有剩余空间了,就会继续写入数据,一切照 阅读详情

相关推荐

银河飞腾FT6678实战指南:OpenMP多核并行编程优化技巧

本文详细介绍了在银河飞腾FT6678多核处理器上使用OpenMP进行并行编程的实战技巧与优化方法。从基础语法到环境配置,再到性能优化的五大核心技巧,包括循环并行化、并行粒度控制、reduction子句使用等,帮助开发者充分发挥FT6678的8核计算能力。通过实际案例展示如何将图像处理算法从200ms优化到28ms,并深入探讨了任务调度、内存访问优化等进阶主题。

weixin_29234423的博客 285

mysql中磁盘满了会怎样_如果MySQL磁盘满了,会发生什么?

使用命令发现磁盘使用率为100%了,还剩几十兆。一系列神操作备份数据库,删除实例、删除数据库表、重启mysql服务,结果磁盘空间均没有释放。怎么办网上查了很多资源,说要进行磁盘碎片化整理。原因是datafree占据的空间太多啦。具体可以通过这个sql查看。SELECT CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),"MB") AS data_size,...

weixin_29230805的博客 430

QMT量化交易桥接方案深度对比:从MiniQMT淘汰说起

量化交易系统中的API桥接,本质是解决本地终端与底层交易引擎之间的通信瓶颈。其核心原理在于绕过GUI封装、直连确定性执行层,从而获得低延迟、高可靠、可监控的指令通路。技术价值体现在策略实盘一致性提升、毫秒级响应保障及运维可控性增强。典型应用场景包括打板策略、T+0套利、高频网格等对时效与稳定性双敏感的自动化交易。本文聚焦国金证券QMT专业版生态,系统剖析DLL注入、HTTP反向代理、IPC共享内存与官方HTTP API四大桥接路径的性能边界、合规风险与工程落地成本,尤其深入解析qmt终端 client is

weixin_33892359的博客 457

mysql某个数据库数据太多导致占满硬盘的解决方式

服务器(Windows系统)上mysql装在C盘,长时间使用后导致C盘爆满,需要将其移动位置或者扩容。

qq_53775184的博客 1942

EEVDF调度算法核心实现解析(一)

本文深入解析Linux kernel 6.6引入的EEVDF调度算法核心实现,详细讲解其基于虚拟截止时间(virtual deadline)的进程挑选机制和红黑树优化设计。通过代码实例展示算法如何平衡系统响应速度与公平性,特别适合需要优化Linux系统性能的开发者参考。

weixin_42522953的博客 476

ns3-gym入门(二):linear-mesh例子详解

学习ns3-gym中关于IEEE 802.11网状网络中控制随机接入的例子linear-mesh

zoe2222226666的博客 1842

mysql磁盘满了之后,居然还能这么玩!(1)

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)最新整理电子书《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!最新整理电子书[外链图片转存中…(img-vVMAGtBE-1714640610119)]《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》

m0_72758098的博客 677

C语言——利用矩阵LU分解法求逆、行列式

本章介绍了LU分解法,以及如何利用LU分解法求逆、行列式,针对每个公式、原理、代码进行了详细介绍,希望可以给大家带来帮助。

王元笙 1万+

MySQL-磁盘空间不足问题

本文介绍查看空间使用情况的方式,以及各种空间问题的原因和解决方案。如果MySQL数据库实例的磁盘空间满,会导致实例变为只读状态,写业务夯住,应用无法对数据库进行写入操作,从而影响业务正常运行。本文介绍查看空间使用情况的方式,以及各种空间问题的原因和解决方案。

2409_88111753的博客 2182

基于激光雷达的目标跟随功能移植到自己的ROS机器人小车上

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、下载目标跟随的源码二、修改话题名称1.修改/cmd_vel话题名称2.修改/scan话题名称3.修改双电机正反转4.目标跟随功能测试 前言 本人尝试把github上的一个目标跟随项目移植到自己的机器人小车上,并且成功了,最终小车可以跟着人移动,在这里分享一下心得。基于激光雷达的目标跟随,通过获取激光雷达的信息,跟随最近的物体。 提示:以下是本篇文章正文内容,下面案例可供参考 一、下载目标跟随的源码 源码地址:https:

weixin_44574633的博客 4461

【RT-DETR涨点改进】独家小目标涨点改进篇 | TGRS 2025 | RT-DETR引入ABRNet小目标检测顶刊中的:ARF自适应性感受野和MCA双向交叉轴注意力,适合小目标检测有效涨点

本文提出了一种改进的RT-DETR小目标检测方法,通过集成自适应感受野模块(ARF)和多尺度交叉轴注意力模块(BC)来提升检测性能。ARF模块采用多种卷积核动态调整感受野,有效捕获多尺度目标特征并减少背景干扰;BC模块通过多尺度交叉轴注意力机制增强全局信息提取和特征融合能力。实验表明,该方法在复杂背景下显著提升了红外小目标检测的精度和效率,同时降低了计算开销。文章详细介绍了模块结构、原理及实现代码,并提供了多种改进配置方案,为小目标检测任务提供了有效的解决方案。

Ai缝合怪、助力小伙伴高效发论文 570

mysql 磁盘满了_磁盘满了MySQL会做什么?

最近遇到一个故障和磁盘满有关系,并且同事也发现经常有磁盘满导致操作hang住无响应的情况,于是抽时间研究了一下这2种情况。一、磁盘满了之后MySQL会做什么?我们看下官方的说法When a disk-fullcondition occurs, MySQL does the following:* It checksonce every minute to see whether there is ...

weixin_36378951的博客 218

论文复现《基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方案》

电力系统暂态电压稳定评估方案 摘要 本研究提出了一种基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方法。通过分析相空间中相邻轨迹的收敛或发散特性,该方法能够提前判别系统稳定性。论文首先阐述了暂态电压稳定机理,详细介绍了最大李雅普诺夫指数的计算方法。针对IEEE-39节点系统,建立了仿真模型并获取不同故障场景下的数据。研究开发了完整的评估程序,包括数据预处理、相空间重构、指数计算等模块,并通过与时域仿真结果的对比验证了方法的准确性。实验结果表明,该方法能够快速有效地评估电力系统的暂态电压稳定性,为系统安全运

max500600的博客 186

mysql 磁盘满了hang_磁盘满了MySQL会做什么?_MySQL

最近遇到一个故障和磁盘满有关系,并且同事也发现经常有磁盘满导致操作hang住无响应的情况,于是抽时间研究了一下这2种情况。一、磁盘满了之后MySQL会做什么?我们看下官方的说法When a disk-full condition occurs, MySQL does the following:   * It checks once every minute to see whether ther...

weixin_29224529的博客 208

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

扩有mysql的磁盘,磁盘满了MySQL会做什么?

最近遇到一个故障和磁盘满有关系,并且同事也发现经常有磁盘满导致操作hang住无响应的情况,于是抽时间研究了一下这2种情况。一、磁盘满了之后MySQL会做什么?我们看下官方的说法When a disk-full condition occurs, MySQL does the following:* It checks once every minute to see whether there i...

weixin_36250200的博客 223

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

mysql 磁盘满了_MySQL处理磁盘满的方式

本文主要介绍了MySQL响应磁盘满错误的方式(如设备上无剩余空间),以及响应超配 额错误的方式(如写入失败或达到了用户屏蔽限制)。 本文介绍的内容与写入MyISAM表有关。它也适用于写入二进制日志文件和二进制索引文件,但对 row和record的应用应被视为event。本文主要介绍了MySQL响应磁盘满错误的方式(如“设备上无剩余空间”),以及响应超配 额错误的方式(如“写入失败”或“达到了用户屏...

weixin_35595817的博客 620

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

当 mysql 的磁盘空间满了,通常会发生什么

当 MySQL 的磁盘空间满了,会出现一系列问题,影响数据库的正常运行。

Debug yourself! 1001

mysql数据库存满了_磁盘空间满了之后MySQL会怎样

大多数用户在对于磁盘进行分区的时候都是习惯性的不给系统盘预留很大空间,其实这并不是一个好习惯。因为系统分区并不像我们想象的那样会仅仅操作系统,系统分区多数还是会承载操作系统主要应用软件MySQL会发生什么事呢?又应该怎么应对?会发生什么事当磁盘空间写满了之后,MySQL是无法再写入任何数据的,包括对表数据的写入,以及binlog、binlog-index等文件。当然了,因为InnoDB是可以把脏数...

weixin_39843151的博客 939

mysql 磁盘空间_磁盘空间满了之后MySQL会怎样

大多数用户在对于磁盘进行分区的时候都是习惯性的不给系统盘预留很大空间,其实这并不是一个好习惯。因为系统分区并不像我们想象的那样会仅仅安装一个操作系统,系统分区多数还是会承载操作系统主要应用软件安装任务。那么当磁盘空间爆满后,MySQL会发生什么事呢?又应该怎么应对?会发生什么事当磁盘空间写满了之后,MySQL是无法再写入任何数据的,包括对表数据的写入,以及binlog、binlog-index等文...

weixin_30277297的博客 439

模拟磁盘满情况下MySQL表现

目录创建大文件写入数据查看错误日志参考 本文主要模拟磁盘满的情况下,MySQL服务的表现。 模拟磁盘满的故障,可以通过创建大文件来进行。 创建大文件可通过三个进行: truncate、dd、fallocate。 本文使用dd命令创建大文件。 创建大文件 /bin/dd if=/dev/zero of=/tmp/dd_big_file bs=1G count=360 /bin/dd: writing `/tmp/dd_big_file': No space left on device 186+0 reco

翔云 517

MySQL - 磁盘满了怎么办?快速清理与预防方案

MySQL磁盘爆满应急处理与预防方案 摘要 本文针对MySQL磁盘爆满问题提供了一套完整的解决方案,包括紧急响应、根因分析和长效预防措施。首先介绍了MySQL占用磁盘空间的五大主要原因:二进制日志(binlog)、InnoDB数据表、undo/redo日志、各类日志文件以及临时文件。在紧急处理部分,详细讲解了5分钟内恢复服务的操作步骤,包括清理过期binlog、轮转日志文件和收缩临时表空间等安全方法。接着分析了可能导致磁盘爆满的根本原因,如大事务、表膨胀和长事务等。最后从Java应用层角度,给出了避免批量导

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

mysql 磁盘已满,Mysql表已满,有足够的磁盘空间

我在一个改变了~300k行表的请求中得到了“一般错误:1114表'文章'已满” .请求:ALTER TABLE article ADD intId INT AUTO_INCREMENT NOT NULL PRIMARY KEY, ADD categoryIntId INT DEFAULT NULL, ADD sourceIntId INT DEFAULT NULL我有可用的磁盘空间:Filesys...

weixin_29415429的博客 195

如果mysql磁盘满了,会发生什么?还真被我遇到了

点击上方“java大数据修炼之道”,选择“设为星标”优质文章和精品资源, 第一时间送达关注公众号后台回复资源获取实战教学资料+视频使用命令发现磁盘使用率为100%了,还剩几十兆。一系列神...

hello world! 464

硬盘满了 mysql启不来_MySQL数据库之磁盘已满造成的mysql启动失败问题分享

本文主要向大家介绍了MySQL数据库之磁盘已满造成的mysql启动失败问题分享 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。突然发现mysql死活都启不起来了:复制代码代码如下:/etc/init.d/mysqlrestartStoppingMySQL:[FAILED]Timeou...

weixin_29103603的博客 1046
上一篇: 由12306.cn谈谈网站性能技术
下一篇: mysql探究之null与not null
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值