mysql进阶:通过canal-admin来管理canal集群

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 上一期我们讲解了如何搭建canal集群,随着我们节点数量的增加,其管理工作的难度也会增加,我们需要一个可视化的客户端来帮助我们管理这些canal节点。于是乎canal-admin应运而生。

0.引言

上一期我们讲解了如何搭建canal集群,随着我们节点数量的增加,其管理工作的难度也会增加,我们需要一个可视化的客户端来帮助我们管理这些canal节点。于是乎canal-admin应运而生。

canal搭建主从|集群架构

1. 简介

canal-admin的设计初衷就是为了canal提供整体的配置管理、节点运维等功能。针对多节点的情况,不需要相同的配置每个节点都要操作一遍。为运维人员节约时间。

admin中有三大板块:

  • 集群:也就是一组canal服务端deployer,也称为Server,同一集群的Server的配置文件可以在admin中统一集中管理。也就是说admin是面向多集群的管理

在这里插入图片描述

  • Server:也就是deployer服务,一个deployer节点对应admin中的Server的一条数据,同一个集群下只能有一个deployer节点处于启动状态,原因我们已经在上一篇博文中说明,有兴趣的同学可以自定查看

在这里插入图片描述

  • Instance:一个deployer下有多个实例,就是我们在conf文件夹下配置的子文件夹,每个实例都有自己的instance.properties配置文件,同样我们可以在admin页面中创建管理该配置文件,实现更加方便的运维

在这里插入图片描述

2. admin搭建

1、下载安装包,以下演示基于canal1.1.6

在这里插入图片描述

也可以直接在服务器上使用wget指令下载

wget https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.admin-1.1.6.tar.gz

2、创建一个admin文件夹,并且解压安装包

mkdir canal/admin
mv canal.admin-1.1.6.tar.gz canal/admin
cd canal/admin
tar -zxvf canal.admin-1.1.6.tar.gz

3、创建并导入canal_manager数据库,编码格式utf8,初始化脚本canal_manager,sql可在如下地址下载,也可以在admin/conf路径下找到

canal_manager.sql github下载地址

在这里插入图片描述

4、因为我是用的mysql8.0,而canal-admin中默认提供的驱动器是mysql5.0的,因此要替换一下

scp mysql-connector-java-8.0.22.jar admin/lib

5、给驱动器文件赋权,删除旧版本驱动器

chmod 777 lib/mysql-connector-java-8.0.22.jar
chmod +st lib/mysql-connector-java-8.0.22.jar
rm -rf lib/mysql-connector-java-5.1.48.jar

6、修改配置文件

vim 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.244.17:3306
  database: canal_manager
  username: root
  password: 123456
  # 修改myql驱动器
  driver-class-name: com.mysql.cj.jdbc.Driver
  url: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
  hikari:
    maximum-pool-size: 30
    minimum-idle: 1

canal:
  adminUser: admin
  adminPasswd: admin

7、启动(注:这里启动前,最好给客户端adapter/conf/application.yml文件做个备份,后续会说明其用处)

./bin/startup.sh 

8、查看日志,如下图所示则说明启动成功

在这里插入图片描述

9、admin使用的是8089端口,需要提前开启该端口映射

# 查询端口是否开放
firewall-cmd --query-port=8980/tcp
# 开启端口
firewall-cmd --add-port=8089/tcp --permanent
# 开启后重新加载
firewall-cmd --reload

10、访问http://192.168.244.26:8089/,输入默认账号admin/123456访问

在这里插入图片描述

如图所示,admin就算搭建好了

在这里插入图片描述

11、在集群管理中,点击新建集群,新建一个集群配置。这里的zk地址就是服务端集群的zk地址

在这里插入图片描述

12、点击操作-主配置,设置一个配置模版

在这里插入图片描述

13、点击载入模版`,然后根据需要设置配置文件

在这里插入图片描述

修改内容如下

# canal admin config【1】
canal.admin.manager = 192.168.244.26:8089
# admin auto register【2】
canal.admin.register.auto = true
canal.admin.register.cluster = cluster-one
# 【3】
canal.zkServers = 192.168.244.1:2181
# 【4】
#canal.instance.global.spring.xml = classpath:spring/memory-instance.xml
#canal.instance.global.spring.xml = classpath:spring/file-instance.xml
canal.instance.global.spring.xml = classpath:spring/default-instance.xml

3. 服务端deployer配置

1、修改配置文件

 vim conf/canal_local.properties

修改内容

# 当前节点ip
canal.register.ip = 192.168.244.25

canal.admin.manager = 192.168.244.26:8089
canal.admin.port = 11110
canal.admin.user = admin
# admin密码,使用了mysql的password加密后的密码,与admin/conf/applicaiton.yml中设置的密码对应
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# 开启自动注册模式
canal.admin.register.auto = true
# 指定注册的集群名
canal.admin.register.cluster = cluster-one
# 注册到admin上的服务名,默认为当前ip
canal.admin.register.name =

如果要调整admin密码,可以通过如下mysql指令设置

# mysql5.0
select password('xxx')
# mysql8.0
select upper(sha1(unhex(sha1('xxx'))))

2、启动服务

./bin/startup.sh local

注意这里指定了local参数,或者可以将canal.properties文件替换为canal_local.properties

在这里插入图片描述

服务端启动完成后,将客户端adapter重启一遍

4. 管理端admin配置

1、一般情况server会自动注册到admin中

在这里插入图片描述

2、如果没有自动注册的话,就点击新建Server手动添加一下

在这里插入图片描述

3、之前我们就可以在操作-日志中查看到server的日志情况

在这里插入图片描述

4、并且可以在主配置中统一修改集群下的服务端deployer的配置文件,也可以统一的查看集群下的服务端实例

5、在Instance管理中新增一个实例,也就是我们之前在服务端的conf文件夹下配置的,每一个子文件夹就代表了一个实例,每个实例都有自己的instance.properties配置文件,这里新增的实例就是这个配置文件

在这里插入图片描述

6、点击操作-启动就可以启用该实例

在这里插入图片描述

从上述我们可以了解到admin管理的就是我们的服务端deployer服务,已经各个服务下配置的实例,一个服务可以配置多个实例。

5. 客户端adapter配置

而针对客户端adapter,admin是不做管理的,如上我们配置了一个cluster的实例,如果要实现数据同步,我们还需要配置该实例对应的客户端来将该数据同步到目标数据源

这里需要注意的是,如果配置好admin后,启动客户端,出现报错:

IllegalStateException: Failed to load property source from location 'classpath:/application.yml'

在这里插入图片描述

这是由于conf/application.yml配置文件被canal-deployer下的canal.propertity文件内容替换了,发生的原因是canal_manager数据库数据出现问题,将该数据库重新导入一遍即可

1、我这里直接用navicat连接后删除了canal_manager,然后重新执行了canal_manager.sql

2、当然库删除后数据被清空了,之前在admin管理页面中操作的配置就要重新来一遍了,即如下内容:

  • 新建集群,设置主配置
  • 添加Server
  • 添加Instance

3、然后将之前让大家备份的application.yml替换为现有的文件

scp application.yml root@192.168.244.25:/var/local/canal1.1.6/adapter/conf/
scp application.yml root@192.168.244.26:/var/local/canal1.1.6/adapter/conf/

4、然后重新启动adapter

./bin/startup.sh
tail -f logs/adapter/adapter.log

日志显示启动正常

在这里插入图片描述

6. 测试

1、我这里的同步配置是基于canal搭建主从|集群架构中搭建的环境的,实现的是基于集群的从mysql同步至es,所以我们在此基础上测试

上述环境是同步mysql中的user表到es中的同名索引中

2、我们在数据库中新增一条数据

在这里插入图片描述

3、adapter中有日志输出

在这里插入图片描述

4、观察kibana中索引,数据添加成功

在这里插入图片描述

总结

我们针对canal-admin的演示就到此结束了,可能对于刚刚接触canal的同学来说上手还是有一定的陌生感,但是把握学习的一个要点:只要你用的多,自然就熟悉了。很多以前不理解的知识点,会在你不断的实战用自然而然的消化吸收

如果你觉得这篇文章对你有用的话,希望点赞支持一下

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
存储 SQL 关系型数据库
MySQL语句详解:从基础到进阶的全面指南
MySQL语句详解:从基础到进阶的全面指南
|
4天前
|
负载均衡 算法 关系型数据库
MySQL集群如何实现负载均衡?
【8月更文挑战第16天】MySQL集群如何实现负载均衡?
22 6
|
4天前
|
存储 负载均衡 关系型数据库
MySQL集群
【8月更文挑战第16天】MySQL集群
19 5
|
4天前
|
SQL 负载均衡 关系型数据库
*配置MySQL集群
【8月更文挑战第16天】*配置MySQL集群
12 2
|
8天前
|
SQL 关系型数据库 MySQL
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
26 1
|
2天前
|
canal 关系型数据库 MySQL
"揭秘阿里数据同步黑科技Canal:从原理到实战,手把手教你玩转MySQL数据秒级同步,让你的数据处理能力瞬间飙升,成为技术界的新晋网红!"
【8月更文挑战第18天】Canal是一款由阿里巴巴开源的高性能数据同步系统,它通过解析MySQL的增量日志(Binlog),提供低延迟、可靠的数据订阅和消费功能。Canal模拟MySQL Slave与Master间的交互协议来接收并解析Binary Log,支持数据的增量同步。配置简单直观,包括Server和Instance两层配置。在实战中,Canal可用于数据库镜像、实时备份等多种场景,通过集成Canal Client可实现数据的消费和处理,如更新缓存或写入消息队列。
28 0
|
26天前
|
存储 关系型数据库 MySQL
MySQL数据库开发进阶:精通数据库表的创建与管理22
【7月更文挑战第22天】数据库的创建与删除,数据表的创建与管理
34 1
|
27天前
|
运维 关系型数据库 MySQL
面试题MySQL问题之MySQL集群的单点失效如何解决
面试题MySQL问题之MySQL集群的单点失效如何解决
58 2
|
27天前
|
缓存 监控 关系型数据库
MySQL PXC 集群死锁分析案例
前不久一个系统死锁导致部分业务受到影响,今次补上详细的节点日志分析过程。
38 1
|
1月前
|
关系型数据库 MySQL Serverless
体验阿里云PolarDB MySQL Serverless集群
体验阿里云PolarDB MySQL Serverless集群