canal-adapter字段过滤

canal-adapter字段过滤

canal-adapter 更新规则

在连接内的表,任何一张表更新之后,都会触发插入或更新。

table regex 监听表

canal.instance.filter.regex=mufan\\.credit_record,mufan\\.credit_club_member,mufan\\.credit_club,mufan\\.credit_user

过滤表字段,这些字段变化时,不进行更新操作

canal.instance.filter.black.field=mufan.credit_user:modify_time/create_time/wx_openid/create_user

关键代码位置:com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert#parseOneRow

 /**
     * 字段过滤判断
     */
private boolean needField(List<String> fieldList, List<String> blackFieldList, String columnName) {
  if (fieldList == null || fieldList.isEmpty()) {
    return blackFieldList == null || blackFieldList.isEmpty()
      || !blackFieldList.contains(columnName.toUpperCase());
  } else {
    return fieldList.contains(columnName.toUpperCase());
  }
}

消费消息

com.alibaba.otter.canal.adapter.launcher.loader.AdapterProcessor#writeOut

具体同步操作

com.alibaba.otter.canal.client.adapter.es.core.service.ESSyncService#sync

Message对象解析工具类

消息CommonMessage的生成,用于canal的关键消息

com.alibaba.otter.canal.connector.core.util.MessageUtil

ERROR c.a.o.canal.adapter.launcher.loader.CanalAdapterService - ## something goes wrong when starting up the canal client adapters:

可能的原因:

  1. Relation condition column must in select columns.
    关联列(关联on的列)必须出现在select中。
  2. 连接必须是left join

版权声明:本文为wang124454731原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。