首页 > 数据库 >canal同步mysql,监听单实例,多实例配置

canal同步mysql,监听单实例,多实例配置

时间:2024-08-21 18:49:36浏览次数:10  
标签:canal jdbc tcp instance 实例 mysql hankyoon

1、下载canal安装包

canal.adapter-1.1.7.tar.gz

canal.deployer-1.1.7.tar.gz

2、修改涉及的文件

canal_deployer:
/conf/canal.properties
/conf/example/instance.properties

canal_adapter:
/conf/application.yml
/conf/rdb  在rdb中添加对应的数据配置表,即便监听多个mysql实力,全部放在rdb中

3、监听单实例mysql数据源,在/conf/canal.properties中配置一个example,默认就是example

4、监听多个实例mysql数据源,复制example进行修改,例如:example1,example2 

5、监听一个mysql数据源同步到一个数据库

canal_deployer:

修改 /conf/example/instance.properties 文件

#################################################
## mysql serverId , v1.0.26+ will autoGen
# canal.instance.mysql.slaveId=0

# enable gtid use true/false
canal.instance.gtidon=false

# position info
canal.instance.master.address=10.10.7.7:3306
canal.instance.master.journal.name=mysql-bin.054560
canal.instance.master.position=241476047
canal.instance.master.timestamp=
canal.instance.master.gtid=

# rds oss binlog
canal.instance.rds.accesskey=
canal.instance.rds.secretkey=
canal.instance.rds.instanceId=

# table meta tsdb info
canal.instance.tsdb.enable=true
#canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb
#canal.instance.tsdb.dbUsername=canal
#canal.instance.tsdb.dbPassword=canal

#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
#canal.instance.standby.gtid=

# username/password
canal.instance.dbUsername=canal_hankyoon
canal.instance.dbPassword=canal_hankyoon
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false
#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==

# table regex
#canal.instance.filter.regex=.*\\..*
canal.instance.filter.regex=dbname.tablename01,dbname.tablename02,dbname.tablename03

canal_adapter:
修改application.yml 文件

server:
  port: 8081
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    default-property-inclusion: non_null

canal.conf:
  mode: tcp #tcp kafka rocketMQ rabbitMQ    # 注意mode选择
  flatMessage: true
  zookeeperHosts:
  syncBatchSize: 1000
#  retries: -1
#  retries: 0
  timeout:
  accessKey:
  secretKey:
  consumerProperties:
    # canal tcp consumer
    canal.tcp.server.host: 127.0.0.1:11111
    canal.tcp.zookeeper.hosts:
    canal.tcp.batch.size: 500
    canal.tcp.username:
    canal.tcp.password:

  srcDataSources:
    defaultDS:
      url: jdbc:mysql://10.10.7.7:3306/hankyoon?useUnicode=true
      username: canal_hankyoon
      password: canal_hankyoon

  canalAdapters:
  - instance: example # canal instance Name or mq topic name
    groups:
    - groupId: yoon
      outerAdapters:
#      - name: logger
      - name: rdb
        key: yoon
        properties:
          jdbc.driverClassName: com.mysql.jdbc.Driver
          jdbc.url: jdbc:mysql://10.10.7.77:3306/hankyoon?useUnicode=true
          jdbc.username: canal_hankyoon
          jdbc.password: canal_hankyoon

在rdb中添加对应的数据配置表:

dataSourceKey: defaultDS
destination: example1
groupId: yoon
outerAdapterKey: yoon
concurrent: true
dbMapping:
  database: hankyoon
  table: yoon
  targetTable: yoon
  targetPk:
    id: id
  mapAll: true

6、监听多个mysql实例数据源,同步至一个数据库
修改 /conf/canal.properties 文件,添加多个实例

canal.destinations = example,example1

修改添加example1

conf/example
conf/example1   # 修改instance.properties中对应的数据库信息

7、修改 application.yml 添加多个监听实例

server:
  port: 8081
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    default-property-inclusion: non_null

canal.conf:
  mode: tcp #tcp kafka rocketMQ rabbitMQ    # 注意mode选择
  flatMessage: true
  zookeeperHosts:
  syncBatchSize: 1000
#  retries: -1
#  retries: 0
  timeout:
  accessKey:
  secretKey:
  consumerProperties:
    # canal tcp consumer
    canal.tcp.server.host: 127.0.0.1:11111
    canal.tcp.zookeeper.hosts:
    canal.tcp.batch.size: 500
    canal.tcp.username:
    canal.tcp.password:

  srcDataSources:
    defaultDS:
      url: jdbc:mysql://10.10.7.7:3306/hankyoon?useUnicode=true
      username: canal_hankyoon
      password: canal_hankyoon

    defaultDS01:
      url: jdbc:mysql://10.10.7.9:3306/hankyoon?useUnicode=true
      username: canal_hankyoon
      password: canal_hankyoon

  canalAdapters:
  - instance: example # canal instance Name or mq topic name
    groups:
    - groupId: yoon
      outerAdapters:
#      - name: logger
      - name: rdb
        key: yoon
        properties:
          jdbc.driverClassName: com.mysql.jdbc.Driver
          jdbc.url: jdbc:mysql://10.10.7.77:3306/hankyoon?useUnicode=true
          jdbc.username: canal_hankyoon
          jdbc.password: canal_hankyoon

  - instance: example1 # canal instance Name or mq topic name
    groups:
    - groupId: hank
      outerAdapters:
#      - name: logger
      - name: rdb         # rdb不要复制,不要修改,同步的数据源配置表,全部放在一个rdb中
        key: hank
        properties:
          jdbc.driverClassName: com.mysql.jdbc.Driver
          jdbc.url: jdbc:mysql://10.10.7.77:3306/hankyoon?useUnicode=true
          jdbc.username: canal_hankyoon
          jdbc.password: canal_hankyoon

在rdb中数据表配置信息:

example:
dataSourceKey: defaultDS
destination: example1
groupId: yoon
outerAdapterKey: yoon
concurrent: true
dbMapping:
  database: hankyoon
  table: yoon
  targetTable: yoon
  targetPk:
    id: id
  mapAll: true


example1:
dataSourceKey: defaultDS01
destination: example1
groupId: hankyoon
outerAdapterKey: hank
concurrent: true
dbMapping:
  database: hankyoon
  table: hank
  targetTable: hank
  targetPk:
    id: id
  mapAll: true

 

参考:https://blog.csdn.net/wonder_dog/article/details/124608664

标签:canal,jdbc,tcp,instance,实例,mysql,hankyoon
From: https://www.cnblogs.com/hankyoon/p/18372338

相关文章

  • MySQL8.0安装教程
    一、下载二、解压、初始化数据库以windows管理员打开cmd进入MySQL解压后的bin目录执行mysqld--initialize--user=mysql--consoleMySQL初始化完成三、安装mysqld服务mysqld--install四、启动mysql服务netstartmysql五、修改root用户密码mysql-uroot-p输入......
  • 一文总结MySQL各种锁
    概述对于后端Java开发人员来说,锁主要有Java锁和DB锁。Java锁,请参考一文总结Java开发各种锁。本文所述的DB锁,可能会局限于MySQL数据库。隔离级别与锁的关系在RU级别下,读取数据不需要加共享锁,这样就不会跟被修改的数据上的排他锁冲突在RC级别下,读操作需要加共享锁,但是在语句执......
  • MySQL子查询、WITH AS、LAG查询统计数据实战
    需求给出一个比较常见的统计类业务需求:统计App(包括iOS和Android两大类)每日新注册用户数、以及累计注册用户数。数据库采用MySQL,根据上面的需求,不难设计表如下:createtableos_day_count(stat_datevarchar(10)notnullcomment'统计日期',osvarcha......
  • 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2024年7月刊
    本文为大家整理了墨天轮数据社区2024年7月发布的优质技术文章/文档,主题涵盖Oracle、MySQL、PostgreSQL等主流数据库系统以及国产数据库的深度教程和实用指南。从基础的安装配置到复杂的故障排查,再到性能优化的高级技巧,每篇文章都是由领域专家精心撰写。此外,还有常用脚本和操作注意......
  • 【mysql】纯干货--mysql连接与启动
      本站以分享各种运维经验和运维所需要的技能为主《python零基础入门》:python零基础入门学习《python运维脚本》: python运维脚本实践《shell》:shell学习《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战《k8》从问题中去学习k8s《docker学习》暂未更新......
  • MYSQL忘记root密码
    需求背景最近发现用户服务器的mysql是别人安装的,但是没有告诉它任何关于mysql的信息。所以我这里写一篇文章记录一下。以下教程是centos7.9的语法,其余操作系统参照操作步骤,方便有个方向。教程开始第一种直接重新安装//这个方法适合不需要保留以前的任何数据//直接卸载......
  • MySQL 通过set global设置变量的注意点
    今天有人问,为什么他修改动态变量log_output的时候,部分可以设置成功,部分设置失败,具体现象如下:root@localhost(none)>showvariableslike'log_output';+---------------+-------+|Variable_name|Value|+---------------+-------+|log_output|TABLE|+--------......
  • mysql 语句的执行顺序
    MySQL语句的执行顺序如下:FROM 子句:确定数据来源的表或表达式。ON 子句:应用 JOIN 条件,如果有的话。JOIN 子句:如果有的话,根据 JOIN 类型(如 INNERJOIN, LEFTJOIN 等)连接表。WHERE 子句:过滤记录,只留下满足条件的记录。GROUPBY 子句:根据指定的......
  • MySQL 禁止使用 HASH 索引
    在MySQL中,虽然InnoDB存储引擎默认使用的是BTREE索引,但它也支持一种特殊的自适应哈希索引(adaptivehashindex,AHI),这是InnoDB自动管理和使用的,用户无法直接控制。然而,对于内存存储引擎MEMORY(之前称为HEAP),MySQL确实允许用户显式地创建HASH索引。如果你想要在MEMORY表上使用HASH索......
  • 自定义 MySQL Shell 提示符
    MySQLShell中的提示符的样式和格式可以根据使用者的需求进行定制。我们可以配置提示符以显示有关数据库连接和使用的模式的不同或简化信息。本文将展示如何添加视觉提示,让您知道何时连接到生产数据库。设置步骤既然您正在阅读关于自定义MySQLShell的内容,您应该已经安装了它......