canal-admin组件的使用
canal-server的操作一直是采用面向命令行的运维方式,canal-admin出现使得用户没必要再去维护canal-server组件里复杂而且冗长的配置文件,可以将所有的配置都交给canal-admin来进行管理,同时canal-admin提供相对友好的WebUI操作界面,目前功能有集群管理、Server管理和Instance管理。
1. 下载canal-admin解压
将之前下载canal.admin-1.1.7.tar.gz进行解压。
[jack@hadoop102 software]$ mkdir /opt/module/canal-admin
[jack@hadoop102 software]$ tar zxvf canal.admin-1.1.7.tar.gz -C /opt/module/canal-admin
## 进入/opt/module/canal-admin目录,可以看到如下结构
[jack@hadoop102 canal-admin]$ ll
总用量 8
drwxrwxr-x. 2 jack jack 76 5月 11 07:39 bin
drwxrwxr-x. 3 jack jack 156 5月 11 07:39 conf
drwxrwxr-x. 2 jack jack 4096 5月 11 07:39 lib
drwxrwxr-x. 2 jack jack 6 10月 9 2023 logs
2. 初始化canal-admin的系统数据库
初始化脚本在conf/canal_manager.sql
[jack@hadoop102 conf]$ ll
总用量 24
-rwxrwxr-x. 1 jack jack 484 10月 9 2023 application.yml
-rwxrwxr-x. 1 jack jack 3898 10月 9 2023 canal_manager.sql
-rwxrwxr-x. 1 jack jack 6737 10月 9 2023 canal-template.properties
-rwxrwxr-x. 1 jack jack 2036 10月 9 2023 instance-template.properties
-rwxrwxr-x. 1 jack jack 1568 10月 9 2023 logback.xml
drwxrwxr-x. 3 jack jack 72 5月 11 07:39 public
## 使用本地docker中mysql实例初始化canal-admin的系统数据库
## 1. 查看mysql实例是否运行
[jack@hadoop102 conf]$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
440b18ce65e0 mysql:5.7.44 "docker-entrypoint.s…" 25 hours ago Up 25 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql-ods
## 2. 上传sql脚本到mysql中
[jack@hadoop102 conf]$ sudo docker cp ./canal_manager.sql mysql-ods:/canal_manager.sql
Successfully copied 5.63kB to mysql-ods:/canal_manager.sql
## 3. 命令行交互mysql
[jack@hadoop102 conf]$ sudo docker exec -it mysql-ods mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 498
Server version: 5.7.44 MySQL Community Server (GPL)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
## 4. 执行sql脚本
mysql> source /canal_manager.sql
Query OK, 1 row affected (0.00 sec)
Database changed
Query OK, 0 rows affected (0.00 sec)
......
3. 修改配置文件
在conf目录下有这些配置文件:
[jack@hadoop102 canal-admin]$ cd conf
[jack@hadoop102 conf]$ ll
总用量 24
-rwxrwxr-x. 1 jack jack 490 5月 12 23:14 application.yml
-rwxrwxr-x. 1 jack jack 3898 10月 9 2023 canal_manager.sql
-rwxrwxr-x. 1 jack jack 6737 10月 9 2023 canal-template.properties
-rwxrwxr-x. 1 jack jack 2036 10月 9 2023 instance-template.properties
-rwxrwxr-x. 1 jack jack 1568 10月 9 2023 logback.xml
drwxrwxr-x. 3 jack jack 72 5月 11 07:39 public
- application.yml,canal-admin是springboot工程,application.yml是默认主配置文件,里面包含基础配置:比如链接数据库的账号密码、对canal-server提供的admin管理的账号密码等。
- logback.xml,日志配置文件。
- canal-template.properties,canal配置的默认模板,针对canal-server开启自动注册时,会选择这个默认模板。
- instance-template.properties,instance配置的默认模板。
在conf目录下修改application.yml文件,调整canal-admin系统数据库的信息。
server:
port: 8089
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
spring.datasource:
address: 192.168.101.102:3306
database: canal_manager
username: root
password: 123456
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
4. 启动canal-admin
[jack@hadoop102 canal-admin]$ sh bin/startup.sh
## 查看admin日志
[jack@hadoop102 canal-admin]$ tail -f logs/admin.log
2024-05-12 23:21:58.046 [main] INFO io.ebean.config.properties.LoadContext - loaded properties from [application.yml]
2024-05-12 23:21:58.143 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
2024-05-12 23:21:58.147 [main] WARN com.zaxxer.hikari.util.DriverDataSource - Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
2024-05-12 23:21:59.134 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
2024-05-12 23:21:59.156 [main] WARN io.ebean.internal.DefaultContainer - DataSource [ebeanServer] has autoCommit defaulting to true!
2024-05-12 23:21:59.209 [main] INFO io.ebean.internal.DefaultContainer - DatabasePlatform name:ebeanServer platform:mysql
2024-05-12 23:22:00.493 [main] INFO o.s.b.a.web.servlet.WelcomePageHandlerMapping - Adding welcome page: class path resource [public/index.html]
2024-05-12 23:22:00.911 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8089"]
2024-05-12 23:22:00.974 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8089 (http) with context path ''
2024-05-12 23:22:01.002 [main] INFO com.alibaba.otter.canal.admin.CanalAdminApplication - Started CanalAdminApplication in 8.209 seconds (JVM running for 9.988)
可以通过http://192.168.101.102:8089/ 访问canal-admin页面,默认密码:admin/123456 可以看到"Server 管理"菜单里面是空的,接下来操作canal-server纳入canal-admin的管理中。
5. canal-server端配置
5.1 解压canal.deployer包
[jack@hadoop102 software]$ mkdir /opt/module/canal.deployer
[jack@hadoop102 software]$ tar -xvf canal.deployer-1.1.7.tar.gz -C /opt/module/canal.deployer
5.2 配置canal-server连接信息
使用canal_local.properties的配置覆盖canal.properties,并修改其中参数:
[jack@hadoop102 conf]$ ll
总用量 20
-rwxrwxr-x. 1 jack jack 319 11月 16 2022 canal_local.properties
-rwxrwxr-x. 1 jack jack 6745 11月 16 2022 canal.properties
drwxrwxr-x. 2 jack jack 33 5月 12 23:49 example
-rwxrwxr-x. 1 jack jack 4429 11月 16 2022 logback.xml
drwxrwxr-x. 2 jack jack 39 5月 12 23:49 metrics
drwxrwxr-x. 3 jack jack 149 5月 12 23:49 spring
[jack@hadoop102 conf]$ mv canal_local.properties canal.properties
## 调整部分配置属性:
# 由于本地有docker虚拟网卡干扰,手动指定本地ip
canal.ip =192.168.101.102
# canal-admin的地址
canal.admin.manager = 192.168.101.102:8089
canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# 是否开启自动注册模式
canal.admin.register.auto = true
配置说明
canal.admin.passwd
:canal-server和canal-admin交互需要安全认证,canal-server会用用户名和加密后的密文请求canal-admin,密文是来自canal-admin中配置的原始密码经过mysql的password函数生成而来:
mysql>select password('admin');
+-------------------------------------------+
| password('admin') |
+-------------------------------------------+
| *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
+-------------------------------------------+
-- 如果遇到mysql8.0,可以使用select upper(sha1(unhex(sha1('admin'))))得到密文。
canal.admin.register.auto
: 如果为true,则直接读取admin上的server配置, 读取后覆盖本地相关server的配置。
6. server管理
- 通过启动canal-server,canal-server自动向canal-admin完成注册。
[jack@hadoop102 canal-deployer]$ ./bin/startup.sh
[jack@hadoop102 canal-deployer]$ tail -f logs/canal/canal.log
2024-05-13 00:12:03.786 [main] INFO com.alibaba.otter.canal.deployer.CanalLauncher - ## set default uncaught exception handler
2024-05-13 00:12:03.807 [main] INFO com.alibaba.otter.canal.deployer.CanalLauncher - ## load canal configurations
2024-05-13 00:12:05.171 [main] INFO com.alibaba.otter.canal.deployer.CanalStarter - ## start the canal server.
2024-05-13 00:12:05.269 [main] INFO com.alibaba.otter.canal.deployer.CanalController - ## start the canal server[172.17.0.1(172.17.0.1):11111]
2024-05-13 00:12:05.432 [main] INFO com.alibaba.otter.canal.deployer.CanalStarter - ## the canal server is running now ......
- 访问canal-admin的server管理页面,可以看到canal-server已经注册成功:
配置项说明:
配置
,主要是维护单机模式的canal.properties配置,注意:挂载到集群模式的server,不允许单独编辑server的canal.properties配置,需要保持集群配置统一。修改
/删除
,主要是维护server的基本属性,比如名字和ip、port。启动
/停止
,主要是提供动态启停server的能力,比如集群内这个机器打算下线了,可以先通过停止释放instance的运行,集群中的其他机器通过HA就会开始接管任务。日志
,查看server的根日志,主要是canal/canal.log的最后100行日志。详情
,主要提供查询在当前这个server上运行的instance列表,以server维度方便快速做instance的启动、停止操作. 比如针对集群模式,如果server之- 间任务运行负载不均衡,可以通过对高负载Server执行部分Instance的停止操作来达到均衡的目的。
7. 在线创建Instance
进入Instance管理菜单,点击新建Instance=>载入模版: 点击载入模版,canal-admin会自动加载conf目录下的instance-template.properties文件。
配置必要的信息,点击保存,如下所示,demo实例生成了。
#################################################
## mysql serverId , v1.0.26+ will autoGen
# position info
canal.instance.master.address=192.168.101.102:3306
# username/password
canal.instance.dbUsername=root
canal.instance.dbPassword=123456
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false
# table regex
canal.instance.filter.regex=.*\\..*
可以控制demo实例的启动、停止、修改和查看日志。
8. Instance实例操作
8.1 demo实例启动
点击操作==> 启动, 弹出确认对话框,点击确定: 刷新页面,可以发现此时demo实例状态发生变化:
8.2 查看instance日志
日志默认显示最近100条信息,日志文件在canal-server目录下面的logs/deme/demo.log里面。
9. 集群管理
canal-admin提供canal高可用解决方案。提供管理功能有:修改/删除集群、主配置、查看server功能。 配置项说明如下:
- 修改集群/删除集群,属于基本的集群信息维护和删除。
- 主配置,主要是指集群对应的canal.properties配置,设计上一个集群的所有server会共享一份全局canal.properties配置 (如果有个性化的配置需求,可以创建多个集群)。
- 查看server,主要是指查看挂载在这个集群下的所有server列表。
值得说明的是同一个canal-server集群,它们共用同一份canal.properties配置文件。