开发者社区> 问答> 正文

Canal如何支持阿里云RDS的订阅?

目前使用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

展开
收起
绿子直子 2023-05-09 15:49:09 139 0
1 条回答
写回答
取消 提交回答
  • 是的,你可以设置白名单表,针对黑名单表binlog协议只看一个header头,判断不命中直接丢弃

    原回答者GitHub用户agapple

    2023-05-10 11:07:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像