mongodb使用debezium

本文介绍了如何在服务器上安装JDK11,下载并部署DebeziumKafka连接器,以及在MongoDB中配置CDC(ChangeDataCapture)以实现实时数据同步。重点讲解了不同`capture.mode`对数据输出的影响和如何启用changeStreamPreAndPostImages功能以获取删除操作的before信息。
摘要由CSDN通过智能技术生成

前置

服务器上需要安装jdk11
jdk下载地址

kafka安装

官网下载地址

安装教程

debezium 安装

运行 Debezium 连接器需要 Java 11 或更高版本
Debezium 并不是一个独立的软件,而是很多个 Kafka 连接器的总称。这些 Kafka 连接器分别对应不同的数据库,比如 MySQL、Oracle 等。按 Kafka 连接器的常见命名规则,可能我们会把它们叫做 MySQL Kafka Source Connector 之类。

部署

1.下载对应版本的debezium插件

插件地址
在这里插入图片描述
在这里插入图片描述

2.文件解压

将下载的文件解压,将解压后的文件放到kafka的plugin文件夹下(该plugin文件夹为自己创建的plugin文件夹)*,例如
在这里插入图片描述

3. 通过 kafka connect部署

kafka connect有两种部署方式,一是单机部署,二是分布式部署。单机部署配置kafka/config/connect-standalone.properties 文件,分布式部署则配置kafka/config/connect-distributed.properties。分布式部署支持通过rest api管理connector

此处是单机部署,配置文件为kafka/config/connect-standalone.properties,主要修改以下内容:

# plugin.path=/usr/local/share/java,/usr/local/share/kafka/plugins,/opt/connectors,
plugin.path=/usr/local/kafka/plugin

4.启动kafka-connect

需要先启动kafka

bin/connect-standalone.sh config/connect-standalone.properties

5.创建对应的debezium配置文件

在这里插入图片描述

curl -X POST http://${debezium所在服务器}:8083/connectors

{
	"name": "cdc-connector",
	"config": {
		"connector.class": "io.debezium.connector.mongodb.MongoDbConnector",
		"mongodb.connection.string": "mongodb://root:123456@192.168.2.18:27017,192.168.2.19:27017/?authSource=admin",
		"collection.include.list": "db_cdc_1.c_cdc_2",
		"topic.prefix": "mycdc",
		"capture.mode":"change_streams"
	}
}
  • 192.168.2.18:27017,192.168.2.19:27017为路由服务
  • 如果需要在cdc输出的语句上显示before信息,需要开启mongodb版本 6.0 中的新增功能changeStreamPreAndPostImages,并且在capture.mode上使用change_streams_with_pre_image或change_streams_update_full_with_pre_image
  • 如果capture.mode未设置成change_streams_with_pre_imagechange_streams_update_full_with_pre_image的话,在进行删除时cdc输出会没有before信息
    在这里插入图片描述
db.runCommand({
  collMod: "对应的controllerName", 
  changeStreamPreAndPostImages: {
    enabled: true
  } 
})
例如:
use db_cdc_1
db.runCommand({
  collMod: "c_cdc_2", 
  changeStreamPreAndPostImages: {
    enabled: true
  } 
})

{
	"name": "cdc-connector",
	"config": {
		"connector.class": "io.debezium.connector.mongodb.MongoDbConnector",
		"mongodb.connection.string": "mongodb://root:123456@192.168.2.18:27017,192.168.2.19:27017/?authSource=admin",
		"collection.include.list": "db_cdc_1.c_cdc_2",
		"topic.prefix": "mycdc",
		"capture.mode":"change_streams_with_pre_image"
	}
}

在这里插入图片描述

重点参数

参数 描述
connector.class 固定值io.debezium.connector.mongodb.MongoDbConnector
mongodb.connection.string mongodb连接信息
collection.include.list 需要监听的具体collection
topic.prefix kafkaTopic前缀
capture.mode 输出模式(默认:change_streams_update_full)

capture.mode

模式 描述
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值