MySQL binlog日志进行手动删除与自动清理

 更新时间:2026年01月30日 09:55:53   作者:IT利刃出鞘  
本文介绍了MySQL的binlog日志的自动清理和手动删除方法,自动清理可以通过设置binlog_expire_logs_seconds参数实现,而手动删除则可以使用purge命令,需要的朋友可以参考下

简介

本文介绍如何MySQL的binlog日志如何手动删除与自动清理。

默认情况下,MySQL会生成binlog日志,在增删改操作时会往binlog写数据。通过binlog记录可以找到增删改日志,可以将数据恢复到某条日志对应的时间点,可以用于数据库被误删、被攻击时进行恢复。

问题描述

默认情况下,mysql会生成很多个binlog,占用很大的空间。

查询binlog的方法如下:

方法1:用MySQL命令

SHOW BINARY LOGS

结果如下(下边最大已经到了1G多):

方法2:到MySQL服务器查文件

到MySQL数据路径下,执行命令:ls -lh

解决方案

方案是:删除旧的binlog,只保留最近的binlog;修改binlog的过期时间(默认一直存活),比如:2天。

方案1. 手动删除binlog

使用MySQL提供的purge命令删除binlog。purge命令的定义如下:

法1:指定文件名

将BINLOG-FILE-NAME之前日期的(不包括自己本身)所有binlog文件清理掉。

PURGE {BINARY | MASTER} LOGS TO "BINLOG-FILE-NAME"

例如:

PURGE BINARY LOGS TO 'mysql-bin.000007';

法2:指定时间

将最后修改时间早于datetime-rxpr的binlog文件清理掉(不包括自己)。

PURGE {BINARY | MASTER} LOGS BEFORE "DATETIME-EXPR"

 例如:

PURGE BINARY LOGS BEFORE '2015-11-29 00:00:00';

方案2. 修改binlog过期时间

binlog_expire_logs_seconds参数可以控制binlog过期秒数,过了指定时间的日志将被自动删除,可动态修改。

  1. 如果设置了非0值,则在mysqld启动和日志刷新时,可能执行清理超过定义时间的binlog file
  2. 默认值为2592000(30天)。

查看binlog_expire_logs_seconds的方法:

SHOW GLOBAL VARIABLES LIKE 'BINLOG_EXPIRE_LOGS_SECONDS';

结果如下图所示:

法1:修改配置文件(需重启MySQL)

修改配置文件:/etc/my.cnf,在[mysqld]节点中增加如下内容

# binlog过期时间设置为3天。默认为30天。
binlog_expire_logs_seconds=259200

法2:使用命令(不需重启MySQL)

SET GLOBAL BINLOG_EXPIRE_LOGS_SECONDS=259200;

如下图所示:

以上就是MySQL binlog日志进行手动删除与自动清理的详细内容,更多关于MySQL binlog日志删除与清理的资料请关注脚本之家其它相关文章!

相关文章

  • MySQL限制查询和数据排序介绍

    MySQL限制查询和数据排序介绍

    这篇文章主要介绍了MySQL限制查询和数据排序介绍,通过limit可以限制返回结果的行数,而当数据查询出来以后,我们可以对数据进行排序处理。在末尾使用order by语句,下文相关详细介绍,需要的小伙伴可以参考一下
    2022-03-03
  • C# Mysql 查询 Rownum的解决方法

    C# Mysql 查询 Rownum的解决方法

    C# Mysql 查询 Rownum的解决方法,需要的朋友可以参考一下
    2013-03-03
  • Navicat连接MySQL出现2059错误的解决方案

    Navicat连接MySQL出现2059错误的解决方案

    当使用Navicat连接MySQL时,如果出现错误代码2059,表示MySQL服务器不接受Navicat提供的加密插件,解决方法主要有两种:一是修改MySQL用户的认证插件为mysql_native_password,二是升级Navicat到最新版本以支持MySQL8.0及其默认的caching_sha2_password认证插件
    2024-10-10
  • MySQL优化子查询的实现示例

    MySQL优化子查询的实现示例

    本文主要介绍了MySQL子查询优化经验,指出子查询易因嵌套深、索引失效、临时表排序等问题导致性能问题,具有一定的参考价值,感兴趣的可以了解一下
    2025-09-09
  • mysql 获取今天、昨天0点时间戳的实例

    mysql 获取今天、昨天0点时间戳的实例

    今天小编就为大家分享一篇mysql 获取今天、昨天0点时间戳的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 详解mysql数据库增删改操作

    详解mysql数据库增删改操作

    这篇文章主要介绍了mysql数据库增删改操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • MySQL异常处理浅析

    MySQL异常处理浅析

    这篇文章主要介绍了MySQL的异常处理,需要的朋友可以参考下
    2014-06-06
  • 登录mysql数据库的几种方式

    登录mysql数据库的几种方式

    本文主要介绍了登录mysql数据库的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • MySQL中进行跨库查询的方法示例

    MySQL中进行跨库查询的方法示例

    这篇文章主要给大家介绍了关于MySQL中进行跨库查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • MySQL死锁的产生原因以及解决方案

    MySQL死锁的产生原因以及解决方案

    这篇文章主要介绍了MySQL死锁的产生原因以及解决方案,帮助大家更好的维护数据库,感兴趣的朋友可以了解下
    2020-09-09

最新评论