mysql随着使用时间的推移,binglog文件会越来越大,比如我们的oa系统,上线4年多了,最近总有磁盘空间满影响系统正常使用的情况出现。检查后发现binglog是罪归祸首。
binglog文件最好不要采用应删除的方式清理,如下方式可安全清除。
首先,登录mysql,检查binglog文件:
SHOW BINARY LOGS;
发现我的binglog文件非常多,检查了下发现每一个都是大家伙,有1个G。
以上文件是按照时间先后顺序排列的。
以下命令删除mysql-bin.000718之前的所有binglog文件:
mysql> PURGE BINARY LOGS TO ‘mysql-bin.000718’;
Query OK, 0 rows affected (1.30 sec)
再查看一下:
mysql> show binary logs;
±-----------------±-----------+
| Log_name | File_size |
±-----------------±-----------+
| mysql-bin.000718 | 1076209921 |
| mysql-bin.000719 | 1075665337 |
| mysql-bin.000720 | 1075151132 |
| mysql-bin.000721 | 1076053554 |
| mysql-bin.000722 | 1024584523 |
±-----------------±-----------+
5 rows in set (0.00 sec)
然后再查看磁盘空间占用情况,98%瞬间降到的48%。
其实我前段时间是做过一次类似处理的,binglog文件涨的太快了,没太搞明白他的生成逻辑,反正5月25号:
[root@izphxjm2m4lp20z data]# ls -lrt mysql-bin*
-rw-rw---- 1 mysql mysql 4712 Mar 18 10:45 mysql-binindex
-rw-rw---- 1 mysql mysql 1076209921 May 25 10:46 mysql-bin.000718
-rw-rw---- 1 mysql mysql 1075665337 May 25 10:47 mysql-bin.000719
-rw-rw---- 1 mysql mysql 1075151132 May 25 10:48 mysql-bin.000720
-rw-rw---- 1 mysql mysql 1076053554 May 25 10:49 mysql-bin.000721
-rw-rw---- 1 mysql mysql 95 May 25 16:17 mysql-bin.index
-rw-rw---- 1 mysql mysql 1024651900 May 25 16:34 mysql-bin.000722
清理之前10点46开始每分钟1个g…这谁受得了啊。
所以还是需要想办法自动清理一下。
修改mysql配置文件,找到/etc/my.cnf,加入下面两行:
[mysqld]
expire_logs_days = 7 # 设置Binlog日志过期时间,单位为天
max_binlog_size = 1024M # 设置单个Binlog文件的最大大小
之后重新启动mysql:
systemctl mysqld restart