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
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值