【canal+mysql+example+数据验证测试】
前言
Canal 是阿里巴巴开源的一个基于 MySQL 数据库增量日志(binlog)解析的组件,常用于数据同步、缓存更新、大数据实时处理等场景。
canal.adapter #全组件安装包
canal.admin #管理端安装包
canal.deployer #server安装包
canal.example #客户端示例程序
现测试环境:服务器1台
docker起了两个mysql
数据库版本:8.0.26
mysql8 : 3306 -->🔺 binlog --> canal server --> <kafka/rabbitmq>? --> mysql9: 3307
一、数据库设置
注:必须保证数据库的表结构一致
1、mysql8开启binlog日志,mysql9不需要
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
2、创建canal链接用户、授权
CREATE USER 'canal'@'%' IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
二、canal下载、配置
1、下载解压
root@confluence:/u01/canal/canal-deployer# vim conf/example/instance.properties # MySQL 地址
canal.instance.master.address=127.0.0.1:3306
# 用户名密码
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
# 数据库过滤(可选)
canal.instance.defaultDatabaseName=test
kafka(备选)
## conf/canal.propertiescanal.serverMode = kafka
kafka.bootstrap.servers = kafka-server:9092
kafka.topic = canal
2、启服务
./bin/startup.sh
三、构建jar包、使用canal同步数据
1、下载源码包、解压
https://github.com/alibaba/canal/archive/refs/tags/canal-1.1.8.tar.gz
2、切换目录、构建pom.xml
root@confluence:/u01/canal/canal-client/canal-canal-1.1.8/example#
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 使用 Canal 官方稳定版本 --><parent><groupId>com.alibaba.otter</groupId><artifactId>canal</artifactId><version>1.1.8</version><relativePath>../pom.xml</relativePath></parent><groupId>com.example</groupId><artifactId>canal-client-demo</artifactId><packaging>jar</packaging><name>Canal Client Demo for MySQL Sync</name><!-- 项目依赖 --><dependencies><!-- Canal Client --><dependency><groupId>com.alibaba.otter</groupId><artifactId>canal.client</artifactId><version>${project.version}</version></dependency><!-- Canal Protocol --><dependency><groupId>com.alibaba.otter</groupId><artifactId>canal.protocol</artifactId><version>${project.version}</version></dependency><!-- MySQL JDBC Driver --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version></dependency><!-- 测试依赖 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency></dependencies><!-- 构建配置 --><build><plugins><!-- 编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><!-- 构建可执行 JAR 并打包所有依赖 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>