前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySql-Binlog协议详解-流程篇

MySql-Binlog协议详解-流程篇

作者头像
无毁的湖光-Al
发布2018-08-14 10:53:15
9720
发布2018-08-14 10:53:15
举报
文章被收录于专栏:解Bug之路解Bug之路

MySql-Binlog协议详解-流程篇

MySql-Binlog在MySql主从不同方面发挥着不可或缺的作用,同时我们也能通过Binlog实时监控数据的变化。本系列就讲述了怎样接收并解析Binlog。本篇就主要对接收binlog的流程做了一下探讨。

Binlog发送接收流程

流程如下图所示:

(1)第一步和上篇blog一样,通过HandShake协议进行Client和DB的握手认证

(2)握手成功以后,Client对DB发送show master status命令,此命令中回带回当前最新binlog存储在哪个文件,以及对应哪个偏移量。如果想从当前开始接收binglog,则在后面发送binlog dump命令的时候用这两个值就好。

(3)发送show global variables like 'binlog_checksum'命令,这是由于binlog event发送回来的时候需要,在最后获取event内容的时候,会增加4个额外字节做校验用。mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none。如果不想校验,可以使用set命令设置set binlog_checksum=none

(4)最后终于到了发送Dump命令的阶段

MySql-Binlog-Dump命令

Dump命令包图如下所示:

如上图所示,在报文中塞入binlogPosition和binlogFileName即可让master从相应的位置发送binlog event

MySql-Binlog-Event

一但发送了BinlogDump命令,master就会在数据库有变化的源源不断的推送binlog event到client。值得注意的是binlog的类型有三种:

(1)Statement:每一条会修改数据的sql都会记录在binlog中。

(2)Row:不记录sql语句上下文相关信息,仅保存哪条记录被修改。

(3)Mixedlevel:以上两种Level的混合。

在下一篇博客中,笔者会详细讲述binlog-event的格式。

github地址

https://github.com/alchemystar/Aroundight

原文链接

https://cloud.tencent.com/developer/article/1184369

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/02/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySql-Binlog协议详解-流程篇
  • Binlog发送接收流程
  • MySql-Binlog-Dump命令
  • MySql-Binlog-Event
  • github地址
  • 原文链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档