【mysql】MySQL binlog日志大小超过限定范围

my.cnf中有两个参数设置:

  • expire_logs_days = 7        #binlog保留时间7天

  • max_binlog_size = 1G      #binlog大小

     

问题描述:

mysql binlog大小限制1G,但是实际却达22G

 

分析原因:

  • mysqld在每个二进制日志名后面添加一个数字扩展名,每次你启动服务器或刷新日志时该数字则增加。如果当前的日志大小达到max_binlog_size,还会自动创建新的二进制日志。

  • 如果你正使用大的事务,二进制日志还会超过max_binlog_size:事务全写入一个二进制日志中,不会写入不同的二进制日志中,所以会出现binlog日志大小超过限定范围。

解决方案:

  • 在执行大事物前关闭 set session sql_log_bin=0; (默认是开启的)。千万不要不假思索的加上 global 修饰符(set global sql_log_bin=0),这样会导致所有在Master数据库上执行的语句都不记录binlog,这肯定不是你想要的结果。

  • 根本解决还是需要拆分大事物。此时,我们需要查看哪个大事物导致,对应

    去处理。可以进行分批commit。

注意:

5.5.5版本后不再支持 set @@session.sql_log_bin 方式设置在事物或子查询中

Beginning with MySQL 5.5.5, it is no longer possible to set @@session.sql_log_bin within a transaction or subquery. (Bug #53437)

http://dev.mysql.com/doc/refman/5.5/en/set-sql-log-bin.html

 

 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值