当前位置: 首页 > news >正文

docker 搭建canal - BeYourSelf

一、参考文献

  1. Docker 安装 canal 详细步骤
  2. 乌班图安装java

二、环境

  1. 乌班图操作系统
  2. Docker 29.1.4
  3. Java 11.0.29
  4. rabbitMQ

三、前期准备

  1. 安装Java11

    # 先更新源	
    sudo apt-get update# 安装java11
    sudo apt-get install openjdk-11-jdk -y
    
  2. Ubuntu 安装 Docker 的方法

  3. docker换源的方法

  4. 拉取canal镜像

    1.  # 拉取canal管理页面镜像sudo docker pull canal/canal-admin# 拉取canal服务镜像sudo docker pull canal/canal-server
      
  5. 在rabbitMQ中创建好相关内容,因为本教程是将canal监听到的变化放到rabbitMQ中

    1. 创建Exchange;名称:canal-exchange

      1. 图像
    2. 创建Queue;名称:example_queue

      1. 图像 1
    3. 点击创建好的Queues; 绑定一下交换机:交换机名称:canal-exchange;Routing Key:example

      1. 图像 2

四、安装canal-admin

  1. 在官网 https://github.com/alibaba/canal/releases 的canal.admin-1.1.8-SNAPSHOT.tar.gz文件的解压包中找到canal_manager.sql,并在mysql中执行脚本。

    1. 图像 3
  2. 修改配置文件

    1.  # 新建目录/mydata/canal/admin/conf,并新建application.yml文件sudo mkdir -p /mydata/canal/admin/conf# 给权限sudo chown 777 /mydata/canal# 创建并修改配置文件sudo vim /mydata/canal/admin/conf/application.yml// application.yml 文件的内容server:port: 8089spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8spring.datasource:address: mysql:3306   // canal_manager.sql的数据库地址database: canal_manager  // canal_manager.sql的数据库username: root  // 数据库账号password: root  // 数据库密码driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=falsehikari:maximum-pool-size: 30minimum-idle: 1canal:adminUser: adminadminPasswd: 123456
      
  3. 创建canal-admin

    1.  # 创建docker网络sudo docker network create canal_net# 创建canal-adminsudo docker run -d --name canal-admin  \-v /mydata/canal/admin/conf/application.yml:/home/admin/canal-admin/conf/application.yml \-v /mydata/canal/admin/logs/:/home/admin/canal-admin/logs/ \--network canal_net -p 8089:8089 canal/canal-admin
      
  4. 打开界面: 主机地址:8089

    1. 图像 4

五、创建canal-server

  1.  # 创建配置文件sudo mkdir -p /mydata/canal/conf/examplesudo mkdir -p /mydata/canal/confsudo mkdir -p /mydata/canal/logs# 先创建容器,用来拉取配置文件到主机上配置docker run --name canal-server -d canal/canal-server# 拉取配置文件到主机上配置docker cp canal-server:/home/admin/canal-server/conf/canal.properties /mydata/canal/conf/canal.propertiesdocker cp canal-server:/home/admin/canal-server/conf/example/instance.properties /mydata/canal/conf/example/instance.properties
    
  2. canal.properties配置文件说明

    1.  # 配置文件声明(只涉及到调整到的,其他保持默认即可)# register ip to zookeeper # canal-server 服务自身的IP,因为运行 docker 时使用了 dockers network 网络,所以这里直接配置了 canal-server 的服务名canal.register.ip = canal-server  canal.port = 11111canal.metrics.pull.port = 11112# canal admin config 这里配置 canal-admin 的IP和端口,以便 canal-admin 管理页面能显示和配置canal 服务,注意用户名和密码来自于 canal-admin 服务配置的 aplication.yml 中的adminUser、adminPassword,默认都为 admin(4ACFE3202A5FF5CF467898FC58AAB1D615029441是admin加密字符串)canal.admin.manager = canal-admin:8089  canal.admin.port = 11110canal.admin.user = admin# canal-admin的密码,用脚本创建的话默认是123456canal.admin.passwd = 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9  # admin auto register 自动注册canal.admin.register.auto = true  canal.admin.register.name = taskCanal # canal-server 的服务名# tcp, kafka, rocketMQ, rabbitMQ, pulsarMQ   (canal服务模式,指监听到变化后发送到哪里)canal.serverMode = rabbitMQ# table meta tsdb info(数据库配置)canal.instance.tsdb.enable = truecanal.instance.tsdb.dir = ${canal.file.data.dir:../conf}/${canal.instance.destination:}canal.instance.tsdb.url = jdbc:mysql://数据库地址:3306/taskdata?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&useSSL=falsecanal.instance.tsdb.dbUsername = root //数据库账号canal.instance.tsdb.dbPassword = 000000 //数据库密码#canal.instance.tsdb.spring.xml = classpath:spring/tsdb/h2-tsdb.xmlcanal.instance.tsdb.spring.xml = classpath:spring/tsdb/mysql-tsdb.xmlcanal.destinations = example# mq 配置rabbitmq.host = 192.168.1.107rabbitmq.virtual.host = /rabbitmq.exchange = canal-exchangerabbitmq.username = adminrabbitmq.password = admin123rabbitmq.queue = example_queue# 这里不配置的话,好像会用canal.destinations的内容,所以前面交换机的routing Key 填了examplerabbitmq.routingKey =rabbitmq.deliveryMode = direct
      
  3. instance.properties配置文件说明(这个配置文件目前测试是没用的,要再admin管理页面上配置才生效,目前原因还不知道,有待研究)

    1.  # 监听的数据库消息canal.instance.master.address=192.168.1.132:33061  canal.instance.dbUsername=rootcanal.instance.dbPassword=abc123456# 监听的库名和表# canal.instance.filter.regex=testdb\\.tastcanal.instance.filter.regex=.*\\..*
      
  4. 创建canal-server

    1.  # 创建容器sudo docker run --name canal-server -p 11111:11111 -d -v /mydata/canal/conf/example/instance.properties:/home/admin/canal-server/conf/example/instance.properties -v /mydata/canal/conf/canal.properties:/home/admin/canal-server/conf/canal.properties -v /mydata/canal/logs/:/home/admin/canal-server/logs/  --network canal_net canal/canal-server
      
  5. 创建好后就会有服务

    1. 图像 5
  6. 在界面上创建一个instance配置

    1. 图像 6

    2. 图像 7

    3. 配置内容:

      1.  ################################################### mysql serverId , v1.0.26+ will autoGen# canal.instance.mysql.slaveId=0# enable gtid use true/falsecanal.instance.gtidon=false# position infocanal.instance.master.address=192.168.1.132:33061canal.instance.master.journal.name=canal.instance.master.position=canal.instance.master.timestamp=canal.instance.master.gtid=# rds oss binlogcanal.instance.rds.accesskey=canal.instance.rds.secretkey=canal.instance.rds.instanceId=# table meta tsdb infocanal.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/passwordcanal.instance.dbUsername=rootcanal.instance.dbPassword=abc123456canal.instance.connectionCharset = UTF-8# enable druid Decrypt database passwordcanal.instance.enableDruid=false#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==# table regexcanal.instance.filter.regex=taskdata\\.task_scheduler_command# table black regexcanal.instance.filter.black.regex=mysql\\.slave_.*# table field filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)#canal.instance.filter.field=test1.t_product:id/subject/keywords,test2.t_company:id/name/contact/ch# table field black filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)#canal.instance.filter.black.field=test1.t_product:subject/product_image,test2.t_company:id/name/contact/ch# mq configcanal.mq.topic=example# dynamic topic route by schema or table regex#canal.mq.dynamicTopic=mytest1.user,mytest2\\..*,.*\\..*canal.mq.partition=0# hash partition config#canal.mq.partitionsNum=3#canal.mq.partitionHash=test.table:id^name,.*\\..*#################################################
    4. 配置好后修改task_scheduler_command表的内容后,在mq上就可以看到消息了

      1. 图像 8
http://www.jsqmd.com/news/264118/

相关文章:

  • GESP认证C++编程真题解析 | 202309 二级
  • 2026年中国985高校人工智能专业综合实力十强排名
  • js函数防抖
  • LeeCode_17 电话号码的字母组合
  • Selenium 从环境搭建到 Web 自动化实战
  • 通信原理篇---PAM与PCM
  • GESP认证C++编程真题解析 | 202309 四级
  • P1339 Heat Wave G
  • P2910 Clear And Present Danger S
  • 职场晋升需要 AI 证书,选偏理论还是偏实操的更有用?
  • TCP 协议深度解析与实践:从零基础到精通
  • 小程序毕设选题推荐:基于springboot+微信小程序的校园竞赛管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • > STM32-200-多功能门禁人脸识别指纹识别RFID刷卡密码(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 数据质量与主数据管理:确保企业核心数据准确
  • 51-C40-温湿度检测+上下限+加热+空调降温+加湿+除湿+手动+自动+OLED屏+声光报警+按键+(无线方式选择)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 假期schedule
  • 数论2:gcd、lcm与exgcd
  • 计算机小程序毕设实战-基于SpringBoot+Vue的高校学科竞赛管理系统微信小程序基于springboot+微信小程序的院竞赛管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • day144—递归—平衡二叉树(LeetCode-110)
  • 2026年市场可靠的活性炭箱优质厂家哪家靠谱,滤筒除尘器/旋风除尘器/活性炭箱/催化燃烧,活性炭箱生产商口碑排行 - 品牌推荐师
  • STM32单片机分享:智能鱼缸系统
  • 2026年国内可靠的活性炭箱制造厂家推荐排行榜,RTO/旋风除尘器/沸石转轮一体机/除尘器,活性炭箱公司推荐榜 - 品牌推荐师
  • 交通仿真软件:VISSIM_(22).交通仿真在城市规划中的应用
  • STM32单片机分享:智能书桌系统
  • day145—递归—二叉树的右视图(LeetCode-199)
  • 理性选择RTO:基于用户反馈的供货商横向评测,沸石转轮/活性炭箱/RTO/沸石转轮一体机,RTO源头厂家排行榜 - 品牌推荐师
  • 小程序计算机毕设之基于微信小程序的大学生科技竞赛管理系统的设计与实现基于springboot+微信小程序的院竞赛管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • 2026苏州新房装修大揭秘:这些服务优质的公司你不能错过! - 品牌测评鉴赏家
  • Flink Elasticsearch Connector 从 0 到 1 搭一个高吞吐、可容错的 ES Sink
  • Flink Firehose Sink 把实时流数据稳定写进 Amazon Kinesis Data Firehose