Canal-adapter实时增量同步多数据源数据(Mysql-Mysql)

一.版本介绍:

canal.admin 1.1.4

canal.deployer 1.1.4

canal.adapter 1.1.4

二.背景:

最近项目在采用Canal-adapter来实时增量同步多个mysql数据源的数据到指定数据库,本次同步的数据源有17个。最开始是打算部署3个Canal-adapter实例,将17个数据源大致均分到每个实例下同步数据,结果在官网并没有找到相关的多个数据源配置教程,由于项目紧张,所以采用了17个实例来单独抽取每个源的数据。事后,通过看Canal-adapter源码,才了解多数据源多Canal实例如何配置,所以写这边文章记录一下。

三.多源配置:
1.部署Canal

不做详细介绍,可以参考官网部署。地址:https://github.com/alibaba/canal

2.部署Canal-adapter

修改解压后的Canal-adapter的配置文件。该文件在${your_canal-adapter}/conf 下,修改application.yml配置文件:

server:
  port: 8081 #canal-adapter启动端口号
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    default-property-inclusion: non_null

canal.conf:
  mode: tcp # kafka rocketMQ
  canalServerHost: 127.0.0.1:11111 #canal地址
  batchSize: 500
  syncBatchSize: 1000
  retries: 0
  timeout:
  accessKey:
  secretKey:
  srcDataSources:
    source1: ##数据源1
      url: jdbc:mysql://192.00.000.000:3306/test?useUnicode=true
      username: root
      password: password
    source2: ##数据源2
      url: jdbc:mysql://172.00.000.000:3306/test?useUnicode=true
      username: root
      password: 123456
  canalAdapters: 
  - instance: example # canal instance实例名称
    groups:
    - groupId: g1  #组id
      outerAdapters:
#      - name: logger
      - name: rdb
        key: mysql1  #mysql id
        properties:
          jdbc.driverClassName: com.mysql.jdbc.Driver
          jdbc.url: jdbc:mysql://172.00.000.00:3306/test_wd?useUnicode=true
          jdbc.username: root
          jdbc.password: password
  - instance: example1  # canal instance实例名称
    groups:
    - groupId: g2
      outerAdapters:
      - name: rdb
        key: mysql2
        properties:
          jdbc.driverClassName: com.mysql.jdbc.Driver
          jdbc.url: jdbc:mysql://172.00.000.00:3306/test_wd?useUnicode=true
          jdbc.username: root
          jdbc.password: password

需要注意的是,虽然canalAdapters是一个集合,instance是封装在集合中具体的一个实体对象,一组groupId和key属于一个instance实例,但在不同的canal instance中,groupId和key也必须区分开。

3.配置rdb文件

Canal-adapter是通过热加载rdb目录下的yml配置文件来做到同步数据到指定数据库的,所以这块需要根据前面配置的数据源和canal instance实例来配置yml文件,多源配置具体如下:

test_wd_test_sink.yml

dataSourceKey: source1  #数据源1
dbMapping:
  targetTable: test_wd.test_sink  #数据下沉指定数据库
  database: test   #源库
  targetPk:  
    id: id   #主键
  mapAll: true
  table: test_sink  #源表
  commitBatch: 10   #提交批次大小
groupId: g1  #组id
concurrent: true
destination: example  #canal 实例名称
outerAdapterKey: mysql1   #  key

test_wd_test_sink_many.yml

dataSourceKey: source2
dbMapping:
  targetTable: tmp.test_sink
  database: test
  targetPk:
    id: id
  mapAll: true
  table: test_sink
  commitBatch: 10
groupId: g2
concurrent: true
destination: example1
outerAdapterKey: mysql2

4.启动Canal-adapter实例

启动之后,当日志中出现以下信息,则说明Canal-adapter启动成功了。

2022-03-09 15:10:32.528 [main] INFO  c.a.otter.canal.client.adapter.rdb.config.ConfigLoader - ## Rdb mapping config loaded
2022-03-09 15:10:32.577 [Thread-3] INFO  c.a.o.canal.adapter.launcher.loader.CanalAdapterWorker - =============> Start to subscribe destination: example <=============
2022-03-09 15:10:32.585 [Thread-3] INFO  c.a.o.canal.adapter.launcher.loader.CanalAdapterWorker - =============> Subscribe destination: example succeed <=============
2022-03-09 15:10:32.793 [main] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-4} inited
2022-03-09 15:10:32.794 [main] INFO  c.a.o.canal.adapter.launcher.loader.CanalAdapterLoader - Load canal adapter: rdb succeed
2022-03-09 15:10:32.795 [main] DEBUG o.s.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'syncSwitch'
2022-03-09 15:10:32.795 [main] INFO  c.a.o.canal.adapter.launcher.loader.CanalAdapterLoader - Start adapter for canal instance: example1 succeed
2022-03-09 15:10:32.795 [main] INFO  c.a.o.canal.adapter.launcher.loader.CanalAdapterService - ## the canal client adapters are running now ......
2022-03-09 15:10:32.795 [Thread-5] INFO  c.a.o.canal.adapter.launcher.loader.CanalAdapterWorker - =============> Start to connect destination: example1 <=============
2022-03-09 15:10:32.795 [main] DEBUG o.s.beans.factory.support.DefaultListableBeanFactory - Finished creating instance of bean 'scopedTarget.canalAdapterService'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值