• 【MySQL】就这一篇帮你解决 MySQL 磁盘占用过高的问题


    这篇博客主要是来解决 mysql 落盘日志占用磁盘空间过大的问题。我是用 docker 启动的 mysql,然后把 /var/lib/mysql 挂载到宿主机上。有人反馈网页点击无反应,我想的是这么简单,也没改动怎么会报错呢。上服务器,刚好无意看了下 df -h,好家伙磁盘全满,其中挂载 msyql 的文件夹基本上全占。那只好解决了,虽然找运维扩磁盘是一个更舒服的选择,不过这个问题我碰到好几次了。之前都是删掉没用的,先能用再说,不过删到后面,实在没啥可以删的了。

    接下来,来看看我的解决思路。


    瞅一眼

    看一下挂载目录里面是什么文件占这么大

    在这里插入图片描述

    两眼蒙圈,不知道是啥鬼,之前对 mysql 没有做过多了解。不过肉眼可见的,可以看到有 2 类文件占用了很大。

    啥都不懂,就先看看文件最大的能不能删嘛。

    *.log 文件和 mysql-bin.* 文件,这两类占据了很大的空间,不知道干啥的,就去找一下这两货是啥。

    是啥货

    详细的不在这边说,就知道这文件大概是干啥的就行

    mysql-bin*

    有眼不识泰山,原来是 mysql 的 binary log。

    二进制日志记录了所有的 DDL(数据定义语言)语句和 DML(数据操作语言)语句,但是不记录包括数据查询的语句。

    不知道能不能删,等下找找,大概率不能乱删

    *.log

    原来是 general log,难怪这么大。

    general_log,会将所有到达Mysql Server的SQL语句记录。

    这个肯定能删,而且现在 sql 语句都应该可以到日志聚合系统查看,可以不用在这上面看。

    盘他
    binary log

    网上都有,按照此步骤即可删除。前面已经看到,有很多 mysql-bin 文件,所以直接找到现在 mysql 在用的,也就是我不能删的文件是哪个。

    如果看不到挂载目录,只能指令查看,或者数据库IDE的,可以用 show binary logs 来查看总的 mysql-bin 文件

    • 查看正在使用的日志文件

      show master status

    在这里插入图片描述

    • 删除可删除的 mysql-bin 文件

      purge binary logs to ‘mysql-bin.000029’

      在到目录看一下,就没了,无需重启

    general log

    这个网上,比较少,不过也就是清空文件而已。

    cat /dev/null > 7b130360affe.log

    其中 log 是那个最大的文件,切记不要直接 rm -rf log,这大概率删不掉。

    没有下一次

    上面删除的方法都是暂时的,就是过一段大概率还会出现磁盘剩余空间不足的问题,所以还得预防一下。

    binary log

    可以设置自动清理的天数

    修改 my.cnf 里面的 expire_logs_days 为 3 或者一个你觉得几天需要自动清理一次日志的天数。

    修改完后,需要重启不然不生效

    不想要重启的可以在 mysql 里面执行 set global expire_logs_days = 3 这样子也行,不过重启之后就会恢复。

    general log

    默认 general log 开起来,不过可以关掉,没啥必要

    修改 my.cnf 里面的 general_log 为 0

    修改完后,需要重启不然不生效

    不想要重启的可以在 mysql 里面执行 set global general_log = 'OFF' 这样子也行,不过重启之后就会恢复。


    总结
    • 有针对性地去解决问题,msyql 挂载目录生成的文件很多,我第一次看也头大,所以选择逃避。不过针对刺头查一下文章,还是可以解决的。
    • 平时可能没有太在意这些个配置,可以为之后借鉴一下。
    • 还有很多调优的方式,生产需要注意的地方,有大佬知道的可以相互交流下~
  • 相关阅读:
    【SpringBoot】70、SpringBoot实现MySQL数据库自动备份管理系统
    复习C部分:三大循环while篇(内含continue(常用场景2)和break(常用场景1)介绍和使用详情)
    C-Pack: Packaged Resources To Advance General Chinese Embedding
    4、运算符
    售前是什么一
    如何实现纯网页语音视频聊天和桌面分享?(附源码,PC版+手机版)
    第三章 数据链路层 | 计算机网络(谢希仁 第八版)
    惊艳!Linux 中迷人的 Shell 脚本工具
    VirtualBox安装时提示失败(未解决)
    【k8s】8、service详解
  • 原文地址:https://blog.csdn.net/weixin_40242845/article/details/133688317