大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说binlog查看原始sql_MySQL binlog,希望您对编程的造诣更进一步.
本文关键字:大事务、binlog、Linux
问题
我们并不喜欢 MySQL 中出现大事务(更新很多数据的事务),大事务往往带来很多维护的问题。
我们在维护 MySQL 时,需要关注于是否出现了较大事务,在 binlog 里找到其出现的证据。
实验
我们先创建个数据库:
这里我们启用了 GTID,对于非 GTID 的 binlog,大家也可以用类似的方法处理。
下面需要创建一些大小不同的事务,我们使用在 第11问 里使用过的手法,
反复执行,
下面我们开始研究 binlog,先解开一段看一下,
我们知道在 GTID 模式下,事务开头必然会有一个 GTID_event,如图中红框标注。
我们就过滤这一段信息,
这里用到了 grep 两个技巧:
- 过滤 tab 字符,用到了 “$(printf ” “)” 来插入 tab 字符,无法直接使用 ” ” 字符。
- 使用 -B 参数向前找到了匹配的前一行,输出 “at xxx”,这一行是 GTID_event 在 binlog 中的位置(单位是字节)。
然后我们将其中的位置信息过滤出来,
再将每两行的位置减一下,就获得了每一个事务在 binlog 中的大小,
将这些事务的大小排序一下,取最大值,
这是这个 binlog 中最大的 10 个事务的大小,可以看到最大的事务在 binlog 中占用了 658k 大小,不算太大。
本期没有关于 MySQL 太多的知识点,只是活用 Linux 的命令,可以简单高效获取 binlog 的信息。
下面附上本期命令的文字版:
~/opt/mysql/5.7.20/bin/mysqlbinlog data/mysql-bin.000001 | grep "GTID$(printf " ")last_committed" -B 1
代码100分
关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7474.html