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日志删除与清理的资料请关注脚本之家其它相关文章!

相关文章

  • 阿里云centos7使用yum安装mysql的正确姿势(推荐)

    阿里云centos7使用yum安装mysql的正确姿势(推荐)

    这篇文章主要介绍了阿里云centos7使用yum安装mysql的正确姿势,需要的朋友可以参考下
    2017-07-07
  • PostgreSQL 正则表达式 常用函数的总结

    PostgreSQL 正则表达式 常用函数的总结

    这篇文章主要介绍了PostgreSQL 正则表达式 常用函数的总结的相关资料,对那些需要进行复杂数据处理的程序来说,正则表达式无疑是一个非常有用的工具,这里就介绍下如何使用,需要的朋友可以参考下
    2017-08-08
  • MySQL数据库备份与恢复全攻略

    MySQL数据库备份与恢复全攻略

    在现代应用中,数据库是核心组件之一,无论是个人项目还是企业级应用,数据的安全性和完整性都至关重要,为了防止数据丢失、损坏或意外删除,定期备份数据库是必不可少的,本文将详细介绍 MySQL 数据库的备份与恢复方法,需要的朋友可以参考下
    2024-10-10
  • Centos6.9安装Mysql5.7.18步骤记录

    Centos6.9安装Mysql5.7.18步骤记录

    本文给大家详细介绍了Centos6.9安装Mysql5.7.18的步骤,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-06-06
  • Navicat查询结果不能修改的原因及解决方法

    Navicat查询结果不能修改的原因及解决方法

    下面小编就为大家带来一篇Navicat查询结果不能修改的原因及解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • MySQL将select结果执行update的实例教程

    MySQL将select结果执行update的实例教程

    这篇文章主要给大家介绍了关于MySQL将select结果执行update的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Windows server 2008 r2下MySQL5.7.17 winx64安装版配置方法图文教程

    Windows server 2008 r2下MySQL5.7.17 winx64安装版配置方法图文教程

    这篇文章主要为大家详细介绍了Windows server 2008 r2下MySQL5.7.17 winx64安装版配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • MySQL中慢查询优化的技术指南

    MySQL中慢查询优化的技术指南

    后端开发中,数据库是系统性能瓶颈的高发地带,而慢查询往往是系统响应迟缓的罪魁祸首,本文将全面梳理慢SQL的优化思路,感兴趣的小伙伴可以了解下
    2025-06-06
  • MySQL分区分表实现方法示例详解

    MySQL分区分表实现方法示例详解

    ShardingSphere-JDBC通过在应用层进行数据分片,可以帮你轻松实现分区、分表和分库,下面我用具体的配置和代码示例来说明如何使用,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • 在MySQL现有表中添加自增ID的方法步骤

    在MySQL现有表中添加自增ID的方法步骤

    当在MySQL数据库中,自增ID是一种常见的主键类型,它为表中的每一行分配唯一的标识符,在某些情况下,我们可能需要在现有的MySQL表中添加自增ID,以便更好地管理和索引数据,在本文中,我们将讨论如何在MySQL现有表中添加自增ID,并介绍相关的步骤和案例
    2023-09-09

最新评论