清除mysql的log日志

如果在my.cnf中开启
log-bin=mysql-bin
mysql就会记录log
但是时间一长就会产生大量的日志,很占空间
117M    mysql-bin.000030
478M    mysql-bin.000031
1.1G    mysql-bin.000032
963M    mysql-bin.000033
4.0K    mysql-bin.000034
1.1G    mysql-bin.000035
1.1G    mysql-bin.000036
30M     mysql-bin.000037
8.0K    mysql-bin.index

排除用脚本自动删除日志的方法,有2个方法可以清理这些东西
第一:关闭log-bin=mysql-bin
直接在my.cnf中注释掉这一行
#log-bin=mysql-bin

第二:使用命令清空
先查看下log
mysql> show master logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000037 |  31379456 |
| mysql-bin.000038 |       126 |
| mysql-bin.000039 |       107 |
+------------------+-----------+
39 rows in set (0.00 sec)

然后刷新

lush() 是把缓冲区的数据强行输出, 主要用在IO中,即清空缓冲区数据,一般在读写流(stream)的时候,数据是先被读到了内存中,再把数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。这时候如果你调用了close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()。

mysql> flush logs;
mysql> reset master;
Query OK, 0 rows affected, 36 warnings (0.05 sec)

再看下
mysql> show master logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       107 |
+------------------+-----------+
1 row in set (0.00 sec)

这样只会保留最新的日志文件了,其他的就清空了~