mysql的binlog日志手动删除和自动清理
2017-07-07 21:27
549 查看
mysql中的binlog打开对于工作维护来说是必要的,但是binlog文件相对较大,如果不管不问的任由binlog自由输出的话,总有一点会把磁盘占满。当磁盘空间不足时,导致数据库卡死状态,断链状态。此时数据库只可以查询操作,不可以update/delete的操作。(至于为什么个人理解的时候服务访问的是数据库缓存的数据)【解决办法】 1、当务之急,先手动清理旧的binlog日志,保留足够的空间可用。三种清理方式,如下: 1)PURGE MASTER LOGS TO 'MySQL-bin.010'; //指定清理某文件前所有的文件 2) PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00'; //清理2008-06-22 13:00:00前binlog日志 3) PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); //清理3天前binlog日志BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。这里的清理是指从此刻-3*24*3600s前的文件,是此文件最后更新的时间。
注意:不要强制使用rm命令进行清除。否则,mysq-bin.index错乱,最终导致后期expire-log-days配置项失效。
2、增加自动清理binlog的方式,保证binlog占用空间不在肆意扩张。配置清理的方式,有两种:
1) 不重启mysql即可生效的方式:
a) mysql -u用户名 -p密码
b) mysql> set global expire_logs_days = 5; //设置有效期,清理5天前的binlog的配置
mysql> flush logs; //刷一下log使上面的设置生效,否则不生效。
这里是清理的当前时间的5天前的文件,此时刷新了flush logs,binlog文件也切换新的文件了。
注意:此配置重启mysql后失效。
2) 重启mysql有效的方式:
在my.cnf配置文件中的[mysqld]中增加expire_logs_days = 10,配错位置不生效。
PS:
1)my.cnf配置文件中三项分别代表什么,如下:
[client]代表客户端默认设置内容[mysql]代表我们使用mysql命令登录mysql数据库时的默认设置[mysqld]代表数据库自身的默认设置
2)对于清理这个动作是flush logs这个命令起作用的,而flush logs又如何触发呢?主要有三种情况:
a)重启mysql,切换新的binlog文件;
b)binlog文件到参数max_binlog_size限制;
c)手工执行命令。
相关文章推荐
- [MySQL] 设置自动清理binlog日志和手动删除的方法
- mysql主从binlog日志自动清理及手动删除
- mysql binlog日志自动清理及手动删除-ghan
- mysql binlog日志自动清理及手动删除
- mysql binlog日志自动清理及手动删除
- MySQL 自动清理binlog日志的方法
- mysql binlog日志自动清理及手动删除
- mysql binlog日志自动清理及手动删除
- mysql binlog日志自动清理及手动删除
- 设置自动清理mysql binlog日志和手动删除的方法
- mysql binlog日志自动清理及手动删除
- mysql binlog日志自动清理及手动删除
- mysql binlog日志自动清理及手动删除
- MySQL 自动清理binlog日志的方法
- 设置自动清理mysql binlog日志和手动删除的方法
- mysql binlog日志自动清理及手动删除
- mysql binlog日志自动清理及手动删除
- mysql binlog日志自动清理及手动删除
- mysql binlog日志自动清理及手动删除
- 设置自动清理mysql binlog日志和手动删除的方法