mysqlbinarylog-表映射事件中表id的唯一性

mysqlbinarylog-表映射事件中表id的唯一性,mysql,binary-log,Mysql,Binary Log,我正在尝试手动解码mysql二进制日志行格式。每个更新/插入/删除事件之前都有一个表映射事件 此事件包含一个表\u id。我正在使用此id为此表的列定义建立缓存 由于列信息的不匹配,我在所述缓存中不时出现错误。我目前无法在短期连接中重现这些问题,只能在发生二进制日志文件旋转的日志连接中重现 我怀疑表id对于一个二进制日志文件来说是唯一的。有人知道这个假设是否成立吗?有人知道在哪里可以找到声明我可以从表\u id中得到什么的文档吗 提前谢谢 Björn由于我看不到您的实际实现,这只是一个瞎猜,但看

我正在尝试手动解码mysql二进制日志行格式。每个更新/插入/删除事件之前都有一个表映射事件

此事件包含一个
表\u id
。我正在使用此id为此表的列定义建立缓存

由于列信息的不匹配,我在所述缓存中不时出现错误。我目前无法在短期连接中重现这些问题,只能在发生二进制日志文件旋转的日志连接中重现

我怀疑
表id
对于一个二进制日志文件来说是唯一的。有人知道这个假设是否成立吗?有人知道在哪里可以找到声明我可以从
表\u id
中得到什么的文档吗

提前谢谢
Björn

由于我看不到您的实际实现,这只是一个瞎猜,但看看下面的错误,可能会让您头痛:

复制中使用的表ID在 主人和奴隶。此外,最大值为 二进制日志事件中的表ID为6字节(281474976710655)。这 各种因素的结合导致了以下问题: 当一个表被分配了一个表时,从机上的数据可能会丢失 ID大于uint。 *将大于281474976710655的表ID写入 二进制日志为281474976710655* (...)
不,没有二进制日志表id值的任何查找表

您必须处理与以前的表映射事件相关的写/更新/删除binlog事件

实际上,
INFORMATION\u SCHEMA.INNODB\u SYS\u TABLES
中有一个TABLE\u ID列,但这些数字与TABLE\u MAP二进制日志事件中出现的TABLE ID不同

Table IDs used in replication were defined as type ulong on the master and uint on the slave. In addition, the maximum value for table IDs in binary log events is 6 bytes (281474976710655). This combination of factors led to the following issues: Data could be lost on the slave when a table was assigned an ID greater than uint. *Table IDs greater than 281474976710655 were written to the binary log as 281474976710655.* (...)