关闭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天前的