MYSQL大批量删除日志


  今天MYSQL服务器磁盘空间耗尽,经排查发现mysql目录下生成大量的二进制日志文件,占用几十G的磁盘空间,差不多3000多个文件,如下图

技术分享

进入mysql里面查看相关log的设置

mysql> show variables like ‘%log%‘;
+-----------------------------------------+---------------------------------------------+
| Variable_name                           | Value                                       |
+-----------------------------------------+---------------------------------------------+
| back_log                                | 50                                          |
| binlog_cache_size                       | 32768                                       |
| binlog_direct_non_transactional_updates | OFF                                         |
| binlog_format                           | MIXED                                       |
| expire_logs_days                        | 0          #这个默认是0,也就是logs不过期

下面先通过手动删除这些日志文件,然后再设置expire_logs_days的值,超过7天的日志就自动删除。

mysql> purge master logs to ‘mysql-bin.002970‘;  #表示将主库的日志记录清除到以‘mysql-bin.002970‘为开始的日志。
Query OK, 0 rows affected (1 min 30.29 sec)

mysql> set global expire_logs_days=7;            #这个是全局变量,重启mysql就不会生效了
Query OK, 0 rows affected (0.00 sec)

另外一种方法就是修改/etc/my.cnf,在mysqld下面添加一行即可。重启mysql永久生效,只保留7天的二进制日志。

expire_logs_days = 7


本文出自 “运维,你好” 博客,请务必保留此出处http://denghaibin.blog.51cto.com/4128215/1660494

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。