讲师中心 微信公众号
AI工具推荐 视频效率加速

MySQL升级后如何监控磁盘空间占用_设置空间预警机制

酷萱同学_8458

酷萱同学_8458

发布时间:2026-05-04 15:41:00

|

188人浏览过

|

来源于php中文网

原创

升级后ibdata1和binlog最易“膨胀”:前者因innodb_file_per_table=OFF导致删表不释放空间,后者因binlog_expire_logs_seconds未配置而持续堆积;需用du脚本+mysqld_exporter监控物理占用并分层预警。

mysql升级后如何监控磁盘空间占用_设置空间预警机制

查清升级后哪些文件会突然“膨胀”

MySQL 8.0+ 升级后,ibdata1 不再默认承担系统表空间(除非你显式设了 innodb_system_tablespace_file_per_table=OFF),但很多老实例仍保留 innodb_file_per_table=OFF 配置——这时所有表数据都挤进 ibdata1,删表、清数据完全不释放磁盘空间。你看到磁盘没降反升,大概率是它在默默吃空间。

二进制日志也容易被忽略:log_bin 默认开启,且 expire_logs_days 在 MySQL 8.0.33+ 已被标记为 deprecated,改用 binlog_expire_logs_seconds;如果没配或配错,/var/lib/mysql/mysql-bin.* 可能堆积数月未清理。

  • 立即执行:SHOW VARIABLES LIKE 'innodb_file_per_table'; —— 若为 OFF,ibdata1 就是定时炸弹
  • 确认 binlog 清理策略:SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';,若返回 0 或空值,表示永不清除
  • 检查 relay log(尤其从库):SHOW VARIABLES LIKE 'relay_log_purge';,OFF 时 relay-log.info 和对应文件会持续增长

用 du + 定时脚本盯死关键目录

MySQL 内部视图(如 INFORMATION_SCHEMA.FILES)只反映表逻辑大小,不等于磁盘占用;真正要监控的,是操作系统层面的物理路径。升级后目录结构可能微调(比如 8.0 引入 mysql.ibd 系统表空间文件),必须按实际路径扫。

别依赖单次 du -sh,要固化成可告警的采集逻辑:

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • 核心路径优先级: /var/lib/mysql/(总览)、/var/lib/mysql/mysql-bin.*(binlog)、/var/lib/mysql/relay-log*(中继日志)、/var/lib/mysql/ibdata1(共享表空间)
  • 写个简单脚本(例如 /usr/local/bin/mysql-disk-check.sh),用 du -sb 获取字节数(避免 -h 的单位歧义),输出格式如:binlog_bytes 1234567890
  • 配合 systemd timer 或 cron 每 5 分钟跑一次,把结果写入临时文件或直接发到监控端点

用 Prometheus + mysqld_exporter 抓真实指标

mysqld_exporter 0.15.0+ 版本才完整支持 MySQL 8.0 的新状态变量(如 mysql_global_status_innodb_data_pending_fsyncs),旧版本连 ibdata1 大小都报不准。升级 MySQL 后,务必同步升级 exporter,否则监控就是“假安全”。

关键指标不是看“用了多少”,而是看“还在涨不涨”:

  • mysql_global_status_innodb_data_file_bytes:反映 ibdata1 实际大小,注意它不含 .ibd 文件(那些走 mysql_info_schema_table_size_bytes)
  • mysql_global_status_binlog_bytes:需确认 exporter 启动时加了 --collect.binlog 参数,否则该指标恒为 0
  • mysql_global_status_created_tmp_disk_tables 持续上升?说明 tmp_table_size 或 max_heap_table_size 设置过小,频繁落盘生成临时文件,间接加剧磁盘压力

设置空间预警的两个硬门槛

磁盘预警不能只设“剩余 10% 告警”这种笼统规则——MySQL 的写入行为有突发性,尤其是大事务提交、DDL 执行、或者 OPTIMIZE TABLE 操作,可能几分钟内吃掉几十 GB。必须分层设防。

  • 第一道防线(紧急):当 /var/lib/mysql/ 所在分区使用率 ≥ 85%,立刻触发一级告警(电话/钉钉强提醒),此时已无缓冲余量
  • 第二道防线(观察):监控 binlog_expire_logs_seconds 对应的实际日志体积周环比涨幅 > 300%,或 ibdata1 日增量 > 2GB,说明业务写入模式突变,需人工介入排查
  • 切记:不要对 ibdata1 做自动清理——它不可收缩,任何“清空重装”操作都会导致数据丢失

最常被跳过的动作是验证 purge 是否真生效:执行 PURGE BINARY LOGS BEFORE '2026-03-25 00:00:00'; 后,必须跟一句 ls -lh /var/lib/mysql/mysql-bin.* | tail -5 确认文件数和大小确实减少,而不是只信 SHOW BINARY LOGS; 返回的列表。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2253

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1379

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

815

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3132

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

5288

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1179

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5551

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

4862

2023.08.14

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

20

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 188人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn