Java基础、中级、高级、架构面试资料

MySQL Binlog 手动生成,立即生成 binlog 文件的方法

SQL herman 5887浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

最近我在使用 Canal 做 binlog 的订阅服务。由于阿里云 RDS 开启 binlog 订阅需要收费,太坑了,而且还很贵。于是我们就决定使用 rds oss binlog 离线订阅读取的方式来实现某些业务。

在实际使用 canal 中,我们配置好之后,binlog 文件却一直都不产生。于是,我就在想能不能立即让 MySQL 生成一个 binlog 文件。

网上搜索了很久,发现这方面的资料非常的少。

而通过官网发现,MySQL Binlog 日志的生成规则比较坑。MySQL 实例空间内生成 binlog 日志的规则如下:

  • 通常情况下,当前binlog大小超过500MB或超过6小时会切换到下一序号文件继续写入,即写满500MB或超过6小时就会生成新的binlog日志文件。新的binlog文件继续写入,老的binlog文件并不会立刻上传,会异步上传。
  • 有些情况下,binlog日志不满500MB就不再写入,比如由于命令的执行、系统重启等原因。
  • 有些情况下,会出现binlog文件尺寸超过500MB的情况,比如当时在执行大事务,不断写入binlog导致当前binlog文件尺寸超过500MB。

这个规则太 bug 了。500M 和 6 小时,我们都等不起,于是我继续在官方查资料。最终有了新的发现。

在 mysql 中 flush logs 操作会生成一个新的 binlog 文件。

如果在从库执行 flush logs 不仅会生成一个新的 binlog 文件,而且会生成一个新的 relaylog 文件。

不仅如此,flush logs 还影响 slow log 和 general log,当删除 slow log 或者 general log,然后执行 flush logs,此时会再重新生成一个新的 slow log 或者 general log。

但我由于是在测试库中进行,不影响现实业务,所以,可以随便的进行 flush logs。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » MySQL Binlog 手动生成,立即生成 binlog 文件的方法