我在下载oss上的二进制日志的时候之前的日志都正常下载了,但是突然报了这个错误呢?
019-04-23 19:16:43.947 [destination = example , address = ************ , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsLocalBinlogEventParser - parse local binlog file : mysql-bin.002735 , timestamp : 1555992066000 , try the next binlog ! 2019-04-23 19:16:43.951 [destination = example , address =********** , EventParser] ERROR c.a.o.c.p.inbound.mysql.rds.RdsLocalBinlogEventParser - dump address ****** has an error, retrying. caused by com.alibaba.otter.canal.parse.exception.ServerIdNotMatchException: unexpected serverId 2969422368 in binlog file ! 2019-04-23 19:16:43.952 [destination = example , address = ****** , EventParser] ERROR com.alibaba.otter.canal.common.alarm.LogAlarmHandler - destination:example[com.alibaba.otter.canal.parse.exception.ServerIdNotMatchException: unexpected serverId 2969422368 in binlog file ! ] 2019-04-23 19:16:43.968 [destination = example , address = ********* , EventParser] ERROR c.a.o.c.p.inbound.mysql.rds.RdsLocalBinlogEventParser - server id not match, try download another rds binlog! 2019-04-23 19:16:43.975 [destination = example , address = ********** , EventParser] ERROR c.a.o.c.p.inbound.mysql.rds.RdsLocalBinlogEventParser - parse events has an error java.lang.RuntimeException: com.alibaba.otter.canal.parse.exception.CanalParseException: download binlog is null
原提问者GitHub用户ShuangChenyue
这个serverIdNotMatch的意思是这样的:
首先canal会获取当前RDS的主库serverId,如果针对binlog不存在时,会尝试从rds oss binlog里去下载 下载rds oss binlog时,会寻找当前主库serverId相同的binlog文件 (rds oss binlog默认包含了主备库两个实例的binlog),如果找到备库的binlog文件,就会报serverIdNotMatch,尝试再找另一个库的binlog文件, 如果很不巧,你的当前主库是完全新的,rds oss binlog里都没有历史serverId对应的binlog,那就是最后的download binlog is null的异常
原回答者GitHub用户agapple
ServerIdNotMatchException是因为canal server的serverId和canal客户端的serverId不匹配而导致的。当canal server收到客户端的请求时,会检查请求中的serverId是否和自己的serverId一致,如果不一致就会抛出ServerIdNotMatchException异常。
可能的原因包括:
canal客户端的serverId配置不正确,与canal server的serverId不匹配。 canal server重启过,导致serverId发生了变化,但客户端的配置文件中的serverId没有更新。 解决方法:
确认客户端的serverId与canal server的serverId一致。 更新客户端的配置文件,确保其中的serverId与canal server当前的serverId一致。 如果以上方法都不行,可以尝试重新启动canal server和canal客户端。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。