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

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

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

  • max_binlog_size = 1G      #binlog大小

     

问题描述:

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

【mysql】MySQL binlog日志大小超过限定范围_第1张图片

 

分析原因:

  • 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

 

 


你可能感兴趣的:(mysql)