Springboot集成canal

目录

前言

一、配置mysql

1、my.cnf添加参数

2、重启mysql

3、连接数据库

4、查看binlog是否开启

5、设置用户权限

二、安装canal

1、拉取镜像文件

 2、启动

三、Springboot集成canal

1、引入依赖

2、添加配置

3、在实体类添加注释

4、缓存处理


前言

 官网:GitHub - alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件

一、配置mysql

1、my.cnf添加参数

[mysqld]
log-bin=/var/lib/mysql/mysql-bin
binlog_format=row
binlog-do-db=数据库名称

参数说明

log-bin: 设置binary log存放位置 "/var/lib/mysql" 及文件名称 "mysql-bin"。

binlog_format: 数据存储格式

binlog-do-db: 数据库名称(多个数据库使用逗号 (,) 隔开)

2、重启mysql

docker restart mysql

3、连接数据库

4、查看binlog是否开启

SHOW VARIABLES LIKE 'log_bin';

5、设置用户权限

CREATE USER 'canal'@'%' IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT, SUPER ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;

二、安装canal

1、拉取镜像文件

docker pull canal/canal-server

 2、启动

docker run -d \
--restart=always --name canal -p 11111:11111 \
-e canal.destinations=实例名称 \
-e canal.instance.master.address=127.0.0.1:3306  \
-e canal.instance.dbUsername=canal  \
-e canal.instance.dbPassword=canal  \
-e canal.instance.connectionCharset=UTF-8 \
-e canal.instance.tsdb.enable=true \
-e canal.instance.gtidon=false  \
-e canal.instance.filter.regex=数据库名称\\.表名  \
canal/canal-server

参数说明

canal.instance.filter.regex: 要监听的表,正则表达式,多个规则使用逗号 (,) 隔开,转义符使用双斜杠(\\)

常用举例:

1.  所有表:    .*    或    .*\\..*

2.  canal数据库里所有表:    canal\\..*

3.  canal数据库里以canal开头的表:    canal\\.canal.*

4.  多个规则使用逗号隔开:    canal\\..*,mysql\\..*

三、Springboot集成canal

1、引入依赖

<dependency>
    <groupId>top.javatool</groupId>
    <artifactId>canal-spring-boot-starter</artifactId>
    <version>1.2.1-RELEASE</version>
</dependency>

2、添加配置

canal:
  destination: 实例名称
  server: canal部署的ip:11111

3、在实体类添加注释

import org.springframework.data.annotation.Id;

public class GoodsStock {

    @Id
    private Long id;

    /**
     * 实体类与数据库中字段名不一致时,填写数据库中字段名
     */
    @Column(name = "stock_quantity")
    private Integer stock;

    /**
     * 数据库表中不存在的字段
     */
    @Transient
    private Integer sold;

}

4、缓存处理

// 数据库表名
@CanalTable("goods_stock")
@Component
public class GoodsStockCanalHandler implements EntryHandler<GoodsStock> {

    @Override
    public void insert(GoodsStock goodsStock) {
        // 插入
    }

    @Override
    public void update(GoodsStock before, GoodsStock after) {
        // 修改
    }

    @Override
    public void delete(GoodsStock goodsStock) {
        // 删除
    }
}

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Spring Boot是一个基于Java的开发框架,而Canal是一种用于增量数据订阅和消费的开源工具。在Spring Boot中整合Canal可以方便地将数据库中的变更数据同步到其他系统中。 首先,我们需要在Spring Boot项目的pom.xml文件中添加Canal的依赖。然后,在application.properties配置文件中配置Canal的相关参数,包括Canal的服务地址、用户名、密码等。 接下来,在代码中可以通过编写监听器来实现对变更数据的订阅和消费。可以使用Canal提供的Java API来连接Canal服务,并注册事件监听器,监听数据库的变更事件。当有数据变更时,Canal会将相关的事件通知到监听器中。 在监听器中,可以获取到变更操作的数据库名、表名以及具体的变更数据。通过对这些数据的处理,可以实现将变更数据同步到其他系统中的逻辑。 例如,可以在监听器中使用Spring Boot的JdbcTemplate来向其他系统发送变更数据,或者将变更数据存储到缓存中,以供其他部分使用。 整合Canal的好处是可以实现数据的实时同步,将数据库中的变更数据推送到其他系统中,从而实现数据的实时更新和共享。同时,Canal提供了丰富的API和事件监听机制,可以满足不同场景下的需求,提供灵活的数据同步方案。 总之,通过Spring Boot整合Canal可以方便地将数据库的变更数据同步到其他系统中,实现数据的实时更新和共享。这为开发实时应用和数据集成提供了便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值