今天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
时间: 2024-10-07 06:00:19