mysql bin-log日志处理详解

来源:互联网 发布:淘宝女士秋季连衣裙 编辑:程序博客网 时间:2024/04/29 03:53
mysql中如果我们开启bin-log日志全在mysql目录发现大量的mysql-bin.000001,mysql-bin.000002等这些文件,如果多了会发现占很大的空间。

关闭bin-log日志

当开启bin-log日志时,会生成很多mysql-bin.0000*类似的文件,而且可能会占用很大的硬盘空间。在不需要做master,slave的配置时,完全可以关闭日志功能。

关闭操作很简单,找到配置文件my.cnf,对于linux,一般默认在/etc目录下,打开此文件,使用井号(#)注释掉如下两个配置项目即可。


log-bin=mysql-bin
binlog_format=mixed


vi /etc/my.cnf

log-bin=mysql-bin

注释后重启mysql即生效

可能在重启时候会收到一个错误,“ERROR 1186 (HY000): Binlog closed, cannot RESET MASTER”,解决办法是先登入到mysql命令行中执行 reset master 即可。reset master的用途就是删除先前所有的bin-log日志文件。所以在master、slave配置环境中慎用此命令


删除bin-log日志

查找当前有哪些二进制日志文件:

mysql> show binary logs;

+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
mysql-bin.000001 |   1357315 | 
mysql-bin.000002 |       117 | 
mysql-bin.000003 |    404002 | 
mysql-bin.000004 |   2050722 | 
mysql-bin.000005 |    139103 | 
mysql-bin.000006 |     46702 | 
mysql-bin.000007 |       117 | 
mysql-bin.000008 |        98 | 
mysql-bin.000009 |       117 | 


删除bin-log(删除mysql-bin.000005之前的所有二进制日志文件,这里不包括mysql-bin.000005这个文件)

mysql> purge binary logs to 'mysql-bin.000005';


mysql bin-log相关参数:expire_logs_days

expire_logs_days是二进制日志自动删除过期的天数。默认值是0,表示没有自动删除。

例如:

expire_logs_days = 15 表示日志保留15天,超过15天则设置为过期(自动删除)


关于过期日志自动删除问题:

1.重启

2.binlog文件大小达到参数max_binlog_size限制

3.手动执行命令

以上会触发log flush,每次进行log flush时会自动删除过期日志。



与bin-log相关的几个MySQL命令:

flush logs; 会多一个最新的bin-log日志

show master status; 查看最后一个bin-log日志的相关信息

reset master; 清空所有的bin-log日志,(没有主从复制可以用这命令重置数据库日志,有的不要用)

如果存在复制关系,应当使用purge的方式来清理bin-log日志,语法如下:

purge {master | binary} logs to "log_name"

purge {master | binary} logs before "date"

例子:

purge master logs to "mysql-bin.0000080";   

purge master logs before "2016-04-11 00:00:00";     ##清理该日期之前的数据

purge master logs before date_sub(now(),interval 3 day);  ##清楚3天前的



0 0