Canal同步MySQL数据无法将UPDATE类型数据更新到目标MySQL的解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Canal同步MySQL数据无法将UPDATE类型数据更新到目标MySQL的解决方案相关的知识,希望对你有一定的参考价值。

参考技术A update类型的数据无法更新到目标库,通过追踪源码,发现同步源库的binlog日志中UPDATE类型的old参数为null,导致跳出更新程序,无法更新。

仔细检查了目标库的binlog是否开启,以及binlog的格式设置,以及binlog_row_image的设置,均满足官方要求。通过换服务器安装,换目标库等等的尝试发现都无果之后,走上了修改源码的道路。这里定位问题所在为源库mysql的未知设置问题。

修改com.alibaba.otter.canal.client.adapter.rdb.service.RdbSyncService类中的update方法如下。
第一种方式对binlog中的old参数值不进行判断,直接对所有字段值进行update操作;
第二种方式兼容原有逻辑,如果有old参数值按照原有逻辑进行,如果没有按照上述第一种方式进行;

以上是关于Canal同步MySQL数据无法将UPDATE类型数据更新到目标MySQL的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

canal-clientadapter 数据同步实验

mysql触发器-表数据实时同步

大数据Canal:使用Canal同步MySQL数据

Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB

Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB

Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB