Debezuim详细介绍

参考视频:

        【尚硅谷】大数据Debezium开源工具(安装/部署/使用)_哔哩哔哩_bilibili

介绍:

  • Debezuim是用于捕获变更数据的开源工具,可以响应数据库的所有插入,修改,删除操作。
  • 它是一种CDC工具,工作原理和大家所熟悉的Canal,Maxwell一样,均是抽取 数据库日志 来变更的
  • Debezuim是构建在 Apach Kafka之上,并提供Kafka连接器来监视特定的数据库管理
  • 官网: https://debezuim.io/

架构

1 基于Kafka connector 部署Debezuim

        1.1 source connector : 负责把数据库中的记录发送到Kafka(Debezuim)

        1.2 sink connector : 负责把kafka topic中的数据发送到其他系统,如flume,es等,这个就不是debezuim做的了

2 使用Debezuim Server 部署 Debezuim(用的不多)

        Debezuim服务器是一个可配置的,随时可用的应用程序。它将变化数据从源数据库流式传输到其他系统(目前只支持sink到kinesis)

3 嵌入式引擎(最大的优点)

        Debezuim 作为嵌入式引擎,内置到其他应用中,然后就可以实时读取数据库的变化数据

        目前比较火的Flink的CDC,就是Debezuim

安装

准备:

        Mysql,Kafka,Zookeeper

1 数据库准备

1.1 mysql开启binlog
sudo vim /etc/my.cnf[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=row

注意:

不可修改my.cnf的权限,否则mysql就会忽略这个配置文件

修改之后重启mysql: sudo systemctl restart mysqld

检查binlog是否开启成功:    mysql -uroot -paaaaaa -e "show variables like '%log_bin%'"

        查看到 log_bin 为 on 状态

2 准备测试的数据库和表

3 安装Mysql Connector

        3.1 下载

mysql connector :  debezuim-connector-mysq-1.7.1.Final-plugin.tar.gz

        3.2 解压
mkdir -p /opt/.../debezuim/connector # 创建一个目录,用于解压
tar -zxvf debezuim-connector-mysq-1.7.1.Final-plugin.tar.gz -C /opt/.../debezuim/connector

4 Kafka里配置        

cd ../kafka-2.4.1/config
vim connect-distributed.properties[distributed.properties]
#kafka地址
bootstrap.servers=ip:9092,ip2:9092,ip3:9092
group.id= #自己配置# 默认都是json格式,不做更改
key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter# 是否存schema格式,格式会更复杂,根据需要可以开启或关闭
key.converter.schemas.enable=false
value.converter.schemas.enable=false#offset的副本数,安全点设置成2
offset.storage.partitions=2#放开插件的参数,配置到这一步即可,再往下配置会识别不出来
plugin.path=/opt/.../debezuim/connector

分发配置文件到其他集群,重启Kafka集群

5 启动各个组件

        启动 mysql connector
/opt/.../kafka-2.4.1/bin/connect-distributed.sh -daemon /opt/.../kafka-2.4.1/config/connect-distributed.propertiesjps
查看ConnectDistributed是否存在
如果报错没有起来,则查看日志
cd /opt/.../kafka-2.4.1/log
cat connectDistributed.out

    6 检测Kafka Connector是否正常工作

# 检测kafka连接器的服务状态 
curl -H 'Accept:application/json' ip:8083# 检查像kafka connect 注册的 连接器列表
curl -H 'Accept:application/json' ip:8083/connectors 

7 部署 Debezuim Mysql Connector

配置信息 

{

        # 连接器的名字

        “name”:"mydebezuim-mysql-connector",

        "config":{

                "connector.class": "io.debezuim.connector.mysql.MySqlConnector", #写死的

                "database.host":"ip", # 数据库的所在地址

                "database.port":"3306",

                "database.user":"root",

                "database.password":"123456",

                "database.server.id":"184054", # 连接器作为slave来工作,不和主机id一样即可

                "database.server.name":"bigdata", # 服务器名,会成为topic的前缀                

                "database.include.list":"database1,database2", #要监控的数据库列表,不列则监控所有

                "database.history.kafka.bootstrap.servers":"hadoop2:9092", # 存一些历史数据

                "database.history.kafka.topic ":"schema-changes.inventory", # schema的一些配置

        }

}

生成的topic :   [database.server.name].[database.include.list].[表名]  ,

        eg :  bigdata.database1.student

注册连接信息
curl -i -X POST -H "Appect:application/json" -H "Connect-Type:application/json" ip/8083/connectors/ -d '上面的配置信息json' 

快照:

        debezuim第一次启动,默认情况会把mysql的数据全都采集过来(以后只监控变化数据,再次重启也不会有快照),称为快照(canal没有此功能)

注意:

        oracle数据库不推荐,可能会出现一些问题

问答:

1 Debezuim能不能同步历史数据?

答: 可以。使用参数: snapshot.mode=initial 来控制,当第一次监控某个表的时候会先同步所有历史数据,然后再通过mysql的binlog监控所有变更的数据

2 Debezuim同步历史数据(做快照)的时候,这个时候如果有向Mysql的表写数据怎么办?

答:给表加锁: snapshot.locking.mode=minimal

3 默认是一个表一个topic,是否支持某个库下所有的表进入同一个topic?

答:支持,使用topic.routing.但有前提条件,这些表需要有相同的schema,也就是表结构

可参考文档:

Debezium是什么-CSDN博客实时数据同步利器debezium教程_debezium server-CSDN博客Debezium是什么-CSDN博客

CDC工具之Debezium-CSDN博客

spring 结合debezium :Debezium的基本使用(以MySQL为例)-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701524.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单介绍一下Android里面的IntentFirewall

源码链接 https://android.googlesource.com/platform/frameworks/base//633dc9b/services/java/com/android/server/firewall/IntentFirewall.java 源码如下: package com.android.server.firewall; import android.content.Intent; import android.content.Inte…

7.openEuler操作系统网络管理和防火墙(一)

openEuler OECA认证辅导,标红的文字为学习重点和考点。 如果需要做实验,建议安装麒麟信安、银河麒麟、统信等具有图形化的操作系统,其安装与openeuler基本一致。 1.课程介绍 本课程主要介绍了openEuler网络管理的基础知识和操作。 openEuler默认通过NetworkManager管…

深入探索C99标准:关键技术更新与新特性详解

引言 C语言作为计算机科学中最基础且广泛应用的编程语言之一,起源于1970年代初期,由贝尔实验室的丹尼斯里奇(Dennis Ritchie)与肯汤普逊(Ken Thompson)共同创造,其设计初衷是为了提高程序的执行效率、提供低级别的硬件访问能力以及实现系统的…

重新定义音乐创作:ChatGPT与未来音乐产业的融合

### 重新定义音乐创作:ChatGPT与未来音乐产业的融合 随着人工智能技术的飞速发展,ChatGPT不仅在文字创作领域大放异彩,也正逐步渗透并重塑音乐产业的未来。这种先进的语言模型,如今已成为音乐家、作曲家和制作人们手中的一把利剑…

判断当前shell版本

查看$SHELL环境变量: echo $SHELL输出的结果将是当前使用的shell的路径。例如,如果输出为 /bin/bash,则表示当前使用的是Bash shell。 查看ps命令输出: ps -p $$上述命令将显示当前终端进程的信息,其中 $$ 代表当前进…

数据结构-二分搜索树(Binary Search Tree)

一,简单了解二分搜索树 树结构: 问题:为什么要创造这种数据结构 1,树结构本身是一种天然的组织结构,就好像我们的文件夹一样,一层一层的. 2,树结构可以更高效的处理问题 二,二分搜索树的基础 1、二叉树 2,二叉树的重要特性 满二叉树 总结: 1. 叶子结点出现在二叉树的最…

HDL FPGA 学习 - Quartus II 工程搭建,ModelSim 仿真,时序分析,IP 核使用,Nios II 软核使用,更多技巧和规范总结

目录 工程搭建、仿真与时钟约束 一点技巧 ModelSim 仿真 Timing Analyzer 时钟信号约束 SignalTap II 使用 In-System Memory Content Editor 使用 记录 QII 的 IP 核使用 记录 Qsys/Nios II 相关 记录 Qsys 的 IP 核使用 封装 Avalon IP 更多小技巧教程文章 更多好…

Hive 严格模式设置

Hive 在早期使用参数 hive.mapred.mode 来决定是否执行严格模式, 其值为 strict 或者 nostrict. 当其值为 strict 时,执行严格模式,如从分区表查询时,过滤条件必须有分区字段。 在 Hive 3.1.3 中,因为 hive.mapred.mode 比较粗暴…

设计模式篇---观察者模式

文章目录 概念结构实例总结 概念 观察者模式:定义对象之间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其他相关依赖对象都得到通知并被自动更新。 观察者模式是使用频率较高的一个模式,它建立了对象与对象之间的依赖…

C/C++的内存管理(1)

内存管理 C与C的内存分布C语言中动态内存管理方式回顾C内存管理的方式 C与C的内存分布 我们学习C语言时就知道,储存不同的变量计算机会相应分配不同区块的内存。那为什么要把内存化为不同的区域呢?实质上是为了方便管理 下面我们来看看下面一道例题&…

如何开发自己的npm包并上传到npm官网可以下载

目录 搭建文件结构 开始编写 发布到npm 如何下载我们发布的npm包 搭建文件结构 先创建新文件夹,按照下面的样子布局 .├── README.md //说明文档 ├── index.js //主入口 ├── lib //功能文件 └── tests //测试用例 然后再此根目录下初始化package包 npm init…

MyBatis---初阶

一、MyBatis作用 是一种更简单的操作和读取数据库的工具。 二、MyBatis准备工作 1、引入依赖 2、配置Mybatis(数据库连接信息) 3、定义接口 Mapper注解是MyBatis中用来标识接口为Mapper接口的注解。在MyBatis中,Mapper接口是用来定义SQL映射的接口,通…

ssh远程连接免密码访问

我们在远程登录的时候,经常需要输入密码,密码往往比较复杂,输入比较耗费时间,这种情况下可以使用ssh免密码登录。 一般的教程是需要生成ssh密钥后,然后把密钥复制到server端完成配置,这里提供一个简单的方…

Educational Codeforces Round 162 (Rated for Div. 2)

A.两端1中间有几个0 #include<bits/stdc.h> #define INF 1e9 using namespace std; typedef long long ll; const int N2e59; int a[N]; inline void lan(){int n;cin>>n;ll cnt10;for(int i1;i<n;i){cin>>a[i];cnt1(a[i]1);}ll ans0;bool oktrue;for(in…

招聘APP开发实践:技术选型、架构设计与开发流程

时下&#xff0c;招聘APP成为了企业和求职者之间连接的重要纽带。本文将深入探讨招聘APP的开发实践&#xff0c;重点关注技术选型、架构设计以及开发流程等关键方面&#xff0c;带领读者走进这一充满挑战与机遇的领域。 一、技术选型 在开始招聘APP的开发之前&#xff0c;首…

设计模式:软件工程的艺术

引言 设计模式是软件工程中一种解决常见问题的经验总结&#xff0c;是一套可复用的设计思想。它们提供了在特定情境下的解决方案&#xff0c;有助于构建可维护、灵活、可复用、可扩展的软件系统。设计模式是对软件设计中通用问题的抽象&#xff0c;提供了一种共享的语言和思维…

Vue3项目结构分析

node_modules: 是项目npm install下载的node依赖库。 public&#xff1a; favicon.ico: 网页图标logo图片。index.html: 入口html。是一个基础的html页面&#xff0c;其中进行网页最基础的设置&#xff0c;并且设置了id为app的div盒子。该页面即为Vue单页面应用的基础页面。后…

《Docker 简易速速上手小册》第5章 Docker Compose 与服务编排(2024 最新版)

文章目录 5.1 理解 Docker Compose5.1.1 重点基础知识5.1.2 重点案例&#xff1a;部署 Flask 应用和 Redis5.1.3 拓展案例 1&#xff1a;多服务协作5.1.4 拓展案例 2&#xff1a;使用自定义网络 5.2 编排多容器应用5.2.1 重点基础知识5.2.2 重点案例&#xff1a;部署 Flask 应用…

Self-attention与Word2Vec

Self-attention&#xff08;自注意力&#xff09;和 Word2Vec 是两种不同的词嵌入技术&#xff0c;用于将单词映射到低维向量空间。它们之间的区别&#xff1a; Word2Vec&#xff1a; Word2Vec 是一种传统的词嵌入&#xff08;word embedding&#xff09;方法&#xff0c;旨在为…

使用 Docker 安装 Kibana 8.4.3

使用 Docker 安装 Kibana 8.4.3 一. 安装启动 Kibana 8.4.3二. 简单使用2.1 向 Elasticsearch 发送请求2.2 搜索2.3 整体页面 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 安装k…