一、TABLE_MAP_EVENT

Used for row-based binary logging beginning with MySQL 5.1.5.The TABLE_MAP_EVENT defines the structure if the tables that are about to be changed.

用于从MySQL 5.1.5开始的基于行的二进制日志记录。每个ROW_EVENT之前都有一个TABLE_MAP_EVENT,用于描述表的内部ID和结构定义。

1)触发条件

    # ROW格式中每个ROW_EVENT之前

2)存储格式

1、事件头,占用19个字节。
2、事件体部分:
固定数据部分:
# table id:6 bytes //6个字节存储table id
# 2 bytes:Reserved for future use //2个字节保留未来使用 可变数据部分:
# 1 byte. The length of the database name. //数据库名长度:1字节
# Variable-sized. The database name (null-terminated). //数据库名:可变长度
# 1 byte. The length of the table name. //表长度:1字节
# Variable-sized. The table name (null-terminated). //表名:可变长度
# Packed integer. The number of columns in the table. //表的行数:
# Variable-sized. An array of column types, one byte per column. To find the meanings of these values, look at enum_field_types in the mysql_com.h header file. //列类型数组,每一列1个字节
# Packed integer. The length of the metadata block. //元数据块的长度
# Variable-sized. The metadata block; see log_event.h for contents and format. //元数据块
# Variable-sized. Bit-field indicating whether each column can be NULL, one bit per column. For this field, the amount of storage required for N columns is INT((N+7)/8) bytes. //位字段,指示每个列是否可以为空,每个列一位。如果表有N列,需要:INT((N+7)/8) 字节

3)实战分析

结合hexdump出来的数据和mysqlbinlog解析出的日志进行分析:

-------公有事件头--------
1、timestamp(4): 21 2e 0e 5b
2、event_type(1):13,十进制19:TABLE_MAP_EVENT = 19
3、server id(4):5c 27 6b 94 十进制:2490050396
4、event size(4):2e 00 00 00,十进制:46
5、log_pos(4):aa 01 00 00 ,十进制:426 也就是end_log_pos=426
6、flags(2):00 00,等于0表示该日志文件关闭状态 --------固定数据部分(私有事件头)-----
1、table id(6):b1 01 00 00 00 00,十进制433,table_id=433
2、reserve(2):01 00,十进制:1,未被使用 ---------可变数据部分(事件体)--------
3、db name len(1):06,数据库名占用6个字节,即darren
4、db name(6):64 61 72 72 65 6e,查询asci码,对应darren
5、00
6、table name len(1):01,表名占用1个字节
7、table name(1):74,asci码对应字母t,即表名是t
8、00
9、column count(1):01,即列的个数1
10、column type(1):03,表示MYSQL_TYPE_LONG
11、column metadata len(1):00,1个字节
12、column metadata:无
13、null bitmap(1):00,0表没有列可以为NULL,如果是01表示该列可以为NULL
14、crc32(4):8f cb 07 7d,代表CRC32=0x7d07cb8f,不在事件体里,可以认为每个事件都存在footer

MySQL Binlog解析(2)的更多相关文章

  1. MySQL Binlog 解析工具 Maxwell 详解

    maxwell 简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis.RabbitMQ.Redis.Goog ...

  2. mysql binlog解析概要

    1,dump协议: 根据数据库的ip+port创建socket,如果创建成功,说明链接建立成功,接下来是使用dump协议订阅binlog 链接建立成功之后,服务端会主动向客户端发送如下问候信息gree ...

  3. MySQL Binlog解析

    https://yq.aliyun.com/articles/238364?spm=5176.8067842.tagmain.52.73PjU3 摘要: 概述 MySQL的安装可以参考:Linux(C ...

  4. MySQL Binlog解析(1)

    一.Binlog File Binlog files start with a Binlog File Header followed by a series of Binlog Event Binl ...

  5. 采用OpenReplicator解析MySQL binlog

    Open Replicator是一个用Java编写的MySQL binlog分析程序.Open Replicator 首先连接到MySQL(就像一个普通的MySQL Slave一样),然后接收和分析b ...

  6. MySQL Binlog 介绍

    Binlog 简介 MySQL中一般有以下几种日志: 日志类型 写入日志的信息 错误日志 记录在启动,运行或停止mysqld时遇到的问题 通用查询日志 记录建立的客户端连接和执行的语句 二进制日志 记 ...

  7. MySQL binlog的格式解析

    我搜集到了一些资料,对理解代码比较有帮助. 在头文件中binlog_event.h中,有描述 class Log_event_header class Log_event_footer 参见[Myst ...

  8. Mysql binlog日志解析

    1. 摘要: Mysql日志抽取与解析正如名字所将的那样,分抽取和解析两个部分.这里Mysql日志主要是指binlog日志.二进制日志由配置文件的log-bin选项负责启用,Mysql服务器将在数据根 ...

  9. 腾讯工程师带你深入解析 MySQL binlog

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 本文由 腾讯云数据库内核团队 发布在云+社区 1.概述 binlog是Mysql sever层维护的一种二进制日志,与innodb引擎中的red ...

随机推荐

  1. Android学习15--使用(Drawable)资源

    1.图片资源 图片资源是最简单的Drawable资源.仅仅要把*.png.*.jpg*..gif等格式的图片放入/res/drawable-XXX文件夹下,Android SDK就会在编译应用自己主动 ...

  2. 【BZOJ3166】[Heoi2013]Alo 可持久化Trie树+set

    [BZOJ3166][Heoi2013]Alo Description Welcome to ALO ( Arithmetic and Logistic Online).这是一个VR MMORPG , ...

  3. 【Python基础】装饰器的解释和用法

    装饰器的用法比较简单,但是理解装饰器的原理还是比较复杂的,考虑到接下来的爬虫框架中很多用到装饰器的地方,我们先来讲解一下. 函数 我们定义了一个函数,没有什么具体操作,只是返回一个固定值 请注意一下缩 ...

  4. Python全栈day24-25(面向对象编程)

    参考文档: http://www.cnblogs.com/linhaifeng/articles/6182264.html# 类:把一类事物的相同的特征和动作整合到一起就是类,类是抽象的概练 对象:就 ...

  5. python之MySQL学习——防止SQL注入(参数化处理)

    import pymysql as ps # 打开数据库连接 db = ps.connect(host=', database='test', charset='utf8') # 创建一个游标对象 c ...

  6. 用express创建网站出现"$ DEBUG=microbog ./bin/www"的提示

    第一次用express框架创建网站,指令为:“express -t ejs microblog”,如下图 指令运行完成后,出现如图框中的提示,不知道什么意思,运行:“node app.js”来启动服务 ...

  7. c# WinForm软件启动拦截(通过更改文件关联实现)

    前几天想做一个软件启动之前拦截的程序,找了下网上的资料没有找到合适的,突然看到电脑软件某看图软件,找到个思路就是跟他一样的,通过修改文件关联进行启动拦截. 原理是这样的,更改.exe默认的启动方式为我 ...

  8. Delphi日期设置为NULL

    在某些情况下,需要将日期字段的值置空,这种操作比较麻烦.在操作的时候,可将变量的值(t:TDateTime)设置为0,在操作的过程中进行判断,当t的值为0或-1的时候,时间值为1899年的Delphi ...

  9. Type Java compiler level does not match the version of the installed Java project facet.项目内容没错但是项目上报错,不影响运行

    1.Window->Show View->Problems 2.在项目上右键properties->project Facets->修改右侧的version  保持一致 3.w ...

  10. 查找至少连续出现三次的所有数字/连续3天的日期【LeetCode】

    编写一个SQL查询,查找至少连续出现三次的所有数字.+----+-----+ | Id | Num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | ...