如何读取mysql binlog 解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何读取mysql binlog 解析相关的知识,希望对你有一定的参考价值。

mysqlbinlog 是将 binlog 解析成可读可执行的 SQL 的重要工具。

但解析体积较大的 binlog 时,如何查看 mysqlbinlog 的执行进度就变成了一个问题,mysqlbinlog 并未提供 –progress 这样的参数。

那要怎么查看 mysqlbinlog 的解析进度?

实验

我们在 实验 08 中介绍了如何生成随机数据。可以利用其中技巧,生成较大的 binlog,我们忽略这个过程。

从已有的 binlog 开始,bin.000002 大约有 1.1 个 G:

用 mysqlbinlog 解析该 binlog:

大概会执行 4.6 秒左右。大家仔细做实验时,可以将 binlog 放大一些,让执行实验更长一些。

我们在 mysqlbinlog 解析时,查看其文件句柄:

可以看到 mysqlbinlog 用句柄 3 读取 binlog。(我们暂时忽略句柄 4 指向的临时文件,其涉及到了行格式的解析过程,我们安排在以后的实验中慢慢介绍)

获取了 mysqlbinlog 处理文件句柄 3 的进度,就可以大概估算 mysqlbinlog 的整体进度:

可以看到 mysqlbinlog 此时的进度大概是 600M 左右,整体进度估算为 54%。

结论

我们无法让 mysqlbinlog 直接输出进度,于是通过观察 mysqlbinlog 对 binlog 的读取进度,估算mysqlbinlog 的整体处理进度。

参考技术A 你进入mysql /bin目录下你可以看到有一个mysqlbinlog可执行文件,只要 在命令下
~ mysqlbinlog binlog文件
就可以查看咯,一般做增量备份,查看数据操作或是恢复数据才看这个的吧本回答被提问者采纳

mysql主备binlog文件下标

主备binlog文件下标是指MySQL中binlog文件的主从复制状态。主备binlog文件下标是一个数字,它表示MySQL主服务器上binlog文件的当前位置,从服务器上的binlog文件下标也是一个数字,它表示从服务器上binlog文件的当前位置。主备binlog文件下标的作用是,当MySQL主从复制过程中出现故障时,可以通过比较主从服务器上binlog文件下标的值来确定哪些数据没有被复制到从服务器上,从而可以快速恢复数据。 参考技术A 默认情况下,mysqlbinlog读取二进制日志文件并以文本格式显示其内容。这使您能够更轻松地检查文件中的事件并重新执行它们(例如,通过将输出用作 mysql的输入)。mysqlbinlog可以直接从本地文件系统读取日志文件,或者, --read-from-remote-server 它可以连接到服务器并从该服务器请求二进制日志内容。mysqlbinlog将文本输出写入其标准输出,或者 如果给出该选项,则写入以选项值命名的文件。 --result-file=file_name
mysqlbinlog 备份功能
mysqlbinlog 备份选项
静态和实时备份
输出文件命名
示例:mysqldump + mysqlbinlog 用于备份和恢复
mysqlbinlog 备份限制
mysqlbinlog 备份功能
mysqlbinlog可以读取二进制日志文件并写入包含相同内容的新文件——即以二进制格式而不是文本格式。此功能使您能够轻松地以原始格式备份二进制日志。 mysqlbinlog可以进行静态备份,备份一组日志文件并在到达最后一个文件末尾时停止。它还可以进行连续(“实时”)备份,在到达最后一个日志文件的末尾时保持与服务器的连接,并在生成新事件时继续复制它们。在持续备份操作中, mysqlbinlog运行直到连接结束(例如,当服务器退出时)或 mysqlbinlog被强制终止。当连接结束时,mysqlbinlog不会等待并重试连接,这与副本服务器不同。要在服务器重新启动后继续实时备份,您还必须重新启动mysqlbinlog。
参考技术B MySQL主备binlog文件的下标是一个用来标识binlog文件的唯一标识符,它由四部分构成:文件编号、事务编号、时间戳和事件类型。这四部分共同来定义binlog文件中每条语句的位置和动作。 参考技术C mysql主备binlog文件的下标(索引号)是一个连续增长的数字,每次写入新binlog日志时,下标就会自动加1。 参考技术D MySQL主备binlog文件的索引可以从MySQL数据库中查询,使用show binary logs命令即可。

以上是关于如何读取mysql binlog 解析的主要内容,如果未能解决你的问题,请参考以下文章

如何清除mysql的binlog

mysql主备binlog文件下标

mysql开启binlog日志

如何动态监控mysql binlog

面试题整理

MySQL Binlog 解析工具 Maxwell 详解