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天。
使用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';
binlog_expire_logs_seconds参数可以控制binlog过期秒数,过了指定时间的日志将被自动删除,可动态修改。
查看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日志删除与清理的资料请关注代码网其它相关文章!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论