如何修复解析MySQL8.x binlog错位的问题


本篇内容介绍了“如何修复解析MySQL8.x binlog错位的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!今天太晚了,我还在研究MySQL 8.0.20的源码,问题的修复过程后续再写一篇详细的文章来与小伙伴们分享下。这里,我就直接说我是如何解决这个问题的。MySQL5.x binlog的解析结果与MySQL8.x binlog的解析结果总是存在位数偏差,框架原本的代码直接解析MySQL 5.x是没啥问题的,在解析MySQL 8.x的时候出现位数错位的问题。期间,我几乎翻阅了MySQL的所有官方文档,把mykit-data中关于解析binlog日志的功能重新写了一遍,解析MySQL5.x没问题,解析MySQL8.x还是错位。到底哪里出了问题呢?就在对于问题的解决一筹莫展的时候,突然,想到一个思路:解决MySQL8.x binlog的时候不是总错位吗?那我就把多余位数的binlog数据读取出来,直接忽略掉,使后续binlog的解析操作对齐不就行了吗?赶紧尝试一下,于是我在mykit-data框架的源码中,添加了如下代码。上面代码是对解析MySQL binlog位数的校验和读取的封装,当读取的binlog位数未达到读取的限制位数时,一直读取binlog的数据,直到读取的binlog位数达到读取的限制位数位置。具体内部的逻辑,小伙伴们可以阅读mykit-data的源码。加上这个逻辑后,进行测试验证,解析MySQL 8.x数据库的binlog竟然成功了!!困扰我几天的问题就这么在不经意间解决了!!从解决这个问题的结果来看,MySQL8.x的binlog在本质上比MySQL5.x的binlog位数要长,中间会拼接用来分隔不同事件位的标识,我们在解析MySQL8.x的binlog日志时,可直接忽略掉这些分隔不同事件位的标识,目的就是让binlog的解析位对齐,从而能够正确的解析出下一个事件。而这样处理,也不会影响解析结果。很多 香港云主机时候就是这样,当你苦于解决某个问题,迟迟找不到解决方案而一筹莫展时,在某个不经意的瞬间,就会无意中解决这个棘手的问题,但前提是你需要深刻理解它的原理并尝试各种方式和方法来解决它!mykit-data是一款完全开源的数据异构中间件,支持插件化、可视化的数据异构框架,支持MySQL到MySQL、MySQL到Oracle、Oracle到MySQL、Oracle到Oracle的全量、实时/定时增量数据同步。完全的插件化、可视化操作。通过日志最大限度的避免同步过程中的数据丢失。支持失败重试,人工干预,支持查看同步的数据和详细的日志信息。目前支持MySQL5.x、MySQL8.x,Oracle 11g及以上版本。后续会以插件的形式支持更多的异构数据源。例如,后续会增加:SQL Server、Postgre SQL、Redis、ES、Hadoop、HBase、MongoDB、TiDB等数据源。“如何修复解析MySQL8.x binlog错位的问题”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注开发云网站,小编将为大家输出更多高质量的实用文章!

相关推荐: SAP SD基础知识之SD常用BAPI

创建销售订单:BAPI_SALESORDER_CREATEFROMDAT2 创建退货销售订单:BAPI_CUSTOMERRETURN_CREATE 根据销售订单生成交货单:BAPI_DELIVERYPROCESSING_EXEC 修改外向交货单:BAPI_OU…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 09/03 10:45
下一篇 09/03 10:49

相关推荐