![f9dd810e21f35e0ec96580e618266e95.png](https://i-blog.csdnimg.cn/blog_migrate/3a0c5e35c95dff49f11c00be38f1ea30.jpeg)
问题
mysqlbinlog 是将 binlog 解析成可读可执行的 SQL 的重要工具。
但解析体积较大的 binlog 时,如何查看 mysqlbinlog 的执行进度就变成了一个问题,mysqlbinlog 并未提供 –progress 这样的参数。
那要怎么查看 mysqlbinlog 的解析进度?
实验
我们在 实验 08 中介绍了如何生成随机数据。可以利用其中技巧,生成较大的 binlog,我们忽略这个过程。
从已有的 binlog 开始,bin.000002 大约有 1.1 个 G:
![a5f1e8f4cd47d677d5f18a70f58d3852.png](https://i-blog.csdnimg.cn/blog_migrate/2a3bfafbd4b4ec2c85e4d8878a6df6a0.jpeg)
用 mysqlbinlog 解析该 binlog:
![a5c5ecc59d2dd8df4bdf1cd698002548.png](https://i-blog.csdnimg.cn/blog_migrate/1c765a0b59ce6f41c410eed83b445dec.jpeg)
大概会执行 4.6 秒左右。大家仔细做实验时,可以将 binlog 放大一些,让执行实验更长一些。
我们在 mysqlbinlog 解析时,查看其文件句柄:
![580f7db2f2af1fa4c59fe9d63a16f93d.png](https://i-blog.csdnimg.cn/blog_migrate/e1fa09baa7ea1eaddc8f81cf63dcf7c3.jpeg)
可以看到 mysqlbinlog 用句柄 3 读取 binlog。(我们暂时忽略句柄 4 指向的临时文件,其涉及到了行格式的解析过程,我们安排在以后的实验中慢慢介绍)
获取了 mysqlbinlog 处理文件句柄 3 的进度,就可以大概估算 mysqlbinlog 的整体进度:
![b2e441ce9c62113971f8c23379435711.png](https://i-blog.csdnimg.cn/blog_migrate/394f7db7424f72bce270c00053a0702b.jpeg)
可以看到 mysqlbinlog 此时的进度大概是 600M 左右,整体进度估算为 54%。
结论
我们无法让 mysqlbinlog 直接输出进度,于是通过观察 mysqlbinlog 对 binlog 的读取进度,估算mysqlbinlog 的整体处理进度。
![6733a185d97c1d0bba52a9dfe9d6c17e.png](https://i-blog.csdnimg.cn/blog_migrate/719a32be3a16bffa97078f664dbfb22a.jpeg)
mysqlbinlog 不是真的"流式"处理 binlog,所以本实验只能是估算,大家在实验时,会观察到 mysqlbinlog 读取了全部 binlog 后,会继续处理一点时间,才完成所有工作。
我们以后安排实验来研究 mysqlbinlog 是如何处理 binlog 的。
![33458ad0375d0791a78c1ab8e6240eb1.png](https://i-blog.csdnimg.cn/blog_migrate/e019896ece51bd967b56d8ce4476ad93.jpeg)
关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!
![a62154667ff6b4be4dfa628adac46c25.png](https://i-blog.csdnimg.cn/blog_migrate/1f5cd0696297645f7a347c763320bcf6.jpeg)