一、Canal Admin 安装与配置

1.1 下载

wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz
tar zxvf canal.admin-$version.tar.gz

1.2 配置

conf/application.yml

server:
port: 8089
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8 spring.datasource:
address: 192.168.137.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

1.3 初始化元数据库

数据库脚本位于 conf/canal_manager.sql

1.4 启动

sh bin/stop.sh

如果启动成功,可以通过 IP:8089 访问,默认密码:admin/123456

二、canal 配置

canal.properties 添加配置:

# canal admin config
canal.admin.manager = 127.0.0.1:8089
canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441 # admin auto register
canal.admin.register.auto = true
canal.admin.register.cluster =

重启 canal

或者不修改 canal.properties 配置,直接使用下面命令启动(使用 canal_local.properties 的配置):

sh bin/startup.sh local

或者删除 canal.properties 将 canal_local.properties 重命名为 canal.properties, 重启 canal

注意:需要确保配置的 MySQL 账户具有 canal_manager 库的插入权限,否则报错:

ERROR com.alibaba.otter.canal.deployer.CanalLauncher - ## Something goes wrong when starting up the canal Server:
com.alibaba.otter.canal.common.CanalException: load manager config failed.
Caused by: com.alibaba.otter.canal.common.CanalException: requestGet for canal config error: Error[INSERT command denied to user 'canal'@'192.168.137.101' for table 'canal_node_server']

直接 canal.properties 添加配置的话,默认的 example 实例会失效:

com.alibaba.otter.canal.common.CanalException: instance : example config is not found

需要在 Canal Admin 手动添加实例

三、更进一步

3.1 Canal Admin 设计理念:

canal-admin的核心模型主要有:

  1. instance,对应 canal-server 里的 instance,一个最小的订阅 MySQL 的队列
  2. server,对应 canal-server,一个 server 里可以包含多个 instance
  3. 集群,对应一组 canal-server,组合在一起面向高可用 HA 的运维

instance 因为是最原始的业务订阅诉求,它会和 server/集群 这两个面向资源服务属性的进行关联,比如 instance A 绑定到 server A 上或者集群 A 上

有了任务和资源的绑定关系后,对应的资源服务就会接收到这个任务配置,在对应的资源上动态加载 instance,并提供服务(动态加载的过程,有点类似于之前的 autoScan 机制,只不过基于 canal-admin 之后可就以变为远程的 web 操作,而不需要在机器上运维配置文件)

将 server 抽象成资源之后,原本 canal-server 运行所需要的 canal.properties/instance.properties 配置文件就需要在 web ui 上进行统一运维,每个 server 只需要以最基本的启动配置 (比如知道一下 canal-admin 的 manager 地址,以及访问配置的账号、密码即可)

3.2 面向 user/passwd 的安全 ACL 机制

canal.properties 中的 canal.admin.passwd 对应的是 application.yml 中的 canal.adminPasswd,使用 MySQL 的 password 方法加密(记得去掉第一个首字母的星号):

select password('admin')

+-------------------------------------------+
| password('admin') |
+-------------------------------------------+
| *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
+-------------------------------------------+

canal.admin.user/canal.admin.passwd,这是一个双向认证,canal-server 会以这个密文和 canal-admin做请求,同时canal-admin 也会以密码原文生成加密串后和 canal-server 进行 admin 端口链接,所以这里一定要确保这两个密码内容的一致性

Canal Admin 后台登录密码也是使用 MySQL 的 password 方法加密的,用户名密码存储在 canal_manager 库的 canal_user 表

参考

  1. Canal Admin QuickStart
  2. Canal Admin安装和使用
  3. Canal Admin Guide
  4. Canal Admin ServerGuide

最新文章

  1. 生成 PDF 全攻略【2】在已有PDF上添加内容
  2. 使用CKplayer插件在网页中嵌入视频的方法(常用笔记2)
  3. iOS开发小技巧--TableView中headerView的循环利用,以及自定义的headerView
  4. Java web中为什么要用Service接口和DAO接口?
  5. php基础11:运算符
  6. Elasticsearch安装和使用
  7. Helpers\TableBuilder
  8. 读懂IL代码(四)
  9. 在vim中设置 '打印时间'的快捷键.
  10. Android的消息机制
  11. js禁止中文输入 最简洁的【禁止输入中文】
  12. Android 禁止软键盘自动弹出
  13. ROS验证publisher和subscriber
  14. 大约ActionContext.getContext()使用体验
  15. Xp根据数据库insert获取微信聊天记录
  16. oracle dmp数据导入
  17. 谈谈axios配置请求头content-type
  18. NOIP2012 Day1 T2国王游戏 洛谷P1080
  19. touch-action属性引起的探索
  20. xor定理证明

热门文章

  1. SQL 速查表
  2. 02_tcp_deadlock
  3. 13 SOAP
  4. Java swing实现酒店管理系统
  5. 腾讯云--对象存储cos绑定自定义域名
  6. cookie的简单介绍
  7. VC6最基本
  8. 分布式文档存储数据库之MongoDB备份与恢复
  9. 这个Map你肯定不知道,毕竟存在感确实太低了。
  10. REDHAT 7.5beta 新推出的VDO功能