mysql的binlog日志手动删除和自动清理

        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)手工执行命令。 
 
 
 
 
 






  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值