MySQL中Binlog文件占用空间比较大该如何清理

 更新时间:2025年09月02日 09:23:07   作者:Gary强z  
在MySQL中binlog(二进制日志)是一种记录数据库操作的日志文件,它记录了数据库更改的所有操作,这篇文章主要介绍了MySQL中Binlog文件占用空间比较大该如何清理的相关资料,需要的朋友可以参考下

一、前言

在进行一次数据导入之后,发现服务器磁盘爆满,初步判断是数据库产生了大量binlog所致,接下来进行分析处理。

二、分析

1、查看磁盘空间

通过df -h命令,查看磁盘空间占用情况

2、查找占用文件或目录

通过命令:du -ah -d1,逐级排查分析,排查找到占用最大的文件或目录

3、找到binlog文件

找到这样一大堆binlog文件,显然正是罪魁祸首。

接下来考虑如何清理这些binlog文件。

三、处理

binlog日志可以通过参数expire_logs_days设置文件保留天数。

1、自动清理

1)设置过期时间

临时设置:

-- 查看binlog保留天数参数设置,0表示永不删除
SHOW VARIABLES LIKE 'expire_logs_days';

-- 临时修改(重启失效)
SET GLOBAL expire_logs_days = 7;

永久设置:修改配置文件/etc/my.cnf,重启mysql

[mysqld]
# 设置过期时间为7天
expire_logs_days = 7
# 限制单个文件大小
max_binlog_size = 1024M

2)触发清理机制

执行以下命令或重启数据库,触发清理机制

-- 刷新日志触发清理
FLUSH LOGS;  

3)执行结果

> 登录mysql,设置过期时间,并执行触发机制:

 因为是这两天执行产生的, 所以发现binlog并没有清除减少,所以接下来就要手动清理了。

2、手动清理

1)查看binlog状态

-- 查看binlog文件列表
SHOW BINARY LOGS; 
-- 查看主库正在使用的文件
SHOW MASTER STATUS; 
-- 查看从库读取位置(主从环境必备)
SHOW SLAVE STATUS\G;

2)删除文件

-- 删除指定文件之前的日志(不包含该文件)
PURGE BINARY LOGS TO 'mysql-bin.000510';

-- 删除指定时间前的日志
PURGE BINARY LOGS BEFORE '2025-06-20 00:00:00';

执行删除,查看binlog文件,磁盘空间释放成功。

四、注意事项

1、不要直接使用 rm 删除文件

(会导致主从中断)

2、不要删除正在使用的 binlog

(SHOW MASTER STATUS 显示的当前文件)

3、主从环境特别注意

1)确保清理的文件‌早于所有从库的读取位置

-- 在每个从库执行:
SHOW SLAVE STATUS\G  -- 观察 Relay_Master_Log_File 和 Exec_Master_Log_Pos

2)清理后立即检查主从同步状态

SHOW SLAVE STATUS\G  -- 验证 Slave_IO_Running 和 Slave_SQL_Running

4、生产环境操作前务必备份 binlog 索引文件

(/var/lib/mysql/binlog.index)异常时可重建索引:

mysqlbinlog --no-defaults binlog.* > binlog.index

总结 

到此这篇关于MySQL中Binlog文件占用空间比较大该如何清理的文章就介绍到这了,更多相关MySQL Binlog文件占空间大清理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL主从复制原理解析与最佳实践过程

    MySQL主从复制原理解析与最佳实践过程

    这篇文章主要介绍了MySQL主从复制原理解析与最佳实践过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • MySQL查询语句简单操作示例

    MySQL查询语句简单操作示例

    这篇文章主要介绍了MySQL查询语句简单操作,结合实例形式分析了MySQL数据库、数据表创建、数据插入、数据查询等相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • MySQL 打开binlog日志的方法及注意事项

    MySQL 打开binlog日志的方法及注意事项

    本文给大家介绍MySQL 打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-06-06
  • 安装mysq 5.7.20 解压版遇到的坑(推荐)

    安装mysq 5.7.20 解压版遇到的坑(推荐)

    最近有朋友说当mysql5.7.20解压版环境变量配置好后,根目录没有my.ini 也没有 my-default.ini文件,怎么处理这个问题呢,下面小编给大家带来了解决方案,大家可以参考下
    2017-11-11
  • Mysql通过Adjacency List(邻接表)存储树形结构

    Mysql通过Adjacency List(邻接表)存储树形结构

    本片介绍MYSQL存储树形结构的一种方法,通过Adjacency List来实现,一起来学习下。
    2017-12-12
  • MySQL笔记之数学函数详解

    MySQL笔记之数学函数详解

    本篇文章对MySQL的数学函数进行了详细的介绍。需要的朋友参考下
    2013-05-05
  • MySQL下将一个表的数据插入到另外一个表的实现语句

    MySQL下将一个表的数据插入到另外一个表的实现语句

    开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,虽然这个实现起来非常简单,但是还是会困扰许多新手,因此专门发一篇文章备查。
    2009-09-09
  • mysql创建表设置表主键id从1开始自增的解决方案

    mysql创建表设置表主键id从1开始自增的解决方案

    在MySQL中用很多类型的自增ID,每个自增ID都设置了初始值,一般情况下初始值都是从0开始,然后按照一定的步长增加(一般是自增 1),下面这篇文章主要给大家介绍了关于mysql创建表设置表主键id从1开始自增的解决方案,需要的朋友可以参考下
    2023-04-04
  • 图文详解MySQL中两表关联的连接表如何创建索引

    图文详解MySQL中两表关联的连接表如何创建索引

    这篇文章通过图文给大家介绍了关于MySQL中两表关联的连接表如何创建索引的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • mysql in索引慢查询优化实现步骤解析

    mysql in索引慢查询优化实现步骤解析

    这篇文章主要为大家介绍了mysql in慢查询优化实现步骤的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论