canal+kafka整合springboot简单实现mysql日志同步

一、安装相应组件

kafka安装教程: kafka安装和使用的入门教程_kafka下载安装教程-CSDN博客

canal下载地址:

Releases · alibaba/canal · GitHubReleases · alibaba/canal · GitHub

Releases · alibaba/canal · GitHub

下载指定版本

二、canal配置

canal.properties:

这里展示需要修改的配置:

这个主要切换canal模式,一种是tcp,这里使用kafka

这个是自己的kafka队列的配置(主要是地址和topic主题)

instance.properties:

这里主要是配置数据库连接信息

三、mysql配置以及各个组件启动

1、mysql配置:

打开mysql配置文件,配置如下信息,并重启

log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重

查看是否开启,如下指令,

SHOW VARIABLES LIKE 'log_bin';

上述ON表示已开启

2.启动kafka:

先启动zookeeper:

再启动kafka:

3.启动canal:

四:代码实现

首先配置yaml文件:

spring:
 kafka:
  #kafka配置
  bootstrap-servers: 8.134.64.89:9092
  producer: #生产者
   retries: 3 #设置大于0的值,则客户端会将发送失败的记录重新发送的次数
   # 每次批量发送消息的数量
   batch-size: 16384
   buffer-memory: 33554432
   # 指定消息key和消息体的编解码方式
   key-serializer: org.apache.kafka.common.serialization.StringSerializer
   value-serializer: org.apache.kafka.common.serialization.StringSerializer
   acks: 1
  consumer:
   # 指定默认消费者group id
   group-id: test-consumer-group
   auto-offset-reset: earliest
   enable-auto-commit: false
   auto-commit-interval: 5000
   # 指定消息key和消息体的编解码方式
   key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
   value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
   #自己定义的主题名称,在微服务中使用Value注解注入调用,如果kafka中没有该主题,则会自动创建
   #自己定义的主题名称,在微服务中使用Value注解注入调用,如果kafka中没有该主题,则会自动创建
  listener:
   ack-mode: manual_immediate

创建消费端接收主题信息:

五、开始测试

数据库随便操作一条信息:

日志打印出了bin-log信息,成功

如下有基本的操作信息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值