MySQL binlog后面的编号最大是多大?【老叶茶馆公众号】

  • 2019 年 10 月 4 日
  • 筆記

MySQL binlog后面的编号最大是多大?

原文地址:http://mp.weixin.qq.com/s/gDpWhlBawRal_pQK2huTMA

具体文章请关注微信公众号:izhishuedu 【知数堂】 知数堂版权所有。

这里我就不啰嗦了,直接上贴代码:

版本:5.7.18

mysql-5.7.18/sql/binlog.cc  大约在3310行开始:

MAX_LOG_UNIQUE_FN_EXT这个值在mysql-5.7.18/sql/binlog.cc  的3253行有定义。是0x7FFFFFFF,转换成10进制就是2147483647。也就是binlog文件编号最大到2147483647(文件名可以为这个),超过就个就报错退出了。

上面2张图中,可以看到有个宏定义LOG_WARN_UNIQUE_FN_EXT_LEFT 为1000,就是说当binlog文件名超过1000时候,就会在errlog里面记录"请考虑归档部分binlogs"。

如果我们人工创建个binlog文件名为mysql-bin.2147483645 然后启动mysql,并执行几次flush logs,就会触发binlog最大值的报错。

报错导致mysqld退出后,我们可以去看下errlog里面内容如下:

这时候,解决办法就是reset master; 清理掉之前的binlog。

当然,按照目前常理来讲,即便我们1分钟切割一次binlog,要达到最大值也要4K年。一般我们不会遇到这个问题的。