最近在对项目进行重构的过程中,需要做一些数据同步的工作。首先想到的同步方案是定时任务,但是定时任务的弊端在于时效性不够高,对于时效性要求稍高的场景定时任务就明显不合适了。
网上查找相关资料,找到了 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
wget https://github.com/alibaba/canal/releases/download/canal-1.0.17/canal.deployer-1.0.17.tar.gz
-
安装 & 配置
#解压下载的文件 mkdir /tmp/canal tar zxvf canal.deployer-$version.tar.gz -C /tmp/canal
#配置 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 = .\*\\\\..\*
-
启动
sh bin/startup.sh #查看启动日志 vi logs/canal/canal.log</pre>
-
关闭
sh bin/stop.sh
项目安装部署之后通过命令行管理集群和实例不是特别方便。Canal 已经考虑到这个问题,所以提供了管理页面,也就是下面介绍的 Admin。
安装部署 Canal Admin
Canal Admin 设计上是为 Canal 提供整体配置管理、节点运维等面向运维的功能,提供相对友好的 WebUI 操作界面,方便更多用户快速和安全的操作。
-
下载安装
wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz
-
解压配置 & 初始化 sql
mkdir /tmp/canal-admin tar zxvf canal.admin-$version.tar.gz -C /tmp/canal-admin #修改配置 vi conf/application.yml #sql文件默认会在conf目录下
-
启动 & 关闭
#启动 sh bin/startup.sh #关闭 sh bin/stop.sh
启动之后访问 http://127.0.0.1:8089/,默认账号密码: admin/123456。
简单操作
集群管理里面配置相应的集群信息,以及 zookeeper 地址。
CanalServer 管理主要管理 CanalServer 端的配置。
Instance 管理就是管理使用 Canal 的客户端,例如:要同步的商品库、会员库, 可以分别配置实例。
如果小伙伴们工作中遇到相关的场景可以考虑使用 Canal 来实现。
总结
上面大概介绍了 Canal 的简单使用,安装配置好之后基本上所有的操作都是可以在控制台进行操作的,使用起来非常方便。