一、自动清理
当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log
的文件,这会大量耗费您的硬盘空间。我们就需要设置binlog日志过期时间。
方式1文章来源(Source):浅时光博客 :修改配置文件my.cnf
[root@localhost ~]# vim /etc/my.cnf #修改expire_logs_days,x是自动删除的天数,一般将x设置为短点,如10
[mysqld]
...
expire_logs_days = x #二进制日志自动删除的天数。默认值为0,表示“没有自动删除”
方式2:直接在数据库里修改
mysql> show variables like "%expire_logs_days%";
mysql> set global expire_logs_days = 10;

二、手动清理
说明:清理之前一定要看下从库当前正在读取的是哪个binlog文件
[root@localhost ~]# mysql -uroot -p #登入到从库查看当前读取的binlog
mysql> show slave status\G
Relay_Master_Log_File: master-bin.004337
[root@localhost ~]# mysql -uroot -p #登入到主库进行清理
#查看正在写的binlog文件
mysql> show master logs;
mysql> show binary logs;
mysql> show variables like "%expire_logs_days%";
mysql> PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 5 DAY); #清除5天前的binlog日志文件
三、参数说明
1、expire_logs_days
本文中的 X
表示是你想要保留的天数。我推荐10个,但这取决于MySQL服务器的繁忙程度和日志文件的增长速度。只要确保它比最慢的奴隶从你的主人复制数据要长。只是附带说明一
2、PURGE MASTER LOGS
删除指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除MySQL BIN-LOG 日志,这样被给定的日志成为第一个。
示例:
> PURGE MASTER LOGS TO 'MySQL-bin.010'; //清除MySQL-bin.010日志
> PURGE MASTER LOGS BEFORE '2020-05-01 13:00:00'; //清除2020-05-01 13:00:00前binlog日志
> PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 5 DAY); //清除5天前binlog日志BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。
3、清Binlog时对从库的影响
如果你有一个活性的从服务器,该从服务器当前正在读取的binlog日志如果是你正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从服务器是休止的,并且你碰巧清理了其想要读取的日志之一,则从服务器启动后不能复制。当从
必须 注册 为本站用户, 登录 后才可以发表评论!