Mysql Binlog Dump原理
2024-08-26 13:31:10
Register
首先,我们需要伪造一个slave,向master注册,这样master才会发送binlog event。注册很简单,就是向master发送COM_REGISTER_SLAVE命令,带上slave相关信息。这里需要注意,因为在MySQL的replication topology中,都需要使用一个唯一的server id来区别标示不同的server实例,所以这里我们伪造的slave也需要一个唯一的server id。
Binlog dump
最开始的时候,MySQL只支持一种binlog dump方式,也就是指定binlog filename + position,向master发送COM_BINLOG_DUMP命令。在发送dump命令的时候,我们可以指定flag为BINLOG_DUMP_NON_BLOCK,这样master在没有可发送的binlog event之后,就会返回一个EOF package。不过通常对于slave来说,一直把连接挂着可能更好,这样能更及时收到新产生的binlog event。
在MySQL 5.6之后,支持了另一种dump方式,也就是GTID dump,通过发送COM_BINLOG_DUMP_GTID命令实现,需要带上的是相应的GTID信息,不过笔者觉得,如果只是单纯的实现一个能同步binlog的工具,使用最原始的binlog filename + position就够了,毕竟我们不是MySQL,解析GTID还是稍显麻烦的。
最新文章
- expect用法
- 【原】移动web页面支持弹性滚动的3个方案
- 记录Sqlserver2012附加Sqlserver2008的数据库出错的解决方案
- android如何实现文件按时间先后顺序排列显示
- 关于ebox
- 错题726-java
- NS_ENUM &; NS_OPTIONS
- A*算法的实现
- EBuild-API常见问题汇总
- HTML前端技术(JS的使用,包括数组和字符串)
- LeetCode之“动态规划”:Valid Parentheses &;&; Longest Valid Parentheses
- 【English】20190428
- vs2015配置OpenCV遇到的问题
- Java Base64 加解密
- A* 算法的原理
- css伪类及伪元素用法
- vue----less引用
- JxBrowser之五:清除cache和cookie以及SSL证书处理
- 几张简单的terraform flow 图——可以快速了解terraform的使用
- 《Software Design中文版01》