Debezium部署

Debezium2.7 数据同步 MySQL/Oracle -- AI生成 Debezium是Red Hat开源的一个工具,用于实时捕获多种数据源(包括MySQL、PostgreSQL、SQL Server、Oracle等)的变更数据,并将这些数据作为事件流输出到Kafka等消息中间件中。通过Debezium,可以实现数据的实时同步和变更数据捕获(CDC)。 阅读详情

一、Debezium介绍

Debezium是用于捕获变更数据的开源工具。可以响应数据库的所有插入,更新和删除操作.

它是一种CDC(Change Data Capture)工具,工作原理与大家所熟知的Canal, Maxwell一样,均是通过抽取数据库日志来获取变更的。

Debezium构建在Apache Kafka之上,并提供Kafka连接器来监视特定的数据库管理系统。

更多介绍参考官网: https://debezium.io/

二、Debezium特点

  1. 简单. 使用简单, 容易上手
  2. 快速稳定. 构建于Kafka之上, 可扩展,经官方验证可处理大容量的数据。
  3. 能监控多种数据库. 目前支持的数据库包括Mysql, Oracle, MongoDB, PostgreSQL, SQL Server, Db2, Cassandra, Vitess.

三、Debezium架构

3.1 基于Kafka Connector 部署Debezium

在这里插入图片描述
Kafka连接器包含两种:

  1. source connector: 负责把数据库中的记录发送到Kafka(Debezium)

  2. sink connector: 负责把kafka topic中的数据发送到其他系统,如es等(flume等)

3.2 使用Debezium Server部署Debezium

Debezium 服务器是一个可配置的、随时可用的应用程序,它将变化数据从源数据库流式传输到其他系统.(目前只支持sink到kinesis)
在这里插入图片描述

3.3 嵌入式引擎

另外一种使用方式:Debezium作为嵌入式引擎, 内置到其他应用中, 然后就可以实时读取数据库的变化数据了.目前比较火的 Flink的CDC, 就是内置了Debezium.

四、Kafka 4.0 + Debezium 3.2 实时 CDC 集成

4.1 环境说明

  • Kafka 版本:4.0.0(自带 connect-distributed.sh )
  • Debezium 版本:3.2.0(MySQL connector)
  • MySQL:xx.xx.xx.xxx 端口 3306(5.7.44版本)
  • 目标:把 mydb 的所有表实时同步到 Kafka topic,前缀为 dbserver1

4.2 前期准备

给 debezium 用户授权允许 xx.xx.xx.% 网段 在 MySQL 主机(xx.xx.xx.xx1)以 root 执行:

-- 登录MySQL

mysql -uroot -p

-- binlog 格式

SET GLOBAL binlog_format = ROW;

-- 如果用户还不存在,先创建

CREATE USER 'debezium'@'xx.xx.xx.%' IDENTIFIED BY 'xxxxxx';

-- 授权

GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'debezium'@'xx.xx.xx.%';

--刷新
FLUSH PRIVILEGES;

确认连通:

mysql -hxx.xx.xx.xx -udebezium -p'xxxxxxx' -e "SELECT 1;"

4.3两种部署方式

4.3.1 第一种方法:

4.3.1.1部署 Debezium 插件(xx.xx.xx1)
cd ~/kafka_2.13-4.0.0

#将在官网下载的jar包上传至kafka的目录下

tar -xf debezium-connector-mysql-3.2.0.Final-plugin.tar.gz -C ~/kafka_2.13-4.0.0/connect-plugins/debezium

备份connect-distributed.properties

cp config/connect-distributed.properties config/debezium-distributed.properties

启动 Kafka Connect

bin/connect-distributed.sh -daemon config/debezium-distributed.properties
4.3.1.2 创建 Debezium Source Connector

创建mysql-source.json:

cat > mysql-source.json <<'EOF'

{

  "name": "mysql-source",

  "config": {

​    "connector.class": "io.debezium.connector.mysql.MySqlConnector",

​    "tasks.max": "1",

​    "database.hostname": "xx.xx.xx.xx",

​    "database.port": "3306",

​    "database.user": "debezium",

​    "database.password": "xxxxxxx",

​    "database.server.id": "184054",

​    "topic.prefix": "dbserver1",

​    "database.include.list": "mydb",

​    "schema.history.internal.kafka.bootstrap.servers": "xx.xx.xx.xx1:9092,xx.xx.xx.xx2:9092,xx.xx.xx3:9092",

​    "schema.history.internal.kafka.topic": "dbhistory-mydb"

  }

}

EOF

手动创建 schema-history topic(避免 compacted 坑):

bin/kafka-topics.sh --bootstrap-server xx.xx.xx.xx1:9092 \

  --create --topic dbhistory-mydb \

  --partitions 1 --replication-factor 2

注册并启动

curl -X POST -H "Content-Type: application/json" \

​     http://localhost:8083/connectors \

​     -d @mysql-source.json

验证运行

查看状态

curl http://localhost:8083/connectors/mysql-source/status

期望:connector & task 均为 RUNNING

查看生成的 topic

bin/kafka-topics.sh --bootstrap-server xx.xx.xx.xx1:9092 --list | grep dbserver1

# 示例:

# dbserver1

# dbhistory-mydb

# dbserver1.mydb.orders

在这里插入图片描述

4.3.1.3 在 MySQL 里创建 mydb
-- 在 xx.xx.xx 上登录 root 或具备建库权限的账号

mysql -uroot -p
CREATE DATABASE mydb;

USE mydb;

CREATE TABLE test_orders (

  id INT AUTO_INCREMENT PRIMARY KEY,

  amount DECIMAL(10,2),

  create_time DATETIME DEFAULT CURRENT_TIMESTAMP

);

INSERT INTO test_orders (amount) VALUES (99.9);

--确认表存在

mysql -hxx.xx.xx.xx -udebezium -p'xxxxxx' -e "USE mydb; SHOW TABLES;"

在这里插入图片描述
查看生成的 topic

bin/kafka-topics.sh --bootstrap-server xx.xx.xx.xx1:9092 --list | grep dbserver1

实时消费验证

bin/kafka-console-consumer.sh \

  --bootstrap-server xx.xx.xx.xx1:9092 \

  --topic dbserver1.mydb.test_orders \

  --from-beginning --max-messages 1

在这里插入图片描述

4.3.2第二种方法(推荐):

4.3.2.1部署 Debezium 插件(xx.xx.xx.xx1)

官方文档下载 Debezium (3.2)

cd ~/kafka_2.13-4.0.0

# 将在官网下载的jar包上传至kafka的目录下

tar -xf debezium-connector-mysql-3.2.0.Final-plugin.tar.gz -C ~/kafka_2.13-4.0.0/connect-plugins/debezium
4.3.2.2配置 Kafka Connect(Standalone 模式)

在所有节点上编辑 Kafka Connect 的 standalone 配置文件:

vim /home/bigdata/kafka_2.13-4.0.0/config/connect-standalone.properties

添加以下内容:

bootstrap.servers=xx.xx.xx.xx1:9092,xx.xx.xx.xx2:9092,xx.xx.xx.xx3:9092

plugin.path=/home/bigdata/kafka_2.13-4.0.0/connect-plugins/debezium

key.converter=org.apache.kafka.connect.json.JsonConverter

value.converter=org.apache.kafka.connect.json.JsonConverter

key.converter.schemas.enable=false

value.converter.schemas.enable=false

offset.storage.file.filename=/tmp/connect.offsets

offset.flush.interval.ms=10000
4.3.2.3创建 Debezium MySQL Connector 配置文件

在任意节点(建议主节点:xx.xx.xx.xx1)创建:

vim /home/bigdata/kafka_2.13-4.0.0/config/mysql-debezium-connector.properties

内容如下(请根据实际 MySQL 信息修改)

name=mysql-source-connector

connector.class=io.debezium.connector.mysql.MySqlConnector

tasks.max=1

# MySQL 连接信息

database.hostname=xx.xx.xx.xx

database.port=3306

database.user=debezium
database.password=xxxxxx

# 必填

topic.prefix=mysql-source

database.server.id=184054

# 仅同步 mysql 库

database.include.list=debezium_test

# Schema history(Debezium 2.x+ 必填)

schema.history.internal.kafka.topic=schema-history.mysql-source
schema.history.internal.kafka.bootstrap.servers=xx.xx.xx.xx1:9092,xx.xx.xx.xx2:9092,xx.xx.xx.xx3:9092
include.schema.changes=true
4.3.2.4启动 Kafka Connect
#进入目录
cd /home/bigdata/kafka_2.13-4.0.0

nohup bin/connect-standalone.sh \
  config/connect-standalone.properties \
  config/mysql-debezium-connector.properties \
  \> logs/connect-standalone.out 2>&1 &

验证 Connector 状态

curl -s http://localhost:8083/connectors/mysql-source-connector/status

Kafka 端:确认 topic 已生成

4.3.2.5测试

在 MySQL 里创建 debezium_test:

-- 在 xx.xx.xx.xx 上登录 root 或具备建库权限的账号
mysql -uroot -p
CREATE DATABASE debezium_test;
USE debezium_test;

-- 如表不存在先建
CREATE TABLE IF NOT EXISTS test_user (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50)
);
-- 插入
INSERT INTO test_user(name) VALUES ('Alice');
COMMIT;

消费变更事件

bin/kafka-console-consumer.sh \
  --bootstrap-server xx.xx.xx.xx1:9092 \
  --topic mysql-source.debezium_test.test_user \
  --from-beginning \
  --property print.key=true \
  --property print.value=true

(“op”:“c” 表示 insert):
在这里插入图片描述

再测 UPDATE / DELETE

UPDATE test_user SET name='Bob' WHERE id=1;

DELETE FROM test_user WHERE id=1;

消费者会依次看到:

  • “op”:“u” (更新)

在这里插入图片描述

  • “op”:“d” (删除)
    在这里插入图片描述
Debezium系列之:Debezium 异步引擎 Debezium 提供了一种从项目一开始就直接在 Debezium 内运行连接器的方法。随着时间的推移,它的提供方式已经发生了变化,并且仍在不断发展。本文将描述这方面的另一个演变步骤 - Debezium 引擎的新实现。 阅读详情

相关推荐

一、Debezium介绍

Debezium 是一个用于变更数据捕获的开源分布式平台。启动它,将其指向您的数据库,您的应用程序可以开始响应其他应用程序提交到您的数据库的所有插入、更新和删除操作。Debezium 耐用且快速,因此您的应用程序可以快速响应并且不会错过任何事件,即使出现问题。 上面是官方介绍,我用翻译软件直接翻译的,简单来说,这个开源项目就是可以监控到数据库的变化,包括DDL和DML变更,当然目前DDL的变更仅支持做基本的解析,例如分区表,外键,约束等均不支持,但是你可以进行扩展开发。 .........

al229的博客 1571

Debezium是什么

Debezium是什么 Debezium是一个用来捕获数据库数据变更的分布式服务,你的应用可以看到这些数据变更,以及处理他们。Debezium以更改事件流的形式记录每张表的行级变更。 然后应用可以以事件流产生的顺序读取事件流变更记录。 目前支持的Source Connectors是Mysql,MongoDB,PostgresSQL、Oracle、SQL Server、Db2、Cassamdra、Vitesss。 目前Cassandra、Vitess处于孵化阶段。 说明:孵化连接器发版用于预览目的,对于孵

fengfengzai0101的博客 1万+

Debezium的三种部署方式

debezium 有下面三种部署方式,其中最常用的就是 kafka connect。

爱丹丹的博客 3610

实时数据同步利器debezium教程

1 debezium概述 Debezium是一个开源项目,为捕获数据更改(change data capture,CDC)提供了一个低延迟的流式处理平台。你可以安装并且配置Debezium去监控你的数据库,然后你的应用就可以消费对数据库的每一个行级别(row-level)的更改。 只有已提交的更改才是可见的,所以你的应用不用担心事务(transaction)或者更改被回滚(roll back)。Debezium为所有的数据库更改事件提供了一个统一的模型,所以你的应用不用担心每一种数据库管理系统的错综复杂性。

数智技术 2万+

Debezium系列之:Debezium UI部署详细步骤

Debezium系列之:Debezium UI部署详细步骤一、安装docker二、修改docker镜像仓库三、启动debezium ui命令详解四、启动debezium ui五、登陆debezium ui六、debezium ui功能详细介绍 一、安装docker yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 将软件包信息提前在本地索引缓存 y

zhengzaifeidelushang的博客 3435

Debezium系列之:部署debezium operator详细步骤,启动debezium server采集任务

Debezium系列之:部署debezium operator详细步骤,启动debezium server采集任务

zhengzaifeidelushang的博客 169

Debezium日常分享系列之:在 Kubernetes 上部署 Debezium

Debezium日常分享系列之:在 Kubernetes 上部署 Debezium

zhengzaifeidelushang的博客 1124

Debezium系列之:部署debezium-platform

Debezium系列之:部署debezium-platform

zhengzaifeidelushang的博客 168

37、Flink 的CDC 格式:debezium部署以及mysql示例(1)-debezium的部署与示例

Debezium是一个 CDC(Changelog Data Capture,变更数据捕获)的工具,可以把来自 MySQL、PostgreSQL、Oracle、Microsoft SQL Server 和许多其他数据库的更改实时流式传输到 Kafka 中。Debezium 为变更日志提供了统一的格式结构,并支持使用 JSON 和 Apache Avro 序列化消息。

alanchanchn的专栏 7万+

Debezium 版本的安装和部署详细步骤

Debezium 是一个开源的分布式平台,用于捕获数据库的变更事件并将其转化为可靠的流数据。通过配置适当的数据库连接和启动相应的连接器,你可以开始使用 Debezium 来捕获和处理数据库的变更事件。在使用 Debezium 之前,你需要配置与你要监视的数据库的连接。一旦 Debezium 连接器启动成功并开始监听数据库的变更,你可以验证是否成功捕获到变更事件。现在,你应该能够看到成功捕获到数据库的变更事件,并且在控制台上显示相应的消息。现在,你可以启动 Debezium 连接器来监视数据库的变更事件了。

KapGroovy的博客 1292

解决mmdet3d安装中因PyTorch高版本引发的THC.h缺失问题

本文详细分析了在安装mmdet3d时,因PyTorch版本过高导致THC.h头文件缺失的常见报错问题。文章指出该错误的本质是PyTorch 1.7+版本废弃了旧API,与老版本C++扩展代码不兼容。提供了两种核心解决方案:一是降级PyTorch至1.6及以下版本;二是修改源码,将THC.h引用替换为ATen/cuda等新头文件,并给出了具体的代码修改示例和排查技巧。

weixin_29085151的博客 382

Debezium系列之:在 Kubernetes 上部署 Debezium

Debezium 可以轻松部署在开源容器管理平台 Kubernetes 上。该部署利用了 Strimzi 项目,该项目旨在通过自定义资源简化 Kubernetes 上 Apache Kafka 的部署。为了测试您的部署,您可以使用 minikube,它会在本地计算机上启动 Kubernetes 集群。如果您想在 minikube 上完全测试本文档中描述的 Debezium 部署,则需要在 minikube 上设置不安全的容器映像注册表。

zhengzaifeidelushang的博客 2206

Pcileech(DMA)开源项目简述

希望大DMA家能正确认识FPGA,正确使用DMA技术,对于市场上各类伪装成花里胡哨设备的FPGA板卡它的本质是不会变的,不要上当受骗。

2301_79773847的博客 5966

Debezium系列之:在Kubernetes上部署Debezium教程

摘要:本教程将指导您在Kubernetes上部署Debezium,这是一个强大的开源平台,用于实时捕获和处理数据库的数据变更。我们将详细介绍在Kubernetes集群中安装和配置Debezium的步骤,以实现可靠的数据变更事件流。通过以上步骤,在Kubernetes集群中成功部署Debezium,并开始实时捕获数据库的数据变更事件。您可以根据自己的需求进行配置,如选择要捕获的数据库、变更事件的目标位置等。标题:Debezium系列教程:在Kubernetes上部署Debezium实时数据变更捕获。

高性价比服务器就选:蓝易云 626

STM32/GD32以太网开发避坑指南:ZLG EPORTM模块调试实战(含YT8512H配置)

本文针对STM32/GD32平台使用ZLG EPORTM模块进行以太网开发时遇到的常见问题,提供了详细的调试实战指南。重点解析了从传统PHY驱动迁移到YT8512H芯片的核心步骤,包括软件复位延时、RMII时钟配置等关键陷阱,并分享了LWIP集成与稳定性验证的实用经验,帮助开发者高效避坑。

rice5的博客 1163

Unreal5 从入门到精通之 学习Niagara特效系统

UE5 Niagara粒子系统解析 Niagara是UE5中的高性能粒子特效系统,相比传统粒子系统具有完全可编程性和可视化节点编辑两大特点。核心单元发射器(Emitter)分为模板发射器(预设效果如喷泉、火焰)和空白发射器(高度自定义)。系统提供13种预设模板,包括吹飞粒子、五彩纸屑爆发、动态光束等常见特效。 Niagara采用三级模块化设计: 系统级:全局参数设置与更新 发射器级:控制粒子生成规则与行为 粒子级:处理单个粒子的生命周期和渲染 关键模块包括初始化粒子属性、物理模拟、颜色渐变等,支持GPU加速

TxNet 1127

蓝易云 - Debezium系列之:在Kubernetes上部署Debezium教程

摘要:本教程将指导您在Kubernetes上部署Debezium,这是一个强大的开源平台,用于实时捕获和处理数据库的数据变更。我们将详细介绍在Kubernetes集群中安装和配置Debezium的步骤,以实现可靠的数据变更事件流。通过以上步骤,在Kubernetes集群中成功部署Debezium,并开始实时捕获数据库的数据变更事件。您可以根据自己的需求进行配置,如选择要捕获的数据库、变更事件的目标位置等。标题:Debezium系列教程:在Kubernetes上部署Debezium实时数据变更捕获。

高性价比服务器就选:蓝易云 735

SerDes学习笔记:DFE均衡架构示例(USB3.1、PCIe3.0\4.0)

本文探讨了DFE均衡器架构在不同数据接口中的应用特性。研究表明,抽头数量随数据速率提升而增加,1-16抽头架构较为常见。通过PCIeGen3/4实例分析,对比了单抽头、双抽头和15抽头DFE的性能差异,证明多抽头结构能通过精细调节有效提升噪声容限和降低误码率。文章详细阐述了DFE工作原理,包括其通过反馈信号对输入信号的补偿机制,以及不同抽头对消除码间干扰的作用。实验采用8Gbps速率(125ps/UI)进行波形仿真,直观展示了均衡处理前后的信号变化,为理解信道均衡技术提供了重要参考。

一只豌豆象的博客 519

HoRain云--在Kubernetes上部署Debezium教程

插件未加载:确认Dockerfile中插件路径正确。 数据库连接失败:检查数据库服务的网络连通性。 权限问题:确保数据库用户有REPLICATION SLAVE权限。

2401_86544677的博客 1106

《30天入门 SAP BTP 开发》教程的目录和使用说明,建议收藏

本教程分为两部分:第一部分为SAP BTP入门系列,包含从基础概念到操作步骤的系统性学习内容,建议零基础用户按顺序学习;第二部分为专题文章集合,涵盖SAP BTP的多个技术点,适合已有基础的用户按需查阅。教程包含账号申请、Global Account操作、Java应用开发、AI工具使用等丰富内容,同时解答常见问题并提供实战案例。所有文章均附带详细链接,便于读者系统学习或针对性查阅。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4407

13、混合系统的离散与连续交互

本文详细探讨了混合系统中离散事件与连续动态的交互机制,涵盖了建模方法、分析技术、设计挑战以及多种控制策略。通过具体案例研究和操作语义的定义,展示了混合系统在制造业、交通系统、机器人技术和过程控制等领域的广泛应用。文章还介绍了实验仿真、稳定性研究及优化方法,旨在帮助读者全面理解混合系统的设计与控制要点,并为未来智能化和自适应混合系统的发展提供了展望。

5f4d3s2a1q的博客 128

Debezium日常分享系列之:在 OpenShift 上部署 Debezium

Debezium日常分享系列之:在 OpenShift 上部署 Debezium

zhengzaifeidelushang的博客 945

DPABISurf使用教材

严老师的官方教程:http://rfmri.org/Course DPABISurf版本:dpabi50docker.tar.gz MATLAB版本:2018b 一、数据准备 (1)如果是数据的DICOM格式,整理成以下格式(注意文件夹的命名方式): 如果觉得不是很清楚,可以在官网下载Demo数据(http://rfmri.org/DemoData),参照里面的文件格式进行整理即可。 (2)如果数据是nii格式,整理成以下格式: 这里没有使用官网的demo数据进行学习,而是..

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 8521

如何使用Docker部署debezium来监控 MySQL 数据库

如何使用Docker部署debezium来监控 MySQL 数据库

杨荧的优快云博客 1843

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Debezium日常分享系列之:认识debezium operator、debezium server yaml格式、部署debezium server

Debezium日常分享系列之:认识debezium operator、debezium server yaml格式、部署debezium server

zhengzaifeidelushang的博客 897

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: maxwell(1.44.0)部署
下一篇: 单库单表Mysql-canal/maxwell-kafka测试
wangyutian5u
博客等级 码龄4年 94粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值