MySQL增量数据同步利器Canal1.1.7环境搭建流程
MySQL增量数据同步利器Canal1.1.7环境搭建流程

贝恩聊架构-SpringBoot3专栏内容定位主要为SpringBoot3整合各大框架和中间件,通过输出入门技术文章和基于源代码的技术案例,让读者基于本系列技术文章和源代码快速掌握SpringBoot3和各大开源框架、中间件的整合应用。给技术开发者节约环境搭建和框架整合所耗费的时间,开发人员都知道在框架整合的过程中会遇到各种技术问题和环境问题,所以参考已有搭建好的框架及功能能大大提高学习和工作效率。
今天我们开启基于MySQL binlog增量数据同步中间件Canal的学习之上篇环境搭建,今天的环境搭建包含三部分,第一基于源码编译打包Canal管理后台、客户端、服务端。第二配置MySQL环境,第三配置Canal服务端和instance环境
SpringBoot3专栏软件环境
- JDK17.0.12
- canal-server1.1.7
- canal-client1.1.7
- canal-admin1.1.7
- MySQL5.7
- IDEA2024.2.0.2
我们先看Canal1.1.7源码对应的项目结构,请看下图

1 基于源码编译打包
# 源码下载地址
https://github.com/alibaba/canal
# 执行以下命令,打包编译
mvn clean install -Dmaven.test.skip=true

2 搭建canal-admin
2.1 安装Ebean enhancer插件
安装和编译时启用,如下图


2.2 创建数据库
创建canal_manager数据库和执行对应脚本,脚本在\canal-canal-1.1.7\admin\admin-web\src\main\resources目录下


2.3 修改配置文件
按照下图修改数据库配置信息

2.4 启动canal管理后台
基于源码启动管理后台

访问以下地址 http://127.0.0.1:8089/
默认用户名及密码 admin/123456

3 搭建canal-server
3.1 canal-server端配置
使用canal_local.properties的配置覆盖canal.properties
# register ip
canal.register.ip =
# canal admin config
canal.admin.manager = 127.0.0.1:8089
canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# admin auto register
canal.admin.register.auto = true
canal.admin.register.cluster =
canal.admin.register.name =
3.2 启动canal-server
基于源码启动canal-server,启动成功后,在管理后台查看对应server


3.3 修改MySQL配置信息
对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下
[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
3.4 修改instance.properties
## mysql serverId
canal.instance.mysql.slaveId = 1234
#position info,需要改成自己的数据库信息
canal.instance.master.address = 192.168.0.104:3306
canal.instance.master.journal.name =
canal.instance.master.position =
canal.instance.master.timestamp =
#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
#username/password,需要改成自己的数据库信息
canal.instance.dbUsername = canal
canal.instance.dbPassword = canal
canal.instance.defaultDatabaseName =
canal.instance.connectionCharset = UTF-8
#table regex
canal.instance.filter.regex = .\*\\\\..\*

3.5 启动instance

欢迎大家关注我的项目实战内容itbeien.cn,一起学习一起进步,在项目和业务中理解各种技术。

欢迎沟通交流技术和支付业务,一起探讨聚合支付/预付卡系统业务、技术、系统架构、微服务、容器化。并结合聚合支付系统深入技术框架/微服务原理及分布式事务原理。加入我的知识星球吧

SpringBoot3专栏
01SpringBoot3专栏-SpringBoot3.4.0整合Mybatis-plus和Mybatis
02SpringBoot3.4.0结合Mybatis-plus实现动态数据源
03mapstruct对象映射在Springboot3中这样用就对了
04RocketMQ5.3.1集成SpringBoot3.4.0就这样简单
05SpringBoot3.4.0整合Redisson实现分布式锁
跟着我学微服务系列
01跟着我学微服务,什么是微服务?微服务有哪些主流解决方案?
05SpringCloudAlibaba之图文搞懂微服务核心组件在企业级支付系统中的应用
06JDK17+SpringBoot3.4.0+Netty4.1.115搭建企业级支付系统POS网关
07JDK17+SpringCloud2023.0.3搭建企业级支付系统-预付卡支付交易微服务
08JDK17+Dubbo3.3.2搭建企业级支付系统-预付卡支付交易微服务
09JDK17+SpringBoot3.3.6+Netty4.1.115实现企业级支付系统POS网关签到功能
贝恩聊架构-项目实战地址
4 源码地址
贝恩聊架构-SpringBoot3专栏系列文章、资料和源代码会同步到以下地址,代码和资料每周都会同步更新
该仓库地址主要用于贝恩聊架构-SpringBoot3专栏、基于企业级支付系统,学习微服务整体技术栈
