1. 简介
Canal 是一款基于 MySQL 数据库的增量数据同步工具,提供了增量数据的订阅和消费功能。本实战指南将详细介绍如何搭建和使用 Canal,以实现 MySQL 数据库的实时数据同步。
2. 准备工作
2.1 开启 MySQL Binlog
在自建 MySQL 中,需要开启 Binlog 写入功能。编辑 MySQL 配置文件(通常是 my.cnf):
[mysqld]
log-bin=mysql-bin
binlog-format=ROW
server_id=1
注意:针对阿里云 RDS for MySQL , 默认打开了 binlog , 并且账号默认具有 binlog dump 权限 , 不需要任何权限或者 binlog 设置,可以直接跳过这一步
2.2 授权 Canal 链接 MySQL 权限
创建并授权 Canal 链接 MySQL 的用户:
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
2.3 安装 JDK 11
安装 JDK 11 并设置相关环境变量。
3. 部署 Canal Server
3.1 下载 Canal Server
wget https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.deployer-1.1.6.tar.gz
3.2 解压 Canal Server
mkdir /tmp/canal
tar zxvf canal.deployer-1.1.6.tar.gz -C /tmp/canal
3.3 配置 Canal Server
编辑 Canal Server 配置文件:
vi /tmp/canal/conf/example/instance.properties
配置文件示例:
canal.instance.mysql.slaveId = 3251192812
canal.instance.master.address = rm-wz9687w4v59viacb3ho.mysql.rds.aliyuncs.com:3306
canal.instance.dbUsername = root
canal.instance.dbPassword = 123456
canal.instance.filter.regex = .*\..*
canal.instance.connectionCharset = UTF-8
3.4 启动 Canal Server
sh /tmp/canal/bin/startup.sh
3.5 查看日志
cat /tmp/canal/logs/canal/canal.log
4. 部署 Canal Adapter
4.1 下载 Canal Adapter
wget https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.adapter-1.1.6.tar.gz
4.2 解压 Canal Adapter
mkdir canal.adapter-1.1.6
tar zxvf canal.adapter-1.1.6.tar.gz -C canal.adapter-1.1.6
4.3 配置 Canal Adapter
编辑 Canal Adapter 配置文件:
vi canal.adapter-1.1.6/conf/application.yml
配置文件示例:
srcDataSources:
defaultDS:
url: jdbc:mysql://rm-wz9687w4v59viacb3ho.mysql.rds.aliyuncs.com.mysql.rds.aliyuncs.com:3306/canal-test?useUnicode=true
username: root
password: 123456
canalAdapters:
- instance: example
groups:
- groupId: g1
outerAdapters:
- name: logger
- name: rdb
key: mysql1
properties:
jdbc.driverClassName: com.mysql.jdbc.Driver
jdbc.url: jdbc:mysql://test-cluster-v1.cluster-cviu5giyqplm.us-east-1.rds.amazonaws.com:3306/canal-test?useUnicode=true&useSSL=false
jdbc.username: root
jdbc.password: 2345678
druid.stat.enable: false
druid.stat.slowSqlMillis: 1000
4.4 清空 Bootstrap 配置
echo "" > canal.adapter-1.1.6/conf/bootstrap.yml
4.5 启动 Canal Adapter
sh canal.adapter-1.1.6/bin/startup.sh
5. 数据同步
通过以下命令触发全量同步:
curl http://127.0.0.1:8081/etl/rdb/mysql1/user.yml -X POST
至此,你已成功搭建 Canal Server 和 Canal Adapter,实现了 MySQL 数据库的增量数据同步。本指南提供了详细的配置步骤和示例,帮助你更好地理解和应用 Canal 工具。希望这份实战指南对你有所帮助,欢迎在实际应用中根据需要进行适度调整。