Canal配置connector.subscribe和canal.instance.filter.regex遇到的坑

背景介绍:

使用java连接canal获取mysql数据库binlog日志 传送门

从上篇文章可以看到canal的连接样例,

try {this.batchSize = canalProperties.getBatchSize();CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(canalProperties.getIp(), Integer.valueOf(canalProperties.getPort())),canalProperties.getDestinations(), "", "");connector.connect();connector.subscribe(".*\\..*"); //所有库所有表connector.rollback();CustomizationLogger.info(LOGGER, "canal connect success ...");this.connector = connector;this.runnable = true;} catch (CanalClientException e) {CustomizationLogger.info(LOGGER, "canal connect fail ...");canalContext.getCommonUtil().sendErrorReport(e);}

这里制定了消费订阅 所有表所有库connector.subscribe(".*\\..*"); 如果我想只订阅一个库或者几个单独的库单独的表要怎么操作呢?

方法一:修改canal deploy conf下example Instance.properties配置的过滤正则

canal.instance.filter.regex=.*\\..*

示例:

全库全表 canal.instance.filter.regex

.*\\..*

.*\\..*

指定库全表

canal.instance.filter.regex


库名\..*  

test\..*
单表

canal.instance.filter.regex

库名.表名 test.user
多规则组合使用

canal.instance.filter.regex

库名1\..*,库名2.表名1,库名3.表名2 (逗号分隔)

test\..*,test2.user1,test3.user2 (逗号分隔)

方法二:修改java程序下connector.subscribe配置的过滤正则

全库全表
connector.subscribe(".*\\..*")
指定库全表
connector.subscribe("test\\..*")

单表

connector.subscribe("test.user")

多规则组合使用

connector.subscribe("test\\..*,test2.user1,test3.user2")

注意:

如果修改了canal配置的instance文件,一定不要在客户端调用CanalConnector.subscribe(".*\\..*"),不然等于没设置canal.instance.filter.regex。配置根据CanalConnector.subscribe(”表达式“)里的正则表达式进行过滤

客户端配置后example的log日志:

            connector.subscribe("compatible_hrdata_deep\\..*");

如果 设置了canal.instance.filter.regex。 可以设置 connector.subscribe(); 不填写任何配置。

(如果一定要调用CanalConnector.subscribe(".*\\..*"),那么可以设置instance.properties的canal.instance.filter.black.regex参数添加黑名单,过滤非关注库表。

# table regex 设置白名单,如果在instance.properties配置文件中进行该项配置,则在代码中不应该再配置

# connector.subscribe(".*\\..*");,如果还在代码中配置,则配置文件将会失效!!!

canal.instance.filter.regex = .*\\..*

# table black regex 设置黑名单

canal.instance.filter.black.regex =

此过滤条件只针对row模式的数据有效(ps. mixed/statement因为不解析sql,所以无法准确提取tableName进行过滤)

备注:

制定了正则过滤还会出现的能获取到其他库的变动情况,但是仅能获取到事务,不能获取到rowdata具体信息。

Canal配置connector.subscribe和canal.instance.filter.regex遇到的坑相关推荐

  1. canal配置tsdb,支持表结构修改

    instance.properties的配置: ################################################# ## mysql serverId , v1.0.2 ...

  2. canal布在mysql端还是服务端_canal使用入坑,亲测 !!!!

    原来用windows本地运行,在本地模拟客户端和服务端,鼓捣了一天都没运行成功...最后放弃了,改用 windows的客户端+ubuntu的服务端(客户端程序运行在window,canal监听运行在U ...

  3. Elasticsearch7.9集群部署,head插件,canal同步mysql数据到es,亲自测试,无坑

    Elasticsearch集群部署 1.服务器规划 10.4.7.11 node1 10.4.7.12 node2 10.4.7.13 node3 1. 集群相关    一个运行中的 Elastics ...

  4. canal java_易用的 canal java 客户端 canal-client

    易用的canaljava 客户端 canal 自身提供了简单的客户端,数据格式较为复杂,处理消费数据也不太方便,为了方便给业务使用,提供一种直接能获取实体对象的方式来进行消费才更方便. 先说一下实现的 ...

  5. canal的java客户端_GitHub - cjl1001/canal-client: spring boot canal starter 易用的canal 客户端 canal client...

    易用的canal 客户端 easy canal client 介绍 canal 是阿里巴巴mysql数据库binlog的增量订阅&消费组件 使用该客户端前请先了解canal,https://g ...

  6. Maven resource 配置中include与exclude及其filter的使用

    Maven resource 配置中include与exclude及其filter的使用 2017年01月24日 15:25:30 wangjunjun2008 阅读数:6635 Maven reso ...

  7. Canal(1):Canal入门

    1 什么是 Canal 阿里巴巴 B2B 公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了同步杭州和美国异地机房的需求,从 2010 年开始,阿里系公司开始逐步的尝试基于数据 ...

  8. logback logback.xml常用配置详解(三) filter

    <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一.返回DENY,日志将立即被抛弃不再经过其他过滤器:返回NEUTRAL,有序列表 ...

  9. Mule的基本配置元素:Endpoint、Transformer、Filter、Flow

    1.Endpoint Mule的endpoint和WS中的endpoint是非常类似的,它是消息进出(读写)的入口,不同的是mule的endpoint可以基于各种不同的传输协议. mule的endpo ...

最新文章

  1. x86汇编语言从实模式百度云_Intel x86 CPU 32位保护模式杂谈之任务切换 上
  2. hdu4974 简单题
  3. ThinkPad E440 加内存后导致开不了机
  4. linux下Oracle 10g安装(超级详细图解教程)
  5. bootstracp实现树形列表_Java实现一致性哈希算法,并搭建环境测试其负载均衡特性...
  6. 学习javascript语言精粹的笔记
  7. PostgreSQL 数据离散性 与 索引扫描性能(btree and bitmap index scan)
  8. c++字符串逆序输出
  9. python怎么把小写改成大写_Python 把金额小写转换成大写
  10. 各种文件后缀名与打开方式大全
  11. word 单页、多页面旋转
  12. python 月初 月末
  13. less模块——math函数
  14. Windows Server 安装 Adobe Flash Player
  15. babel5升级到babel6总结
  16. 【NLP】word2vec词向量模型训练——基于tensorflow
  17. vue 微信授权解决方案
  18. tcl脚本学习-基础语法
  19. 5.编写程序,建立一个含有5名学生成绩的文件:stu1.txt, 解释说明:为了避免测试代码时,反复从屏幕输入数据样例,我这里将数据存在f2.txt文件中,使用freopen()函数访问并读出数据
  20. HTML无害化和Sanitize模块

热门文章

  1. 【书影观后感 二】重读《1984》想到的
  2. 关于调温算法与PID
  3. Navicat连接云服务器MySQL数据库(华为云)
  4. 读《施一公院士:优秀博士如何养成》一文的总结
  5. BNU 0814 I. Pakhom and the Gully
  6. 人体发病的“红灯”信号
  7. Windows应用之——设置定时关机
  8. 一秒快速抠图一秒图片高清处理
  9. Java SE基础:计算机组成与Java概述
  10. 51单片机汽车胎压大气气压测量仪仿真设计_数码管显示