canal实战问题汇总分析-创新互联

canal在实战过程经常会遇到这样或者那样的问题,今天我们专门用一篇文章来列举分析一下,比如、JDK版meta.dat 中保存的位点信息和数据库的位点信息不一致本不匹配、bin-log信息消费失败等问题,下面我们开始一一分析:

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比乳源网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式乳源网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖乳源地区。费用合理售后完善,10余年实体公司更值得信赖。

1、数据库数据改变了,但是canal 客户端没有监听到,比如:

服务器连接正常,服务端、客户端配置也正常,那问题出在哪啊?有一个细节需要注意到:

数据库点位:

由于我们在测试验证过程就有meta.dat文件,而且File(mysql-bin.000001)名称中间也换过,因此导致meta.dat 中保存的位点信息和数据库的位点信息不一致,导致canal抓取不到数据库的bin-log数据。

日志验证:

日志报错信息:

核心日志:

com.alibaba.otter.canal.parse.exception.PositionNotFoundException: can't find start position for promotion
2022-12-26 12:05:27.763 [destination = promotion , address = /127.0.0.1:3306 , EventParser] ERROR com.alibaba.otter.canal.common.alarm.LogAlarmHandler - destination:promotion[com.alibaba.otter.canal.parse.exception.PositionNotFoundException: can't find start position for promotion
]

解决方案:删除meta.dat文件,重启canal,问题解决;

2、JDK版本过高问题:

我用canal 版本是1.1.6,JDK是11版本,服务端和客户端启动都会报一种错误:

canal客户端服务启动也会报类似的错误,发现我的JDK版本是11,有点高了;

解决方案:换成JDK1.8就行了。

3、全量数据同步问题:

有时候我们的需求包含把历史数据也同步过去,这样怎么处理呢?首先我们确保以前的历史数据也开启了bin-log日志,即历史数据的bin-log日志存在,这样我们就可以通过设置点位,即偏移量来处理全量数据了,设置如下:修改instance.properties配置文件

# mysql日志文件
 canal.instance.master.journal.name=mysql-bin.000001
 # 获取日志的起始位置
 canal.instance.master.position=0
 # 获取日志的起始时间戳
 # canal.instance.master.timestamp=1632881068

同时将同级目录的meta.dat删除,因为这个文件记录canal已经消费的位置等信息,删除后从零开始全量同步数据。

4、

5、

6、

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:canal实战问题汇总分析-创新互联
转载注明:http://azwzsj.com/article/psceh.html