简介
debezium在debezium关于cdc的使用(上)中有做介绍。具体可以跳到上文查看。本篇主要讲述使用kafka connector
方式来同步数据。而kafka connector实际上也有提供其他的sink(Kafka Connect JDBC)来同步数据,但是没有delete事件。所以在这里选择了Debezium MySQL CDC Connector方式来同步。本文需要使用Avro方式序列化kafka数据。
流程
第一步准备
使用kafka消息中间介的话需要对应的服务支持,尤其需要chema-registry
来管理schema,因电脑内存有限就没使用docker方式启动,如果条件ok内存够大的话阔以使用docker方式。所以使用的就是local本地方式。具体下载,安装,部署,配置环境变量我就不在重复描述了,阔以参考官方文档。
第二步启动kafka配套
进入目录后启动bin/confluent start
第三步创建kafka topic
可以通过kafka命令创建topic也可以通过Confluent Control Center
地址:http://localhost:9021
来创建topic。我们还是按照上文的表来同步数据,所以创建topic:dbserver1.inventory.demo
。
第四步创建kafka connect
可以通过kafka rest命令创建也可以使用Confluent Control Center
创建。
connect的api命令参考
方便点可以使用crul创建,以下为配置文件
1 | { |
创建好后可以使用命令查询到或者在管理中心查看。
命令:http://localhost:8083/connectors/inventory-connector
第五步启动同步程序
配置
1 | spring: |
kafka消费者
跟上文的处理流程是一样的。只不过DDL和DML分成2个监听器。
1 | package com.example.kakfa.avro; |
数据流程
剩下的就是在inventory库中demo表中增删改数据,在对应的inventory_back库中demo表数据对应的改变。