it编程 > 数据库 > Mysql

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

7人参与 2026-01-31 Mysql

简介

本文介绍如何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日志删除与清理的资料请关注代码网其它相关文章!

(0)

您想发表意见!!点此发布评论

推荐阅读

mysql配置环境变量实践(win10)

01-31

MySQL数据库高危权限回收的实现

01-31

MySQL对前N条数据求和的几种方案

01-31

MySQL基础增删查改操作详解

01-31

解决登录MySQL时提示ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)

01-31

Mysql的备份与恢复全过程(使用XtraBackup)

01-27

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论