springboot集成canal

本文介绍了Canal这一工具,它能自动同步MySQL的增量数据到其他存储应用,例如Redis,以提升系统性能。通过伪装成MySQL从节点获取bin-log,Canal可以监听数据库变化并在数据插入、更新或删除时触发相应处理。配置包括添加依赖、设置服务地址、创建Handler以及定义数据接收类。这种方法减少了手动同步的需要,提高了数据访问效率。
摘要由CSDN通过智能技术生成

canal,根据官方的解释,也就是用于同步数据库的增量数据到其他的存储应用

作用:

不需要在修改数据库的数据后自己手动进行redis中的数据进行同步操作

可以通过将数据库的数据同步到其他的存储应用,达到提高性能的作用

如:将本需要访问mysql的数据,同步修改到redis中,让更多的访问直接访问到redis,减少访问mysql数据库,从而达到提高性能的作用。

原理:

MySQL有主从机制(读写分离,需要开启bin-log模式,主节点会把写操作记录到一个文件,后续会把数据库同步到从节点),canal则伪装成从节点,从主节点获取到一份写操作记录,然后再进行同步到其他地方(redis,es,mongoDB等)

需要去官网下载canal并安装

1、canal的start依赖

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

2、配置

canal:
  server: Canal服务部署的地址:11111
  destination: example
logging:
  level:
    root: info
    top:
      javatool:
        canal:
          client:
            client:
              AbstractCanalClient: error

3、添加Handler

@Slf4j
@Component
@CanalTable(value = "表名")
public class OrderaInfoHandler implements EntryHandler<T> {//T为自定义接收封装的类型
    @Override
    public void insert(T t) {
        log.info("当有数据插入的时候会触发这个方法);
    }

    @Override
    public void update(T before, T after) {
        log.info("当有数据更新的时候会触发这个方法);
    }

    @Override
    public void delete(T t) {
        log.info("当有数据删除的时候会触发这个方法);
    }
}

4、对应的接收数据的类,需要用@Table(name="表名")指定表名,以及@Column(name="列名")指定属性对应的列名。

注意:接收的类型不能是基本数据类型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值