mysql执行分析日志过多导致磁盘溢出_定期清理与压缩日志文件

秋静吖_5128

秋静吖_5128

2026-04-12

962人浏览

原创

应先确认日志是否必要,再临时或永久关闭;若需保留则调高long_query_time;清理时清空文件内容并压缩归档,推荐用logrotate配合copytruncate实现安全轮转。

mysql执行分析日志过多导致磁盘溢出_定期清理与压缩日志文件

mysql slow_log 和 general_log 文件暴涨,磁盘快满了怎么办

直接停掉日志、删文件不是办法——slow_log 和 general_log 一旦开启,MySQL 会持续追加写入,不自动轮转,也不压缩。你看到的几十 GB 日志文件,往往只是单个未切割的文本,rm 之后如果日志还在写,可能瞬间又占满空间,甚至因 I/O 阻塞拖慢主库。

如何安全关闭或限制日志写入频率

先确认当前是否真在用这些日志:很多线上环境其实并不需要 general_log(记录所有 SQL),而 slow_log 也常因 long_query_time 设得太低(比如 0 或 1)导致全量记录。

  • SHOW VARIABLES LIKE 'slow_query_log'; 和 SHOW VARIABLES LIKE 'general_log'; 查开关状态
  • 临时关闭:SET GLOBAL slow_query_log = 'OFF';(重启失效)或 SET GLOBAL general_log = 'OFF';
  • 永久关闭:修改 my.cnf,删掉或注释掉 slow_query_log = 1 和 general_log = 1 行
  • 若必须保留 slow_log,把 long_query_time 调高到 2–5 秒(SET GLOBAL long_query_time = 3;),避免记录大量无意义短查询

已有大日志文件怎么清理又不丢关键信息

别直接 rm -f 正在被 MySQL 写入的日志文件——Linux 下文件被进程打开后,即使删了,磁盘空间也不会释放,直到 MySQL 重启或重开日志句柄。更稳妥的是“清空内容 + 压缩归档”。

MySQL
MySQL

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

下载
  • 查日志路径:SHOW VARIABLES LIKE 'slow_query_log_file'; 或 SHOW VARIABLES LIKE 'general_log_file';
  • 清空当前文件(不删):echo '' > /var/lib/mysql/slow.log(路径以实际为准),前提是已确认 MySQL 进程仍持有该文件句柄
  • 压缩历史日志:gzip /var/lib/mysql/slow.log.20240401,压缩率通常达 90%+,且 zcat 可随时查看
  • 加个简单定时任务归档(例如每天凌晨):mv /var/lib/mysql/slow.log /var/lib/mysql/slow.log.$(date +\%Y\%m\%d) && gzip /var/lib/mysql/slow.log.$(date +\%Y\%m\%d)

想自动轮转又不想换工具?用 logrotate 最省心

MySQL 自身不支持日志轮转,但系统级 logrotate 完全能接管。关键是配置好 copytruncate ——它会在复制后立刻截断原文件,不中断 MySQL 写入。

  • 新建 /etc/logrotate.d/mysql-slow:
/var/lib/mysql/slow.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    copytruncate
    notifempty
}
  • 测试配置是否合法:logrotate -d /etc/logrotate.d/mysql-slow(-d 是 debug 模式)
  • 注意路径权限:确保 logrotate 运行用户(通常是 root)对日志文件有读写权,否则 copytruncate 会失败
  • 最常被忽略的一点:logrotate 默认按文件大小或时间触发,但如果你的慢日志一天只写几 KB,它可能永远不轮转;反过来,如果某天突发大量慢查,单日就涨到 5 GB,daily 就不够用了。这时候得加 size 100M 或改用 hourly,具体看业务毛刺节奏。

    相关文章

    PHP速学视频免费教程(入门到精通)
    PHP速学视频免费教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    mysql

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

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

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

    2023.06.20

    2333

    6

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

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

    2023.06.21

    1419

    5

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

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

    2023.07.18

    835

    5

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

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

    2023.07.19

    3272

    5

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

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

    2023.07.25

    5588

    4

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

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

    2023.08.08

    1219

    3

    sqlserver和mysql区别
    sqlserver和mysql区别

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

    2023.08.11

    5851

    4

    mysql忘记密码
    mysql忘记密码

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

    2023.08.14

    5082

    7

    mysql事务隔离级别
    mysql事务隔离级别

    mysql规范中定义了四种事务隔离级别,不同的隔离级别对事务的处理有所不同。本专题为大家提供mysql事务隔离级别相关的文章内容,大家可以免费体验。

    2023.08.16

    6814

    11

    热门下载

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

    精品课程

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

    共1课时 | 190人学习