大家好,我是开源大叔!今天给大家介绍一款强大的数据同步开源项目: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 的简单使用,安装配置好之后基本上所有的操作都是可以在控制台进行操作的,使用起来非常方便。