阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL binlog后面的编号如何取值?

300次阅读
没有评论

共计 1761 个字符,预计需要花费 5 分钟才能阅读完成。

导读 每个 binlog 文件都有编号,从最早的 3 位数(没错,很老的版本只有 3 位数~),到现在扩展到 6 位数,从 000001 开始计数。但我打赌,你一定不知道这个序号最大可以跑到多少。

在我们知数堂的 MySQL DBA 课上讲到 binlog 序号是从 000001 开始,这时有细心的同学问到,是不是这个序号达到 999999 后,binlog 就要重新开始了?

讲真,当时我也是一下子被问住了,只是隐约记得这个值是可以大于 999999 的。于是,课后我自己细致地探究了一番,遂有本文。

MySQL 在启动时会扫一下 binlog 文件,找到最大的序号,然后产生下个序号文件。根据这个规则,我们可以自行测试一下,若当前最大的 binlog 序号是 999999 时,下一个文件序号是重新从 000001 开始,抑或是 1000000 呢?

测试一,当文件序号达到 999999 后,下一个新文件序号是多少

把 mysqld 关掉,人为造出序号为 999999 的 binlog,并直接启动 mysqld,看看会怎样呢?

MySQL binlog 后面的编号如何取值?

执行 show master status 进行确认

MySQL binlog 后面的编号如何取值?

可以看到,mysqld 并没有挂掉,也没重新从 mysql-bin.000001 开始,这个序号会继续增加。

现在,我们再深挖下这个问题,最大的序号到底是多少呢?

我们课上教学使用的版本是 mysql 5.7.18,下载相应版本的源码直接看好了,在 sql/binlog.cc 文件中我们找到下面这段代码:

MySQL binlog 后面的编号如何取值?

在上面这段代码中,我们看到如下判断:

if (max_found == MAX_LOG_UNIQUE_FN_EXT)

也就是当找到 binlog 文件最大序号,达到起定义的最大值时,mysqld 就会退出。我们再看下 MAX_LOG_UNIQUE_FN_EXT 宏定义:

#define MAX_LOG_UNIQUE_FN_EXT 0x7FFFFFFF

把它转成十进制看下:

MySQL binlog 后面的编号如何取值?
这个值等于:pow(2,31) – 1

测试二,测试 binlog 序号达到最大值后会怎样

手动创建一个序号较大的 binlog,比如 mysql-bin.2147483640。把所有日志文名都写入到 mysql-bin.index 中,并确认 mysql-bin.000001 文件存在(看会不会被覆盖或者其他的)。
然后启动 mysqld,再执行 FLUSH LOGS,看看会怎样。

这时,我们能看到 mysqld 启动,日志里记录的告警信息:

MySQL binlog 后面的编号如何取值?
我们多执行几次 FLUSH LOGS,切换日志,直到序号达到最大值,看看会发生什么:
MySQL binlog 后面的编号如何取值?

第一次切换会发出一个 ERROR 级别错误日志,第二次再切换,直接导致 mysqld 进程退出了。看看错误日志:
MySQL binlog 后面的编号如何取值?
看这架势,是想生成 mysql-bin.(1-999) 这样的文件而未果。于是我们再进行下面的测试。

测试三,测试 binlog 序号能不能循环重来

还是 touch 一个较大序号的 binlog,比如 mysql-bin.2147483646。把所有日志文名都写入到 mysql-bin.index 中,并确认 mysql-bin.000001 文件到 mysql-bin.000999 这些文件都不存在(和测试二不同,这次是要确保这些文件不存在,看能不能重复利用)。
然后启动 mysqld,再执行 FLUSH LOGS,看看会怎样。
MySQL binlog 后面的编号如何取值?
可以看到,还是会退出,并没有进行日志的轮转再次重复利用。

最后,关于 binlog 的序号问题,我们结论如下:

1.binlog 的最大序号是 pow(2,31)-1=2147483647。

2. 当序号接近这个值,且差距小于 1000 时(也就是序号大于 2147482647 时),就开始向 errorlog 中写入警告。

3. 当序号达到最大值时,mysqld 进程直接退出。

4. 生成新的 binlog 时,会扫描当前已存在的 binlog 文件,最终取得最大序号值。因此,如果 binlog 文件数目特别多的话,是会影响 MySQL 的启动及日志切换效率的。

5. 由此可见有两个隐患,当 binlog 文件数目过大,会导致 binlog 切换效率较低。当 binlog 文件最大序号快达到最大值时,离 mysqld 进程挂掉就不远了,需要加急处理。

6. 因此,除了要监控 binlog 文件数目、最大序号外,还应该再 errorlog 的内容,都予以足够重视。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-09-20发表,共计1761字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7801050
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
开源神器组合!1Panel面板+Halo助你轻松打造个人/企业内容中心

开源神器组合!1Panel面板+Halo助你轻松打造个人/企业内容中心

开源神器组合!1Panel 面板 +Halo 助你轻松打造个人 / 企业内容中心 前言 大家好,我是星哥,之前...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...