MySQL清理binlog日志的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL清理binlog日志的方法相关的知识,希望对你有一定的参考价值。

参考技术A 永久生效:修改mysql的配置文件my.cnf,添加binlog过期时间的配置项: expire_logs_days=30 ,然后重启mysql,这个有个致命的缺点就是需要重启mysql。

临时生效:进入mysql,用以下命令设置全局的参数: set global expire_logs_days=30 ;

(上面的数字30是保留30天的意思。)

可以直接删除 binlog 文件,但是可以通过 mysql 提供的工具来删除更安全,因为 purge 会更新 mysql-bin.index 中的条目,而直接删除的话, mysql-bin.index 文件不会更新。 mysql-bin.index 的作用是加快查找 binlog 文件的速度。

命令查看 binlog 文件

删除举例:

mysql定时清理binlog

一、没有主从同步的情况下清理日志
mysql -uroot -p123456 -e PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ),INTERVAL 5 DAY);
#mysql 定时清理5天前的binlog
mysql -u root -p  #进入mysql 控制台
reset master;  #重置binlog
二、MySQL主从同步下安全清理binlog日志
1、mysql  -u root -p   #进入从服务器mysql控制台
show slave status\G;   #检查从服务器正在读取哪个日志,有多个从服务器,选择时间最早的一个做为目标日志。
2、进入主服务器mysql控制台
show master log;   #获得主服务器上的一系列日志
PURGE MASTER LOGS TO binlog.000058;   #删除binlog.000005之前的,不包括binlog.000058
PURGE MASTER LOGS BEFORE 2016-06-22 13:00:00;  #清除2016-06-22 13:00:00前binlog日志
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);  #清除3天前binlog日志
三、设置自动清理MySQL binlog日志
vi  /etc/my.cnf  #编辑配置
expire_logs_days = 15 #自动删除15天前的日志。默认值为0,表示从不删除。
log-bin=mysql-bin #注释掉之后,会关闭binlog日志
binlog_format=row #注释掉之后,会关闭binlog日志

 

以上是关于MySQL清理binlog日志的方法的主要内容,如果未能解决你的问题,请参考以下文章

mysql清理binlog日志

mysql binlog日志自动清理及手动删除

转载mysql binlog日志自动清理及手动删除

MYSQL随笔九 binlog日志清理

mysql定时清理binlog

mysql 利用binlog日志恢复问题