还在用定时任务同步数据吗?试试这款同步利器!!

2022-12-06 16:21:35 浏览数 (1)

大家好,我是开源大叔!今天给大家介绍一款强大的数据同步开源项目:Canal。 最近大叔在对项目进行重构的过程中,需要做一些数据同步的工作。大叔首先想到的同步方案是定时任务,但是定时任务的弊端在于时效性不够高,对于时效性要求稍高的场景定时任务就明显不合适了。 大叔网上查找相关资料,找到了 Canal,该项目正好可以满足我这边的场景。接下来跟着大叔一块来看看 Canal 的强大功能吧!!

Canal概述

Canal 译意为水道/管道/沟渠,主要用途是基于 Mysql 数据库增量日志解析,提供增量数据订阅和消费。当前的 Canal 支持源端 Mysql 版本包括5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。

项目安装

需要开启 Mysql 的 binlog 写入功能,配置 binlog-format 为 Row 模式

下载 Canal

代码语言:javascript复制
 wget https://github.com/alibaba/canal/releases/download/canal-1.0.17/canal.deployer-1.0.17.tar.gz

安装 & 配置

代码语言:javascript复制
#解压下载的文件
mkdir /tmp/canal
tar zxvf canal.deployer-$version.tar.gz  -C /tmp/canal
代码语言:javascript复制
#配置
vi conf/example/instance.properties
## mysql serverId
canal.instance.mysql.slaveId = 1234
#position info,需要改成自己的数据库信息
canal.instance.master.address = 127.0.0.1:3306 
#username/password,需要改成自己的数据库信息
canal.instance.dbUsername = canal  
canal.instance.dbPassword = canal
canal.instance.connectionCharset = UTF-8
#table regex
canal.instance.filter.regex = .*\\..*

启动

代码语言:javascript复制
sh bin/startup.sh
#查看启动日志
vi logs/canal/canal.log</pre>

关闭

代码语言:javascript复制
sh bin/stop.sh

项目安装部署之后通过命令行管理集群和实例不是特别方便。Canal 已经考虑到这个问题,所以提供了管理页面,也就是下面介绍的 Admin。

安装部署 Canal Admin

Canal Admin 设计上是为 Canal 提供整体配置管理、节点运维等面向运维的功能,提供相对友好的 WebUI 操作界面,方便更多用户快速和安全的操作。

下载安装

代码语言:javascript复制
wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz

解压配置 & 初始化 sql

代码语言:javascript复制
mkdir /tmp/canal-admin
tar zxvf canal.admin-$version.tar.gz  -C /tmp/canal-admin
#修改配置
vi conf/application.yml 
#sql文件默认会在conf目录下

启动 & 关闭

代码语言:javascript复制
#启动
sh bin/startup.sh
#关闭
sh bin/stop.sh

启动之后访问 http://127.0.0.1:8089/,默认账号密码: admin/123456

简单操作

集群管理里面配置相应的集群信息,以及 zookeeper 地址。

CanalServer 管理主要管理 CanalServer 端的配置。

Instance 管理就是管理使用 Canal 的客户端,例如:要同步的商品库、会员库, 可以分别配置实例。

通过大叔上面的介绍是不是对 Canal 这款利器有所了解了呢,如果小伙伴们工作中遇到相关的场景可以考虑使用 Canal 来实现。

总结

上面大叔大概介绍了 Canal 的简单使用,安装配置好之后基本上所有的操作都是可以在控制台进行操作的,使用起来非常方便。

0 人点赞