MySQL - Canal数据同步

Canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL。
原理和应用场景参考:Canal——原理架构及应用场景

Canal环境搭建

Canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能

1、检查binlog功能是否有开启
show variables like 'log_bin';

在这里插入图片描述
如果value为OFF则表示未开启。

2、开启binlog功能

1、修改 mysql 的配置文件 my.cnf

vi /etc/my.cnf

追加以下内容

# binlog文件名
log-bin=mysql-bin
# 选择row模式
binlog_format=ROW
# mysql实例id,不能和canal的slaveId重复
server_id=1

在这里插入图片描述
2、重启MySQL服务

systemctl restart mysqld.service

3、查看是否开启成功
在这里插入图片描述

3、下载安装Canal服务

下载地址:Canal的GitHub地址
1.1.4版本更稳定
1、我这里将它放在/usr/local/canal目录下,将其解压

cd /usr/local/canal
tar zxvf canal.deployer-1.1.4.tar.gz

2、修改instance.properties配置文件

cd /usr/local/canal/conf/example
vi instance.properties

修改本机数据库的address
在这里插入图片描述
修改数据库信息,建议创建一个新用户并授权,或是给root用户授权。
在这里插入图片描述
修改表的匹配规则,这表示guli_edu数据库中的member表
在这里插入图片描述

表的匹配规则
mysql 数据解析关注的表,Perl正则表达式.
多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\) 
常见例子:
1.所有表:.*   or  .*\\..*
2.canal schema下所有表: canal\\..*
3.canal下的以canal打头的表:canal\\.canal.*
4.canal schema下的一张表:canal.test1
5.多个规则组合使用:canal\\..*,mysql.test1,mysql.test2 (逗号分隔)
注意:此过滤条件只针对row模式的数据有效(ps. mixed/statement因为不解析sql,所以无法准确提取tableName进行过滤)
4、启动Canal
cd /usr/local/canal/bin
./startup.sh

在这里插入图片描述

SpringBoot代码

1、引入相关依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--mysql-->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
	<groupId>commons-dbutils</groupId>
	<artifactId>commons-dbutils</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 主要是这个依赖 -->
<dependency>
	<groupId>com.alibaba.otter</groupId>
	<artifactId>canal.client</artifactId>
</dependency>
2、书写配置文件
# 服务端口
server.port=10000
# 服务名
spring.application.name=canal-client

# 环境设置:dev、t
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值