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还是稍显麻烦的。

最新文章

  1. expect用法
  2. 【原】移动web页面支持弹性滚动的3个方案
  3. 记录Sqlserver2012附加Sqlserver2008的数据库出错的解决方案
  4. android如何实现文件按时间先后顺序排列显示
  5. 关于ebox
  6. 错题726-java
  7. NS_ENUM & NS_OPTIONS
  8. A*算法的实现
  9. EBuild-API常见问题汇总
  10. HTML前端技术(JS的使用,包括数组和字符串)
  11. LeetCode之“动态规划”:Valid Parentheses && Longest Valid Parentheses
  12. 【English】20190428
  13. vs2015配置OpenCV遇到的问题
  14. Java Base64 加解密
  15. A* 算法的原理
  16. css伪类及伪元素用法
  17. vue----less引用
  18. JxBrowser之五:清除cache和cookie以及SSL证书处理
  19. 几张简单的terraform flow 图——可以快速了解terraform的使用
  20. 《Software Design中文版01》

热门文章

  1. uva 10911 - Forming Quiz Teams(记忆化搜索)
  2. Linux 文件操作——系统调用和标准I/O库
  3. SpringMVC的值传递
  4. Swift的基础,操作符,字符串和集合类型
  5. 【设计模式:单例模式】使用单例模式载入properties文件
  6. C语言头文件组织
  7. linux中curl命令
  8. dojo.io.script
  9. frame和iframe
  10. ng-if和ng-show的区别