首页 > 其他分享 >怎样使用 canal

怎样使用 canal

时间:2024-05-09 15:56:23浏览次数:29  
标签:canal admin register db deployer instance 使用 怎样

基于 canal,我们可以监听 MySQL 表的更新事件,借以实现数据同步或者通知刷新,话不多说,进入正题。

在 github 网页上的 canal 下载页,有如下几个压缩包:

所以,哪个是我们需要的呢?canal.adapter 是为了与其他数据系统适配而开发的工具,例如 hbase,es 等;canal.admin 是 canal 的管理界面; canal.deployer 是真正伪装成 MySQL slave 的服务。

简单情形下,我们一般使用 canal.deployer 和 canal.admin 即可。如果只是单实例启动 canal,只需要 canal.deployer 就行,canal.admin 提供了 canal 的配置管理功能,在生产环境更建议使用。

1. 启动 canal.admin

从配置文件入手,这是一个典型的 spring web 应用,canal.admin 依赖 MySQL 数据库,初始化脚本 "canal_manager.sql" 在工程中可找到 ,注意 canal.adminUser 和 canal.adminPasswd,是 canal.deployer 连接 canal.admin 时提供的凭据。

server:
  port: 8089
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

spring.datasource:
  address: 127.0.0.1:3306
  database: canal_manager
  username: canal
  password: canal
  driver-class-name: com.mysql.jdbc.Driver
  url: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false
  hikari:
    maximum-pool-size: 30
    minimum-idle: 1

canal:
  adminUser: admin
  adminPasswd: admin

SQL 脚本执行后,直接启动即可。登录时,默认的用户名和密码可能存在问题,可以通过代码生成密码的密文,然后替换 canal_user 表的密码字段。

 上图代码得到密码 admin1234 的密文,然后修改 canal_user 数据库。

密码重置后,正常登录。

2. 新建集群,canal.deployer 集群依赖 zookeeper,首先安装 zk,说明一下,依赖 zk 建立的 canal 集群,只有一个实例处于工作状态,其余实例待命,所以 2 个实例足够了。

通过 admin 管理 canal,原来 canal.properties 配置文件中的大部分内容转移到了集群配置中。

通常设置 canal.serverMode = kafka 或者 rocketMQ 是常用的做法,同时正确配置 MQ 的地址,canal.instance.global.mode 必须设置为 manager,canal.destinations 需要留空。

3. 创建 server,填写的 ip 和端口信息,必须与后续启动的 canal.deployer 保持一致

 

4. 创建 instance,instance 真正执行监听 binglog 的任务,可以认为一个 instance 对应一个 MySQL 实例,

因为本文使用 MQ 模式,binlog 监听事件发送到 kafka 中,canal 提供了一种 MySQL 库、表到 kafka topic 的映射,下面的配置监听指定的数据库,并将不同的数据库事件发送到对应的 kafka topic 中

# 保留 db_order 库中所有表和 db_customer 库中所有表的 binlog 事件
canal.instance.filter.regex=db_order\\..*,db_customer\\..*
# 不保留 canal_manager 库的 binlog 事件 canal.instance.filter.black.regex=canal_manager\\..*
# db_order 的事件发送到 canal_topic_order 中,db_customer 的事件发送到 canal_topic_customer 中 canal.mq.dynamicTopic=canal_topic_order:db_order,canal_topic_customer:db_customer

5. 启动 canal.deployer

在 canal.admin 页面中配置好集群、server 和 instance 后,着手 canal.deployer 的启动,deployer 在启动时向 admin 注册,并从 admin 拉取 instance 的配置信息。

因为主要的配置在 canal.admin 页面的集群中,canal.deployer 自身的配置很少了,下面是 canal.properties 文件示例,

canal.deployer 在启动时会监听多个端口

#################################################
######### 		common argument		#############
#################################################
# tcp bind ip
canal.ip =
# register ip to zookeeper
# 默认使用 canal.register.ip 和 canal.admin.port 作为 server 的名称 canal.register.ip = 192.168.56.1 canal.port = 11111 canal.metrics.pull.port = 11112 # canal instance user/passwd # canal.user = canal # canal.passwd = E3619321C1A937C46A0D8BD1DAC39F93B27D4458 # canal admin config
# 即 admin 的地址 canal.admin.manager = 127.0.0.1:8089
# 这个端口是 deployer 监听的端口,admin 通过该端口向 deployer 发送指令 canal.admin.port = 11110
# deployer 启动时连接 admin,此处的 user 和 passwd 是 admin 中的 canal.adminUser 和 canal.adminPasswd canal.admin.user = admin
# 通过前面的 SecurityUtil#scrambleGenPass 可以生成密文 canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441 # admin auto register #canal.admin.register.auto = true #canal.admin.register.cluster = #canal.admin.register.name =

配置完成后,启动 deployer 即可。

6. 订阅 MQ 中的 topic,消费事件。

 

标签:canal,admin,register,db,deployer,instance,使用,怎样
From: https://www.cnblogs.com/allenwas3/p/18182475

相关文章

  • Nessus安装和使用
    Nessus简介Nessus是十分强大的漏洞扫描器,内含最新的漏洞数据库,检测速度快,准确性高。下载地址:https://www.tenable.com/downloads/nessus一、安装可以windows,linux,docker等方式安装本次采用docker方式安装dockerrun-it-d--name=nessus-p8834:8834tenableofficial/n......
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版在线打开 word 文件
    PageOffice国产版:支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)芯片架构。在OA办公、文档流转等各个Web系统中,实现最简单的打开编辑保存文件功能,调用PageOffice只需要几行代码就可以完成。后端代码在后端编写代码调用webOpen方法......
  • 对于Docker和Podman的一点使用经验
    前言:本文会以多个实际的线上例子,分享自己对于Docker和Podman的一点使用经验及踩过的坑,希望对读者有一点帮助。本文bash脚本初步加工后可直接使用(兼容mac和linux系统),对于关键点会有注重说明,但是对于一些细节需要读者自行去查阅相关文档,这里不会具体展开。一、部署Apollo1、docke......
  • 08_Quartz.NET使用
    Quartz.NET是一个用于调度任务和作业的开源框架,它允许开发人员创建简单或复杂的调度方案,例如定时执行任务,定时触发作业等。创建调度器很简单需要三个对象: IScheduler、IJob、ITrigger,直接上代码,使用可根据需求再扩展usingQuartz;usingQuartz.Impl;usingQuartzScheduler......
  • 为什么要使用微服务架构?
    一、传统的单体架构1、什么是单体架构?单体架构(MonolithicArchitecture)是一种传统的软件架构模式,将整个应用程序作为一个单一的、统一的单元进行开发、部署和扩展。在单体架构中,所有的功能模块都被打包在一起,共享同一个代码库和数据库。 2、单体架构的缺点复杂性高一个......
  • 一篇文章掌握Python中多种表达式的使用:算术表达式、字符串表达式、列表推导式、字典推
    Python中的表达式可以包含各种元素,如变量、常量、运算符、函数调用等。以下是Python表达式的一些分类及其详细例子:1.算术表达式算术表达式涉及基本的数学运算,如加、减、乘、除等。#加法表达式sum=3+5#结果为8#乘法表达式product=4*6#结果为24#复......
  • redis、LVS、nginx的基本使用方法
    redis、LVS、nginxredis搭建哨兵原理哨兵搭建至少要有3个机器,且必须为奇数个redis搭建哨兵之前要先实现主从复制;master的配置文件中的masterauth和slave都必须相同实现主从复制之所有从节点配置文件[root@slave~]#yuminstall-yredis[root@slave~]#vim/etc/redis.c......
  • 微信小程序使用微信云托管添加自定义域名并转发到pexels.com
    背景:我要在小程序上显示pexels.com上的图片,然后我得先把pexels.com的域名添加到小程序的request合法域名中,但是pexels.com是国外的,在国内没有备案所以添加不了。解决方案就是:用一个已经备案好的域名进行转发,转发的服务器我选择的是微信云托管,备案好的域名还需要ssl,没有的话本文会......
  • Mybatis if判断中使用了Ognl关键字导致报错解决方法
    mybatisxml中使用OGNL解析参数,如果直接使用了关键字则会导致解析失败。常见的关键字有:字段mybatis关键字bor(字符|)的英文xor字符^的英文and字符&&band字符&ed字符==neg字符!=lt字符<gt字符>lte字符<=......
  • idea使用svn报错-Error:Can not get current revision for file
    idea中使用svn结果报错:Error:CannotgetcurrentrevisionforfileD:/IDEADire…,并且idea提示一下警告:解决方案:安装svn的时候要主要勾选上第二个选项,如下图所示:最后在idea中配置svn的安装路径下的svn.exe,File->settings->VersionControl–>Subversion......