mysql longblob binlog 解析_解析MYSQL BINLOG 二进制格式(4)--TABLE_MAP_EVENT

2023-11-19

展开阅读全文

原创:转载请说明出处谢谢!

上接

http://blog.itpub.net/7728585/viewspace-2133188/ 解析MYSQL BINLOG 二进制格式(1)--准备工作

http://blog.itpub.net/7728585/viewspace-2133189/ 解析MYSQL BINLOG 二进制格式(2)--FORMAT_DESCRIPTION_EVENT

http://blog.itpub.net/7728585/viewspace-2133321/ 解析MYSQL BINLOG 二进制格式(3)--QUERY_EVENT

class:Table_map_log_event

event:TABLE_MAP_EVENT

event_code:19

本event只用于 row模式的bin log ,从5.1.5开始,其实这部分

包含了大量的关于表的原数据,也是在保证slave正确

复制数据的重要event

--fixed data

6 bytes 表ID

2 bytes 保留

--variable data part

1 bytes  数据库名长度

var-size 数据库名字 0x00 结尾

1 bytes  表名长度

var-size 表名 0x00 结尾

packed interger 字段数量 注意这里就是packed interger参考第一篇文章

var-size 字段类型,每一个字节代表一个字段,如下:

typedef enum enum_field_types {

MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,

MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG,

MYSQL_TYPE_FLOAT, MYSQL_TYPE_DOUBLE,

MYSQL_TYPE_NULL, MYSQL_TYPE_TIMESTAMP,

MYSQL_TYPE_LONGLONG,MYSQL_TYPE_INT24,

MYSQL_TYPE_DATE, MYSQL_TYPE_TIME,

MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR,

MYSQL_TYPE_NEWDATE, MYSQL_TYPE_VARCHAR,

MYSQL_TYPE_BIT,

MYSQL_TYPE_TIMESTAMP2,

MYSQL_TYPE_DATETIME2,

MYSQL_TYPE_TIME2,

MYSQL_TYPE_JSON=245,

MYSQL_TYPE_NEWDECIMAL=246,

MYSQL_TYPE_ENUM=247,

MYSQL_TYPE_SET=248,

MYSQL_TYPE_TINY_BLOB=249,

MYSQL_TYPE_MEDIUM_BLOB=250,

MYSQL_TYPE_LONG_BLOB=251,

MYSQL_TYPE_BLOB=252,

MYSQL_TYPE_VAR_STRING=253,

MYSQL_TYPE_STRING=254,

MYSQL_TYPE_GEOMETRY=255

} enum_field_types;

packed interger:metadata block 长度,注意这里就是packed interger参考第一篇文章

var-size metadata block数据

var-size 每一位代表这个字段的值是否为NULL,其长度为 INT((n+7)/8) n代表字段数量

接下来具体解析一个

--

00000200  bf ba 78 97 58 13 e5 6b  01 00 33 00 00 00 34 02  |..x.X..k..3...4.|

00000210  00 00 00 00 ae 00 00 00  00 00 01 00 04 74 65 73  |.............tes|

00000220  74 00 05 6d 79 62 69 6e  00 02 03 0f 02 3c 00 03  |t..mybin.....<..>

00000230  a1 23 ad 72

这次关于event header 部分就不解析了

ba 78 97 58 13 e5 6b 01 00 33 00 00 00 34 02

00 00 00 00

也就是这部分,直接进入event data部分

--fixed data part

ae 00 00 00  00 00 :表ID 174

01 00:保留

--variable data part

04:数据库名长度 4字节

74 65 73 74 00:数据库名test 0x00结尾

05:表名长度 5字节

6d 79 62 69 6e  00:表名mybin 0X00结尾

02:字段数量 2个字段

03:MYSQL_TYPE_LONG(4字节int类型)

0f:MYSQL_TYPE_VARCHAR(varchar类型)

02:metadata lenth

3c 00:metadata block 第一个字段不需要长度,第二个字段为可变类型长度为60

03:00000011 都可以为NULL

a1 23 ad 72:CRC32 校验4字节

到此为止:表中的说明数据就出来了,在MYSQLBINLOG中会看到

# at 513

#170206  3:10:50 server id 93157  end_log_pos 564 CRC32 0x72ad23a1      Table_map: `test`.`mybin` mapped to number 174

以及在表中

### INSERT INTO `test`.`mybin`

### SET

###   @1=1 /* INT meta=0 nullable=1 is_null=0 */

###   @2='gaopeng' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */

信息:

CRC32 0x72ad23a1      Table_map: `test`.`mybin` mapped to number 174

明显来自Table_map_log_event

而且类似/* VARSTRING(60) meta=60 nullable=1 is_null=0 */

中的 VARSTRING(60) meta=60 nullable=1 都来自于

Table_map_log_event

并且可以看到和解析出来的一模一样

本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已在2020年6月升级到阿里云开发者社区。如果您发现有涉嫌抄袭的内容,请填写侵权投诉表单进行举报,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

网友评论

登录后评论

0/500

评论

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql longblob binlog 解析_解析MYSQL BINLOG 二进制格式(4)--TABLE_MAP_EVENT 的相关文章

  • 【无标题】乌邦图基础

    1 gt ubuntu的操作 图形界面 当我们ubuntu开启时 会自动进入桌面 桌面拥有很多图标 可以直接通过鼠标点击来完成操作 只适用于不走开发型的纯小白 成本很高 字符界面 没有其他任何的图案和标志 只有黑漆漆的对话框 和冰冷的字眼
  • 基于深度学习实现实时视频目标检测

    前言 实时视频目标检测是计算机视觉领域的研究热点之一 其应用场景包括智能监控 自动驾驶 机器人视觉等多个领域 深度学习技术的快速发展使得实时视频目标检测变得更加可行和准确 本文提出一种基于深度学习实现的实时视频目标检测系统 使用Python
  • 服务器运行python代码报错:intall python Extension

    当我安装时候又报错 WARNING Retrying Retry total 4 connect None read None redirect None status None after connection broken by New
  • 学生管理系统(C语言)

    说明 本程序的基本功能由单链表实现 满足基本的增删改查等功能 包括对文件的读写 由于测试数据较少 项目的鲁棒性可能不是很好 基本功能 退出 输入成绩 计算每名学生加权平均成绩 计算每门课程平均分 按分数降序排列 按学号升序排序 按姓名在字典
  • 如何通过手机拍照生成三维模型

    使用过易模的用户都知道 易模是通过手机扫描拍摄来进行建模的 而手机拍照建模是除扫描拍摄建模方式外迭代升级的一种全新的建模方式 使用手机拍照来进行建模 我们只需要按照要求拍摄并且上传所需建模物体的照片 系统就会自动生成我们所拍摄的物体模型 目
  • Jenkins免密登录gitlab拉取代码

    折腾了一下午 终于弄好了 网上很多博客写的都不清楚 所以记录一下 环境说明 服务器 说明 192 168 199 1 Jenkins 192 168 199 2 gitlab 操作步骤 1 生成公匙 在jenkins服务器执行 ssh ke
  • 2022年华中杯A题(暂时做完第一小问,附完整Python源码)

    目的 虽然比赛时间过去了 但还是可以拿来练一练优化问题的解决 加强自己对于优化算法的巩固 文章目录 目录 目的 前言 一 题目 二 思路 1 第一小题 分批算法 三 程序 1 计算相似度的函数 2 分批算法主要部分 初始化 1 首先生成想要
  • leetcode刷题之字符串处理

    3 Longest Substring Without Repeating Characters Given a string find the length of the longest substring without repeati
  • java common-lang,Maven包错误:org.apache.commons-lang不存在(Java)

    I m using MyEclipse to develop a really simple Java Struts project Everything was working fine until I wanted to use the
  • 面试常考手写代码之--二叉树层次遍历(BFS)

    struct BTNode s int value BTNode s pLeft BTNode s pRight BTNode void BFS BTNode pRoot if pRoot NULL return std deque
  • Python并发编程【(一)理论】:多线程thread、多进程Process、协程Coroutine(async await)

    Python对并发编程的支持 多线程 threading 利用CPU和IO可以同时执行的原理 让CPU不会干巴巴等待IO完成 多进程 multiprocessing 利用多核CPU的能力 真正的并行执行任务 异步IO asyncio 在单线
  • RuntimeError: Error(s) in loading state_dict for ..:Missing key(s) in state_dict: …Unexpected key...

    原因 预训练权重层数的键值与新构建的模型中的权重层数名称不吻合 Checkpoint里面的模型是在双卡上训练的 保存的key前面都多一个module 解决 model torch nn DataParallel model device i
  • 学编程需要的电脑配置

    Java语言 普通PC机可以参考下方的这个配置哦 操作系统 Win10 或 Mac 优先Win10 内存 推荐16G及以上 8G也OK 肯定是越大越好 CPU Intel i5及以上 AMD谨慎考虑 硬盘 512G及以上 含固态硬盘优先 品
  • Exception has occurred: TypeError func must be a callable or a textual reference to one

    这是python定时器apschedurler的scheduler add job iotmain cron hour 7 minute 00 语句里面 调用的方法iotmain 不能带 改写为 scheduler add job iotm
  • rancher使用说明

    一 登录rancher rancher 内网地址 https 10 1 119 12 9443 login 用户名 admin 密码 admin 进入默认项目的工作负载页面 二 部署服务 部署服务 进入按钮 部署服务 部署页面 2 1 各部
  • mysql域名配置_bind+mysql域名解析的简单配置

    虽然不是干运维的 但在IT江湖打酱油也难免受到高人的影响 所以在很早就听说bind可以和数据结合使用 一直都没有时间去研究 今天恰好一个同事问到bind安装的问题 就顺便研究了一下 下面将我的操作过程共享个各位 期间查找了不少网络上的资料
  • 为分布式做准备吧——分布式服务架构设计概述

    文章目录 分布式服务框架设计架构原理 通信框架 长连接还是短链接 BIO还是NIO 序列化与反序列化 协议栈 服务路由 基于服务注册中心的订阅发布 集群容错 服务降级 分布式消息跟踪 分布式服务框架设计架构原理 通常 分布式服务框架的架构可
  • 集成unittest与html测试报告

    常用断言 self assertTrue self assertEqual 集成HtmlTestRunner生成测试报告 testcase unittest TestSuite testcase addTests unittest Test
  • C++ STL概述

    STL就是封装好的一些数据结构以及一些算法 C STL 标准模板库 是一套功能强大的 C 模板类 提供了通用的模板类和函数 这些模板类和函数可以实现多种流行和常用的算法和数据结构 如向量 链表 队列 栈 Standard Template

随机推荐