当前位置: 首页
数据库
磁盘空间满导致MySQL无法启动的修复方法

磁盘空间满导致MySQL无法启动的修复方法

热心网友 时间:2026-07-23
转载

MySQL因磁盘空间满无法启动(错误号28)。先用df-h定位满的分区,检查数据目录和临时目录。安全清理:截断慢查询日志和错误日志,用PURGE清理binlog,停库后删除redolog及ibtmp1。若仍无法启动,检查隐藏占用文件、ibdata1膨胀及tmpdir权限。

先说个很实际的问题:MySQL 起不来了,错误日志里赫然写着 Error number 28。别慌,这本质上不是 MySQL 自己出了什么惊天大病,而是操作系统跟它翻脸了——磁盘写不进去了。所有启动动作,不管是刷 redo log、加载表空间还是记一条错误日志,统统被系统拒绝。所以,解决问题的路径很清晰:先释放空间,但绝不能乱动 MySQL 的文件体系结构。

如何修复MySQL因磁盘空间满导致的无法启动问题?

先确认到底是哪个路径塞爆了

别一上来就盯着 /var/lib/mysql 揍,它未必是真凶——/tmp/var/log 甚至根分区都可能才是拖死 MySQL 的元凶。直接跑几个命令就清楚了:

  • df -h:看所有挂载点的使用率,重点关注那些 Use% ≥95% 的行,那才是真正的瓶颈。
  • mysqladmin -u root -p ping:测试基础连通性。如果这条命令都失败了,说明 MySQL 已经卡在了系统层,SQL 级操作就不用想了。
  • 查 MySQL 实际数据目录:用 mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';",确认它落在哪块盘上。另外一个是 tmpdir,别忽略了临时目录:SHOW VARIABLES LIKE 'tmpdir';——如果 /tmp 是个 tmpfs 内存盘,它满了也能把 MySQL 卡死。

哪些文件能立刻删,哪些必须进 MySQL 才能动

千万注意:误删的动作如果姿势不对,MySQL 可能启动报错甚至直接跳过 binlog,后果更麻烦。动手前,先给文件分个类:

  • 安全清空,无需停库:对应 slow_query_log_filelog_error 的文件路径,直接用 echo "" > /path/to/file.log 截断就行,不心疼。
  • 必须进 MySQL 才能删mysql-bin.* 日志文件。千万不能 rm 暴力删除,得用 PURGE BINARY LOGS BEFORE '2026-06-01 00:00:00';PURGE BINARY LOGS TO 'mysql-bin.000200'; 来安全地清理。
  • 需停库后处理ib_logfile0ib_logfile1(即 redo log)。删除它们的前提是,先设好 innodb_fast_shutdown = 0 再正常关闭 mysqld,否则数据库完整性可能出问题。
  • 常被忽略的“隐形冲击波”ibtmp1。即使 MySQL 已经 stop,它也可能还占着几十 GB 不自动释放。停库后直接 rm /var/lib/mysql/ibtmp1 就是了,干净利落。

清理后 MySQL 还起不来?重点检查这三处

空间释放了不等于自动恢复。MySQL 启动时,残留状态照样能把你拦在门外:

  • 检查 /var/log/mysql/error.log 最末几行,如果还有 No space left on device 的报错,说明还有隐藏的大文件没清理干净。用 lsof -p $(pgrep mysqld) | grep deleted 来找出那些已经被删除、但进程仍占着空间的文件。
  • 如果看到 InnoDB: Unable to lock ./ibdata1 或者类似提示,那多半是 ibdata1 膨胀了,并且 innodb_file_per_table = OFF 的情况下,删表也不缩文件大小。这种情况只有导出重建一途。
  • 重启前务必确认 tmpdir 目录权限正确:chown mysql:mysql /tmp(如果 tmpdir 就是 /tmp),否则启动时创建临时文件失败,又是一次崩溃。

要我说,真正棘手的从来不是 binlog 塞满——那是小儿科。真正的硬骨头是 ibdata1 在共享表空间模式下只增不减,或者是 ibtmp1 在异常退出后滞留浪费空间。这两类问题,清理空间后仍然无法启动,必须针对性地处理,不能指望“重启试试”能蒙混过关。

来源:https://www.php.cn/faq/2788207.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
自增主键值从何而来?深入理解原理,告别只会auto_increment

自增主键值从何而来?深入理解原理,告别只会auto_increment

KingbaseES推荐使用serial、bigserial、显式sequence或identity列实现自增主键。serial创建integer并关联序列,bigserial对应bigint;显式sequence可自定义起始值等参数;identity有generatedbydefault(允许指定值)与always(禁止)两种模式。

时间:2026-07-25 22:22
Linux下瀚高数据库授权文件过期及替换解决方案

Linux下瀚高数据库授权文件过期及替换解决方案

在银河麒麟系统下,瀚高数据库hgdb-4 5试用授权20天到期后需替换正式授权文件。正确操作:停止服务,备份旧文件,将授权文件复制到 opt highgo hgdb-4 5 etc lic 并命名为hgdb lic,设置权限600和属主highgo:highgo,再启动服务。禁止直接修改data目录下的license info文件。

时间:2026-07-25 22:22
Oracle BLOB实时同步的5大技术挑战与难点解析

Oracle BLOB实时同步的5大技术挑战与难点解析

OracleBLOB实时同步面临分片组装、多列隔离、长事务跨窗口、事务回滚及大对象资源控制等技术挑战,必须在日志中精确还原完整字段值,才能保证源端与目标端数据完全一致,这对同步系统的稳健性提出了高要求。

时间:2026-07-25 22:22
MySQL禁用redo日志导致全备失败

MySQL禁用redo日志导致全备失败

MySQL全量备份失败是由于数据定义语言操作触发排序索引构建,禁用重做日志导致XtraBackup无法获取一致性备份。测试验证表明,优化表语句即使无数据也会触发该问题。根本原因在于排序索引构建过程跳过了重做日志记录,破坏了备份的一致性。

时间:2026-07-25 20:35
Kafka架构图优化与改进的全面详细步骤与实践指南

Kafka架构图优化与改进的全面详细步骤与实践指南

Kafka作为实时数据流处理的核心中间件,其底层架构虽已相当成熟,但在实际生产环境中,要充分发挥其性能潜力,仍需落实到具体的调优与架构改造上。核心目标可归纳为三点:如何承载更高的吞吐量、如何保障数据不丢失、以及故障发生时如何快速恢复。本文将从这几个关键方向出发,深入探讨如何真正榨干Kafka集群的性

时间:2026-07-25 20:35
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜