很多人都知道mysqlbinlog 解释出来的binlog的 insert , update 是位置相反的 , 还有表字段都是@0 ... @数字 , 很恶心!!!
但没看到有人在 mysql8.0 功能需求时提问题出来 , 我也没有提出来 , 哈哈 !!!
唯有自己翻译 frm 文件,获取表字段名称,字段出来咯 , 然后对应一下贴贴贴上去翻译出binlog的sql语句咯
FE 01 识别是否frm文件 , 固定
0A 是mysql版本识别位置table.cc 的 FRM_VER+3+ MY_TEST(create_info->varchar); 为6是5.0+版本mysql , 9 或者 10是有varchar的frm文件
0C 影射枚举值从 handler.h文件中 legacy_db_type , 0C 是 12 刚刚好是innodb类型 ,如下:
enum legacy_db_type
{
DB_TYPE_UNKNOWN=0,DB_TYPE_DIAB_ISAM=1,
......, DB_TYPE_INNODB,
......
};
03 00 , 反着看 00 30 mysql 5.0+ 总是为3 ,如果不是3,那就算了.....
00 10 , 反着看 10 00 IO_SIZE: 4096
明天待续补充............
时间: 2024-10-27 13:40:18