Canal+kafka+zk实现mysql增量数据同步

一、Zk

下载zk
链接:https://pan.baidu.com/s/1fmOSl08mKs-nVJwDgLUrCg 
提取码:6666 

1、解压新建data
在这里插入图片描述
2、进入conf文件夹 配置文件名称改为zoo.cfg,再修改配置dataDir
在这里插入图片描述

3、配置环境变量:ZOOKEEPER_HOME:你的zookeeper安装路径;

启动 zkServer.cmd

在这里插入图片描述

二、Kafka

链接:https://pan.baidu.com/s/16v2EA0oFIuEEXETvQgDsnQ 
提取码:6666 

1、解压,新建logs
在这里插入图片描述

2、修改kafka\config\ server.properties中的log.dirs路径为你的logs路径
在这里插入图片描述

必须cmd进入D:\kafka目录下运行kafka-server-start.bat
运行命令:.\bin\windows\kafka-server-start.bat .\config\server.properties

问题:Kafka启动提示“此时不应有 \Java\jdk1.8.0_73\lib\dt.jar”
Jdk路径不应该有空格/括号

三、Canal配置kafka生产者

链接:https://pan.baidu.com/s/1O7m95qhlcl9FUVT0_w0PaQ
提取码:6666 

1、修改文件canal_1.1.4\conf\example\instance.properties
在这里插入图片描述

2、修改文件canal_1.1.4\conf\canal.properties,指定为kafka
在这里插入图片描述

3、指定kafka的地址
在这里插入图片描述

4、默认group.Id为test-consumer-group,在监听topic时要用到

问题:kafka启动报错java.io.IOException: Map failed,内存溢出
修改D:\kafka\bin\windows下启动文件kafka-server-start.bat,改256/512M

在这里插入图片描述

问题:ERROR Error while deleting the clean shutdown file in dir ………
删除kafka-logs下的所有日志

四、Springboot整合kafka

1、Pom文件引入:

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.0.0</version>
</dependency>

2、Yml文件配置

spring:
  kafka:
    bootstrap-servers: 127.0.0.1:9092 #服务器的ip及端口,可以写多个,服务器之间用“:”间隔

3、监听代码:

@KafkaListener(topics = "pp_kafka",groupId = "test-consumer-group")
public void listen (ConsumerRecord<?, ?> record) throws Exception {
    String json = (String) record.value();
    JSONObject jsonObject = JSONObject.parseObject(json);
    String sqlType = jsonObject.getString("type");
    JSONArray data = jsonObject.getJSONArray("data");
    for (int i=0;i<data.size();i++){
        JSONObject userJson = data.getJSONObject(i);
        String id = userJson.getString("Id");
        if("UPDATE".equals(sqlType) || "INSERT".equals(sqlType)){
            redisUtils.set(id,userJson.toJSONString());
            return;
        }
        else if("DELETE".equals(sqlType)){
            if(redisUtils.get(id)!=null)
                redisUtils.del(id);
            return;
        }
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值