当mysql 日志占用太大空间的时候,要考虑将日志删除
一语法如下:
PURGE {MASTER | BINARY} LOGS TO'log_name'
PURGE {MASTER | BINARY} LOGSBEFORE 'date'
用于删除在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。
例如:
1 删除指定日志之前的bin log
PURGE MASTER LOGS TO'mysql-bin.010';
1) 查看当前的log
show binary logs;
2) 删除mysql-bin.000010 之前的日志
mysql> purge binary logs to 'mysql-bin.000010';
Query OK, 0 rows affected (0.35 sec)
mysql> show binary logs;
3)显示第一个二进制日志:
mysql> show binlog events;
+------------------+-----+-------------+-----------+-------------+---------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+-----+-------------+-----------+-------------+---------------------------------------+
| mysql-bin.000010 | 4 | Format_desc | 1 | 107 | Server ver: 5.5.18-log, Binlogver: 4 |
| mysql-bin.000010 | 107 |Stop | 1 | 126 | |
+------------------+-----+-------------+-----------+-------------+---------------------------------------+
2 删除指定日期之前的bin log
PURGE MASTER LOGS BEFORE'2011-12-05 13:00:00';
3 清除N天前的 binlog
PURGE MASTER LOGS BEFOREDATE_SUB( NOW( ), INTERVAL N DAY);
BEFORE变量的date自变量可以为'YYYY-MM-DDhh:mm:ss'格式。MASTER和BINARY是同义词。
下面的语句可以清除 7 天前的binlog,
PURGE MASTER LOGS BEFOREDATE_SUB( NOW( ), INTERVAL 7 DAY);
在contab设置定期每天凌晨3点删除7天前的binlog:
0 3 * * * `mysql -uroot -e 'PURGE BINARY LOGS BEFOREDATE_SUB( NOW( ), INTERVAL 7 DAY);'`