栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

Row event for unknown table

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Row event for unknown table

1.问题描述

mysqlbinlog 解析binlog中出现 Row event for unknown table 提示,如下图:

2.问题原因

2.1 解析binlog时指定的位点错误

  在讲具体原因之前,我们需要先了解下Table_map_log_event。

1) 什么是Table_map_log_event

Table_map_log_event是Row Format Binlog中的一种Event。它记录了一个表的元数据信息。例如数据库名,表名和字段的类型等信息。当slave执行row events时,Table_map_log_event的作用有:

- 根据其中的数据库名和表名打开slave上对应的表
- 检测slave上的表的字段类型是否和master上的表的字段类型兼容。如果不兼容,slave会报告错误。
- 将数据转换成slave上表的字段类型。但转换紧限于slave和master的字段类型是兼容的情况。

使用mysqlbinlog解析binlog时,Table_map_log_event的作用就是提供表的定义信息,因为rows events中只包含 table id信息(binlog文件中的table id 同数据库视图中查到的表id不是一回事)。然后通过table id跟Table_map_log_event关联获取相关表的定义信息

2)Table_map_log_event 何时生成

Table_map_log_event以语句为单位。在语句记录第一个rows event之前,会为每一个要更新的表产生一个Table_map_log_event. 

3) 错误原因分析

解析具体的 rows events 时会通过rows events 里面的 table id 去找到对应的 Table_map(Table_map保存了当前rows events操作的表的定义信息),找不到Table_map,那自然无法解析对应的 rows events。所以如果你解析binlog时 指定的开始和结束位点之间没有包含对应rows events的Table_map 那么就会报Row event for unknown table

2.2 如果解析的是relay-log 那么请看如下bug

bug大概就是说事务是不能跨binlog的,但是可以跨relay-log。所以如果你的事务分布在两个relay-log中,那么解析第二个relay-log中该事务的rows events时,就会因为没有Table_map_log_event信息报上面的信息

mysqlbinlog工具使用的几个疑惑点和解释 - 知乎

MySQL Bugs: #60964: row based relay log events are lost from mysqlbinlog output

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/896664.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号