(2)Canal管理后台在linux上部署

本文档介绍了在Linux上部署Canal管理后台的详细步骤,包括背景介绍、前期准备、解压安装以及配置Canal.deployer集群。通过Canal-admin,用户可以方便地进行配置管理和节点运维。在部署过程中,需要确保具备Java环境,并正确赋予数据库相关权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.背景

canal-admin设计为canal组件提供了配置管理、节点运维等功能的WebUI操作界面,方便用户快速操作。

2.前期准备

先到官网https://github.com/alibaba/canal/releases/下载个canal.admin组件:

也可以输入shell脚本下载:
# 远程下载canal.admin
wget https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.admin-1.1.6.tar.gz
我是手动下载通过xftp等工具把二进制包上传到服务器目录/root/package中。java环境在上一个章节已经部署。

3.部署canal-admin管理后台

解压安装部署shell脚本命令如下:

# 新建canal.admin目录
mkdir /root/canal/canal.admin

# 切换到安装包目录
cd /root/package

# 解压canal.admin安装包到其目录
tar zxvf canal.admin-1.1.6.tar.gz -C /root/canal/canal.admin

# 可以先登录mysql使用命令或者手动创建初始化canal.admin管理后台相关表结构
# 登录mysql
mysql –u root –p
# 初始化canal.admin管理后台相关表结构
source /root/canal/canal.admin/conf/canal_manager.sql

# 编辑canal.admin配置
vi /root/canal/canal.admin/conf/application.yml
# 插入
i
{
# canal.admin管理后台数据库地址
address: 192.168.18.230:3306
# canal.admin管理后台数据库
database: ebs_material_dev
# 数据库登录用户名
username: root
# 数据库登录用户密码
password: Qwer.1234
}
# 保存退出
:wq

# 停止canal.admin组件
sh /root/canal/canal.admin/bin/stop.sh

# 启动canal.admin组件
sh /root/canal/canal.admin/bin/startup.sh

# 重启canal.admin组件
sh /root/canal/canal.admin/bin/restart.sh

# 关于canal.admin.passwd密码配置的说明,针对canal.admin.passwd,默认做了密码加密处理,这里的passwd是一个密文和canal-admin里application.yml里的密码原文做对应。密文的生成方式,请登录mysql,执行如下密文生成sql即可(记得去掉第一个首字母的星号)
select password('admin')

# 编辑canal.deployer的local配置文件,如果使用后台管理canal最后编辑该本地配置文件模板
vi /root/canal/canal.deployer/conf/canal_local.properties
# 插入
i
{
# 注册IP,指向当前canal.deployer组件IP,对应不同canal.deployer节点IP地址
canal.register.ip = 192.168.18.200
# canal管理后台地址
canal.admin.manager = 192.168.18.200:8089
# canal管理后台端口
canal.admin.port = 11110
# canal管理后台登录用户名
canal.admin.user = admin
# canal管理后台登录密码,经过密文的生成方式生成
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# 后台自动注册
canal.admin.register.auto = true
# canal后台配置的集群名称
canal.admin.register.cluster = DataSyncCluster
}
# 保存退出
:wq

# 如果防火墙有IP端口限制,请设置端口允许外部访问
firewall-cmd --permanent --zone=public --add-port=8089/tcp
firewall-cmd --permanent --zone=public --add-port=11110/tcp
firewall-cmd --permanent --zone=public --add-port=11112/tcp
# 防火墙重启
firewall-cmd --reload
# 查看端口是否允许外部访问
firewall-cmd --permanent --zone=public --query-port=8089/tcp
firewall-cmd --permanent --zone=public --query-port=11110/tcp
firewall-cmd --permanent --zone=public --query-port=11112/tcp
# 查看防火墙所有端口
firewall-cmd --zone=public --list-ports

# 停止canal.deployer组件
sh /root/canal/canal.deployer/bin/stop.sh local

# 启动canal.deployer组件
sh /root/canal/canal.deployer/bin/startup.sh local

# 重启canal.deployer组件
sh /root/canal/canal.deployer/bin/restart.sh local

# 命令用于连接文件并打印到标准输出设备上
cat /root/canal/canal.deployer/conf/canal_local.properties |grep canal.register.ip

# 如果想修改时序数据库H2更换成mysql数据库记录,可以执行如下脚本
# 创建元数据快照表
CREATE TABLE `meta_snapshot` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `gmt_create` datetime NOT NULL COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `destination` varchar(128) DEFAULT NULL COMMENT '通道名称',
  `binlog_file` varchar(64) DEFAULT NULL COMMENT 'binlog文件名',
  `binlog_offest` bigint(20) DEFAULT NULL COMMENT 'binlog偏移量',
  `binlog_master_id` varchar(64) DEFAULT NULL COMMENT 'binlog节点id',
  `binlog_timestamp` bigint(20) DEFAULT NULL COMMENT 'binlog应用的时间戳',
  `data` longtext COMMENT '表结构数据',
  `extra` text COMMENT '额外的扩展信息',
  PRIMARY KEY (`id`),
  UNIQUE KEY `binlog_file_offest` (`destination`,`binlog_master_id`,`binlog_file`,`binlog_offest`),
  KEY `destination` (`destination`),
  KEY `destination_timestamp` (`destination`,`binlog_timestamp`),
  KEY `gmt_modified` (`gmt_modified`)
)  COMMENT='表结构记录表快照表';

# 创建元数据历史表
CREATE TABLE `meta_history` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `gmt_create` datetime NOT NULL COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `destination` varchar(128) DEFAULT NULL COMMENT '通道名称',
  `binlog_file` varchar(64) DEFAULT NULL COMMENT 'binlog文件名',
  `binlog_offest` bigint(20) DEFAULT NULL COMMENT 'binlog偏移量',
  `binlog_master_id` varchar(64) DEFAULT NULL COMMENT 'binlog节点id',
  `binlog_timestamp` bigint(20) DEFAULT NULL COMMENT 'binlog应用的时间戳',
  `use_schema` varchar(1024) DEFAULT NULL COMMENT '执行sql时对应的schema',
  `sql_schema` varchar(1024) DEFAULT NULL COMMENT '对应的schema',
  `sql_table` varchar(1024) DEFAULT NULL COMMENT '对应的table',
  `sql_text` longtext COMMENT '执行的sql',
  `sql_type` varchar(256) DEFAULT NULL COMMENT 'sql类型',
  `extra` text COMMENT '额外的扩展信息',
  PRIMARY KEY (`id`),
  UNIQUE KEY `binlog_file_offest` (`destination`,`binlog_master_id`,`binlog_file`,`binlog_offest`),
  KEY `destination` (`destination`),
  KEY `destination_timestamp` (`destination`,`binlog_timestamp`),
  KEY `gmt_modified` (`gmt_modified`)
)  COMMENT='表结构变化明细表';

# 如果想修改时序数据库H2更换成mysql数据库记录,编辑canal服务配置修改如下
vi /root/canal/canal.deployer/conf/canal.properties
# 插入
i
{
# 开启mysql数据库记录元数据,ebs_material_dev是数据库名称
canal.instance.tsdb.url = jdbc:mysql://192.168.18.230:3306/ebs_material_dev?useUnicode=true&characterEncoding=UTF-8&useSSL=false
canal.instance.tsdb.dbUsername = root
canal.instance.tsdb.dbPassword = Qwer.1234
canal.instance.tsdb.spring.xml = classpath:spring/tsdb/mysql-tsdb.xml
}
# 保存退出
:wq

如果数据库ebs_material_dev的root账号权限不够,增删改查canal_manager数据库会报类似如下错误的:

Error[INSERT command denied to user 'canal'@'192.168.18.230' for table 'canal_node_server']

这时需要赋予权限:

GRANT SELECT, INSERT, UPDATE, DELETE, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'root'@'%';

登录后台管理需要初始化admin登录信息,在数据库ebs_material_dev下执行如下sql:

INSERT INTO `canal_user` VALUES (1, 'admin', '6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9', 'Canal Manager', 'admin', NULL, NULL, '2022-12-14 00:05:28');

账号:admin,密码:123456
登录界面如下:

4.Canal.admin设置Canal.deployer集群配置

管理后面设置canal.deployer集群配置流程如下:
●设置canal集群信息(因为在canal.deployer节点的canal_local.properties配置文件设置了集群名称为DataSyncCluster,所以这里也要对应设置同样集群名称):

●设置canal.deployer节点canal.properties配置:
把之前配置好canal.properties信息拷贝一份过来就好,也可以手动设置。

 ●设置canal.deployer服务节点信息
假设你canal.deployer节点有三台,就配置三个节点信息,如此类推。

 ●设置canal.deployer服务节点实例信息
因为之前我们只设置监听example实例,所以把实例配置拷贝上来即可。

参考文献:
Canal-Admin-QuickStart https://github.com/alibaba/canal/wiki/Canal-Admin-QuickStart
Canal Admin Guide https://github.com/alibaba/canal/wiki/Canal-Admin-Guide
Canal Admin ServerGuide https://github.com/alibaba/canal/wiki/Canal-Admin-ServerGuide

Canal 是阿里巴巴开源的一款 MySQL 数据库 binlog 增量订阅&消费组件,可将 MySQL 数据库的增量数据同步到其它数据存储介质中,如 RabbitMQ。 以下是部署 Canal 同步数据到 RabbitMQ 的步骤: 1. 安装 RabbitMQ 在 Linux 上安装 RabbitMQ,可以参考官方文档:https://www.rabbitmq.com/install-debian.html 2. 安装 Canal 可以从官方 Github 下载 Canal:https://github.com/alibaba/canal 3. 配置 CanalCanal 的 conf 目录中,有两个配置文件需要修改:instance.properties 和 canal.properties。 instance.properties 配置 MySQL 数据库的连接信息,如下所示: ``` canal.instance.master.address=127.0.0.1:3306 canal.instance.master.journal.name=mysql-bin.000001 canal.instance.master.position=4 canal.instance.dbUsername=root canal.instance.dbPassword=123456 canal.instance.connectionCharset=UTF-8 ``` canal.properties 配置 Canal 的基本信息,如下所示: ``` canal.serverMode = tcp canal.tcp.port = 11111 canal.instance.enable.druid=false canal.instance.filter.regex=.*\\..* canal.instance.filter.black.regex=.*\\..*_bak,mysql.* ``` 其中,canal.tcp.port 是 Canal Server 监听的端口号。 4. 配置 RabbitMQ 创建一个名为 canal 的 RabbitMQ Exchange,并创建一个名为 canal 的 RabbitMQ Queue,将 canal Exchange 绑定到 canal Queue 上。 5. 启动 CanalCanal 的 bin 目录中,执行以下命令启动 Canal: ``` sh startup.sh ``` 6. 启动 RabbitMQ Consumer 在 RabbitMQ Consumer 中,监听 canal Queue 中的消息,将消息写入到目标数据存储中。 以上是部署 Canal 同步数据到 RabbitMQ 的基本步骤,具体可根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值