前段时间迁移服务器,mysql使用了最新8.0。服务器突然故障了,搞了一会发现是磁盘满了,一通检查过后发现是mysql的binlog把磁盘塞满了。
网上查了下发现,原来mysql8自动开启binlog。发现问题了,那么就解决吧。想着先把binlog关了吧。
编辑mysql配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf
添加 skip-log-bin,重启msyql即可关闭binlog
mysql> show variables like '%log_bin%%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
登录数据库,确实已经关闭了bin-log。
binlog关闭后,之前产生的binlog文件并没有被清除。磁盘空间仍被占用,首先想到的就是简单粗暴的rm直接删掉。当然直接删掉是没问题的,只不过binlog问价顺序如果打乱,后期开启则无法正常执行。于是乎,百度了一下删除binlog的方法,方法分为两种,一种自动删除,一种手动删除。首先来看自动删除:
打开配置文件
binlog_expire_logs_seconds = 2592000 //单位秒
上面参数就是通过设置过期时间来自动删除binlog
手动删除是通过 mysql自带的purge命令:
RESET MASTER;删除所有binlog日志,新日志编号从头开始
PURGE MASTER LOGS TO ‘mysql-bin.010’; ||删除mysql-bin.010之前所有日志
PURGE MASTER LOGS BEFORE ‘2003-04-02 22:46:26’; ||删除2003-04-02 22:46:26之前产生的所有日志
注:执行purge命令是,要确保binlog是开启状态,否则无法删除