豫ICP备17040950号-2

mysql清理binlog日志

文章目录
  1. 1. 查看binlog日志,是否开启或占用多少空间
  2. 2. 手动删除binlog日志
  3. 3. 自动清理binlog日志
  4. 4. 关闭mysql的binlog日志

mysql的binlog日志默认情况下会一直保留此文件,会随着时间的增长占用很大的磁盘资源,甚至到一定时候,磁盘可能会被撑满。有时候需要我们手动清理或者让数据库自动只保留最新的几天binlog日志文件或直接禁用binlog。

首先要说明一下,这些文件都是mysql的日志文件,如果不做主从复制的话,基本上是没用的,虽然没用,但是不建议使用rm命令删除,这样有可能会不安全,正确的方法是通过mysql的命令去删除

查看binlog日志,是否开启或占用多少空间

方式一、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
mysql> show binary logs;

+------------------+------------+
| Log_name | File_size |
+------------------+------------+
| mysql-bin.000061 | 50624 |
| mysql-bin.000062 | 5159 |
| mysql-bin.000063 | 126 |
| mysql-bin.000064 | 3067 |
| mysql-bin.000065 | 503 |
| mysql-bin.000066 | 494 |
| mysql-bin.000067 | 107 |
| mysql-bin.000068 | 1433 |
| mysql-bin.000069 | 7077 |
| mysql-bin.000070 | 107 |
| mysql-bin.000071 | 804 |
| mysql-bin.000072 | 7642 |
| mysql-bin.000073 | 2198 |
| mysql-bin.000074 | 350139 |
| mysql-bin.000075 | 126 |
| mysql-bin.000076 | 51122 |
| mysql-bin.000077 | 1074279197 |
| mysql-bin.000078 | 1074435879 |
| mysql-bin.000079 | 928917122 |
+------------------+------------+

如果没有开启binlog日志,会提示:You are not using binary logging

方式二、

1
2
3
4
5
6
7
8
show variables like 'log_bin';

+------------------+------------+
| Variable_name | Value |
+------------------+------------+
| log_bin | ON |
+------------------+------------+

手动删除binlog日志

解释:

PURGE MASTER LOGS手动删除用法及示例,MASTER和BINARY是同义词

PURGE {MASTER | BINARY} LOGS TO ‘log_name’
PURGE {MASTER | BINARY} LOGS BEFORE ‘date’

1、删除某个日志文件之前的所有日志文件(建议采用这种方式

1
mysql> purge binary logs to 'mysql-bin.000079';  

删除mysql-bin.000007以前所有的binlog,这样删除可以保证*index信息与binlog文件同步。

2、删除多少天前的所有日志文件

1
2
3
mysql> purge binary logs before date_sub(current_date,interval 5 day);  

mysql> purge binary logs before date_sub(now(),interval 5 day);

手动删除5天前的binlog日志

3、删除指定时间点前的所有日志文件

1
mysql> purge binary logs before '2019-06-22 13:00:00';

手动删除清除2019-06-22 13:00:00前的binlog日志前的binlog日志

4、删除所有binlog文件

1
mysql> reset master;  #重置所有的日志

自动清理binlog日志

1、查看默认的日志保存天数

1
2
3
4
5
6
7
mysql> show variables like '%expire_logs_days%';  

+------------------+------------+
| Variable_name | Value |
+------------------+------------+
| expire_logs_days | 5 |
+------------------+------------+

2、设置自动清理

1
2
3
mysql> set global expire_logs_days = 5; #把binlog的过期时间设置为5天; 

mysql> flush logs; #刷一下log使上面的设置生效,否则不生效。

为保证在MYSQL重启后仍然有效,在my.cnf中也加入此参数设置

1
expire_logs_days = 5

关闭mysql的binlog日志

如果你的mysql服务器不需要做主从复制的话,建议通过修改my.cnf文件,来设置不生成这些文件

1、在my.cnf里面注释掉binlog日志

1
#log-bin=mysql-bin  

2、重启mysql

1
service mysqld restart