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 工具。希望这份实战指南对你有所帮助,欢迎在实际应用中根据需要进行适度调整。