当前位置: 首页 > article >正文

【MySQL】清理二进制日志文件 binlog.000XXX 以解决 Ubuntu 系统磁盘空间耗尽的问题

问题描述

在使用Ubuntu系统时,发现磁盘空间异常地被填满。通过使用ncdu工具进行检查,结果显示/var/lib/mysql文件夹占用了高达63GB的存储空间。

进一步查看该目录,发现存在几百个以binlog为前缀的文件。


原因分析

这些以binlog为前缀的文件,实际上是MySQL的二进制日志(binlog)文件。二进制日志记录了数据库中所有更改的详细信息,包括但不限于对数据的插入、删除、更新,对表和数据库的创建、更改、删除等操作。每一次这样的操作都会在二进制日志中生成一个新的日志事件,并被写入到一个新的二进制日志文件中。因此,如果数据库的活动量较大,二进制日志文件将会迅速增长,可能占用大量的磁盘空间。

此外,MySQL的二进制日志是持久化存储的,除非手动删除或者设置了自动过期(通过expire_logs_days配置项),否则这些日志文件将会永久保留在磁盘上。如果没有定期清理旧的二进制日志文件,这些文件将会累积起来,占用更多的磁盘空间。

因此,为了避免磁盘空间被耗尽,需要定期清理旧的二进制日志文件,或者设置二进制日志的自动过期。


解决方案

  1. 查看日志文件列表
SHOW BINARY LOGS;

列出服务器上的所有二进制日志文件。

注意,只有具有 REPLICATION CLIENT 权限的用户才能执行 SHOW BINARY LOGS; 命令。

  1. 查看当前正在使用的日志文件
SHOW MASTER STATUS;

显示关于主服务器二进制日志的信息。这个命令通常在配置复制时使用,以获取当前二进制日志文件的名字和位置。这些信息将被用于在从服务器上指定复制应该从哪里开始。

注意,只有具有 REPLICATION CLIENT 权限的用户才能执行 SHOW MASTER STATUS; 命令。

可以看到我的数据库正在使用的日志文件是binlog.000777。

  1. 删除其他日志文件
purge binary logs to 'binlog.000777';

用于清理磁盘空间,因为二进制日志文件可能占用大量的磁盘空间。在大多数情况下,你不需要保留所有的二进制日志文件,特别是那些已经被备份和复制的旧日志文件。

注意

  • 只有具有 SUPER 权限的用户才能执行 PURGE BINARY LOGS 命令。
  • 将binlog.000777替换为你查询到的正在使用的日志文件的文件名。

  1. 再次查看日志文件列表
SHOW BINARY LOGS;

可以看到只剩下binlog.000777了。

清理日志文件后,可以看到/var/lib/mysql目录只剩下200多MB了,果然磁盘空间杀手是MySQL的binlog文件。


参考资料

https://blog.csdn.net/sinat_14982831/article/details/74738737


http://www.kler.cn/news/359786.html

相关文章:

  • K8S调度不平衡问题分析过程和解决方案
  • Python网络请求库requests的10个基本用法
  • 微信小程序canvas 生成二维码图片,画图片,生成图片,将两个canvas结合并保存图片
  • 探索 Jupyter 笔记本转换的无限可能:nbconvert 库的神秘面纱
  • 网络空间安全之一个WH的超前沿全栈技术深入学习之路(一:渗透测试行业术语扫盲)作者——LJS
  • Linux系统安装软件的4种方式【源码配置编译安装、yum安装、rpm包安装、二进制软件包安装(.rpm/.tar.gz/.tgz/.bz2)】
  • 数据驱动的未来:AI智能分析网关V4车辆违停算法与智慧城市交通管理
  • .net framework 3.5sp1安装错误卡住不动怎么解决
  • 机器学习作业:HW2分类(Phoneme Classification音素分类)代码详解
  • 引领企业数字化未来:物联网与微服务架构的深度融合之道
  • 用户界面设计:视觉美学与交互逻辑的融合
  • (46)MATLAB仿真从正弦波转换为方波
  • 【重拾算法第一天】质数约数欧拉筛 埃氏筛GCD
  • NoSQL 简介
  • [枚举坤坤]二进制枚举基础
  • 【WPF】中Binding的应用
  • (已开源-ECCV2024)BEV检测模型-LabelDistill,使用真值进行知识蒸馏
  • QT关闭界面后退出线程
  • docker 数据管理,数据持久化详解 一
  • dfs排列数字(新手)c++