目前使用canal去订阅阿里RDS的增量变化数据,出现如下报错:
com.alibaba.otter.canal.parse.exception.CanalParseException: parse row data failed. Caused by: com.alibaba.otter.canal.parse.exception.CanalParseException: com.google.common.collect.ComputationException: com.alibaba.otter.canal.parse.exception.CanalParseException: fetch failed by table meta:mysql.ha_health_check Caused by: com.google.common.collect.ComputationException: com.alibaba.otter.canal.parse.exception.CanalParseException: fetch failed by table meta:mysql.ha_health_check
已经解决:阿里云RDS的账号缺少读取mysql.ha_health_check的权限 这应该是一个阿里用来监控的心跳表,将账号升级为高权限账号,并赋予canal账号SELECT mysql.ha_health_check权限后,不再报错,问题解决。
由此衍生的一个问题是:似乎当解析一行失败并抛出异常后,会影响后续的其他正常行解析,导致canal客户端无法接收到数据。这一点是我的猜测,并没有去细读源码,如果作者看见了这条issue可以适当关注一下。
原提问者GitHub用户wallkop
是的,你可以设置白名单表,针对黑名单表binlog协议只看一个header头,判断不命中直接丢弃
原回答者GitHub用户agapple
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。