Docker安装CDC

  • 拉取镜像
  • 离线形式安装
      • 上传文件并创建docker-compose.yml
      • 把镜像加载到docker中
      • 启动容器
      • 连接数据库
        • 创建账号,并给账号授权
        • 设置wal_level
        • 确认wal_level的值
        • 创建链接
        • 查询连接状态
        • 使用kafdrop
        • 消息中看不到修改之前的信息怎么办
        • 补充

拉取镜像

docker pull confluentinc/cp-zookeeper:7.5.0
docker pull confluentinc/cp-kafka:7.5.0
docker pull debezium/connect:2.7.0.Final
docker pull obsidiandynamics/kafdrop:latest

拉取镜像需要VPN,如果没有VPN可以从我的网盘中下载

通过网盘分享的文件:kafka以及cdc和kafdrop
链接: https://pan.baidu.com/s/10OU_4cy7mWtaKAijGpakfQ?pwd=asn5 提取码: asn5

离线形式安装

上传文件并创建docker-compose.yml

把下载好的tar包上传到服务器某个目录下,并在这个目录下创建docker-compose.yml文件
如果是linux环境内容如下:

version: '3.8'services:zookeeper:image: confluentinc/cp-zookeeper:7.5.0environment:ZOOKEEPER_CLIENT_PORT: 2181ZOOKEEPER_TICK_TIME: 2000healthcheck:test: ["CMD-SHELL", "nc -z zookeeper 2181 || exit 1"]interval: 5stimeout: 3sretries: 5kafka:image: confluentinc/cp-kafka:7.5.0depends_on:zookeeper:condition: service_healthy     # 等 zk 完全就绪ports:- "9092:9092"environment:KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092   # Docker Desktop / WindowsKAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1healthcheck:test: ["CMD-SHELL", "kafka-broker-api-versions --bootstrap-server localhost:9092 || exit 1"]interval: 10stimeout: 5sretries: 5connect:image: debezium/connect:2.7.0.Finaldepends_on:kafka:condition: service_healthy     # 等 kafka 完全就绪ports:- "8083:8083"environment:BOOTSTRAP_SERVERS: kafka:9092GROUP_ID: 1CONFIG_STORAGE_TOPIC: my_connect_configsOFFSET_STORAGE_TOPIC: my_connect_offsetsSTATUS_STORAGE_TOPIC: my_connect_statuseskafdrop:image: obsidiandynamics/kafdropports:- "9000:9000"environment:KAFKA_BROKERCONNECT: kafka:9092   # 用服务名,同一网络自动解析depends_on:- kafka

如果是windows环境内容如下:

version: '3.8'services:zookeeper:image: confluentinc/cp-zookeeper:7.5.0environment:ZOOKEEPER_CLIENT_PORT: 2181ZOOKEEPER_TICK_TIME: 2000healthcheck:test: ["CMD-SHELL", "nc -z zookeeper 2181 || exit 1"]interval: 5stimeout: 3sretries: 5kafka:image: confluentinc/cp-kafka:7.5.0depends_on:zookeeper:condition: service_healthy     # 等 zk 完全就绪ports:- "9092:9092"environment:KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://host.docker.internal:9092   # Docker Desktop / WindowsKAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1healthcheck:test: ["CMD-SHELL", "kafka-broker-api-versions --bootstrap-server localhost:9092 || exit 1"]interval: 10stimeout: 5sretries: 5connect:image: debezium/connect:2.7.0.Finaldepends_on:kafka:condition: service_healthy     # 等 kafka 完全就绪ports:- "8083:8083"environment:BOOTSTRAP_SERVERS: host.docker.internal:9092GROUP_ID: 1CONFIG_STORAGE_TOPIC: my_connect_configsOFFSET_STORAGE_TOPIC: my_connect_offsetsSTATUS_STORAGE_TOPIC: my_connect_statuseskafdrop:image: obsidiandynamics/kafdropports:- "9000:9000"environment:KAFKA_BROKERCONNECT: host.docker.internal:9092   # 用服务名,同一网络自动解析depends_on:- kafka

把镜像加载到docker中

请在命令行中进入tar包所在的文件夹,执行以下命令把镜像加载到docker

docker load < zookeeper.tar
docker load < kafka.tar
docker load < connect.tar
docker load < kafdrop.tar

启动容器

docker compose up -d
# 老版本 docker-compose 命令是:docker-compose up -d

启动完成后,请使用docker ps查看四个容器是否都启动了。如果发现容器没有起来,请【docker logs 容器id】查看报错日志,并把日志放入deepseek中查找原因。

连接数据库

我这里连的postgres 10,其他版本或者其他数据库请deepseek,大同小异

创建账号,并给账号授权
CREATE USER debezium WITH PASSWORD 'dbz_pass' REPLICATION;
ALTER USER debezium SUPERUSER;
设置wal_level
ALTER SYSTEM SET wal_level = logical;
SELECT pg_reload_conf();
确认wal_level的值
  1. 重启postgres,如果是docker安装的,可以docker restart 容器id
  2. 执行SHOW wal_level查看结果是不是“logical”。如果不是请deepseek。
创建链接

POST http://connect所在服务器ip:8083/connectors
body:【请仔细查看body内容,替换成实际的信息】

{"name": "pg-connector","config": {"connector.class": "io.debezium.connector.postgresql.PostgresConnector","tasks.max": "1","database.hostname": "数据库ip","database.port": "数据库端口","database.user": "debezium","database.password": "dbz_pass","database.dbname": "数据库名","topic.prefix": "dbserver1","plugin.name": "pgoutput","table.include.list": "public.table_a,public.table_b","snapshot.mode": "initial"}
}
查询连接状态

GET http://connect所在服务器ip:8083/connectors/pg-connector/status

成功的结果:

{"name": "pg-connector","connector": {"state": "RUNNING","worker_id": "172.20.0.5:8083"},"tasks": [{"id": 0,"state": "RUNNING","worker_id": "172.20.0.5:8083"}],"type": "source"
}

如果结果里两个status都是RUNNING,则表示成功,否则拿trace里的内容deepseek

使用kafdrop

· 这里使用的kafka图形化界面是kafdrop,也可根据习惯使用别的工具
· 访问地址 http://安装的服务器ip:9000
· 上面所有步骤都成功后,去数据库指定的表中修改一条数据
· 指定的表指的是:"table.include.list"中指定的表
· 然后刷新kafdrop,可以看到dbserver1开头的topic
在这里插入图片描述

消息中看不到修改之前的信息怎么办

在数据库执行以下语句

DO $$
DECLAREr RECORD;
BEGINFOR r INSELECT schemaname, tablenameFROM pg_tablesWHERE schemaname = 'public'AND tablename IN ('tb_A', 'tb_B')LOOPEXECUTE format('ALTER TABLE %I.%I REPLICA IDENTITY FULL;', r.schemaname, r.tablename);END LOOP;
END$$;
补充

connect提供了创建链接接口,查询链接状态接口,删除链接接口,查看链接配置接口和更新链接配置接口,接口文档如下:https://docs.apipost.net/docs/detail/4de10f8eac12000?locale=zh-cn&target_id=1dd669507cb037

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

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

相关文章

如何在win服务器中部署若依项目

一、安装jdk的环境&#xff1a; 这一步很简单&#xff0c;直接拿到安装包双击安装即可。 二、配置jdk的环境变量默认安装的路径为&#xff1a;C:\Program Files (x86)\Java\jdk1.7.0_51安装完成之后进行环境变量配置右击计算机&#xff08;此电脑&#xff09;点击属性点击高级系…

CSS从入门到精通完整指南

第一部分&#xff1a;CSS基础入门1.1 什么是CSSCSS&#xff08;层叠样式表&#xff0c;Cascading Style Sheets&#xff09;是用于描述HTML文档外观和格式的样式语言。CSS将内容与表现分离&#xff0c;让HTML专注于内容结构&#xff0c;CSS专注于视觉效果。1.2 CSS语法结构选择…

重温k8s基础概念知识系列二(Pod)

文章目录1、Pod概念2、K8s 中的 Pod 的两种用法3、定义Pod4、Pod的创建资源5、Pod 模板6、容器探针7、总结干货8、 K8s Pod 经典面试题速查表Pod是Kubernetes中最小的单元&#xff1a; 1、Pod概念 Pod 是可以在 Kubernetes中创建和管理的、最小的可部署的计算单元。它由一组、一…

设计模式之静态代理

一些个人理解 顾名思义&#xff0c;就是代理一个对象。 那么&#xff0c;既然要代理一个东西&#xff0c;就要传入它吧? 【1】所以将代理对象当作属性【【2】往往通过构造方法传入被代理的目标对象】。 既然要代理&#xff0c;那必然要和代理对象拥有相同的功能吧? 所以实现了…

牛津大学xDeepMind 自然语言处理(1)

牛津大学xDeepMind 自然语言处理 Natural Language Processing 词向量与词汇语义学 Word Vectors and Lexical Semantics 词语表示的基本问题与分布语义思想 传统词语表示&#xff08;如独热向量&#xff09;存在稀疏、正交、语义弱的问题&#xff0c;无法表达语义相似性。分布…

StarRocks数据库集群的完整部署流程

目录 依赖环境 下载安装包 部署FE 部署BE 搭建集群 停止集群 依赖环境 详见&#xff1a;StarRocks 部署&#xff1a;依赖环境-CSDN博客 下载安装包 在官方网站下载安装包&#xff1a;StarRocks 部署FE 创建元数据目录。 mkdir -p <meta_dir> 修改 FE 配置文件 f…

简单的 VSCode 设置

以下是我使用的vscode设置。虽然有些主观&#xff0c;但很实用。1 主题。我放弃了那些炫酷的主题。我选择了Tokyo Night (Storm)。理由是&#xff1a;它平静、赏心悦目&#xff0c;并且与代码形成了美丽的对比&#xff0c;却又不显得刺眼。2. 字体。我切换到了 JetBrains Mono …

Rust 条件语句

Rust 条件语句 在编程语言中&#xff0c;条件语句是程序流程控制的重要组成部分。Rust 作为一种系统编程语言&#xff0c;其条件语句的设计简洁而强大。本文将详细介绍 Rust 中的条件语句&#xff0c;包括其语法、用法以及一些高级特性。 1. 基本条件语句 Rust 中的基本条件语句…

【Java EE进阶 --- SpringBoot】初识Spring(创建SpringBoot项目)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java, Java EE初阶&#xff0c; Java数据结构 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励…

脑潜在进展:基于潜扩散模型的三维脑磁共振成像个体时空疾病进展研究|文献速递-深度学习人工智能医疗图像

Title题目Brain Latent Progression: Individual-based spatiotemporal diseaseprogression on 3D Brain MRIs via latent diffusion脑潜在进展&#xff1a;基于潜扩散模型的三维脑磁共振成像个体时空疾病进展研究01文献速递介绍神经退行性疾病是现代医疗保健领域最紧迫的挑战之…

专题:2025AI技术应用与发展报告|附600+份报告PDF、数据仪表盘汇总下载

原文链接&#xff1a;https://tecdat.cn/?p43632 当企业管理者看着后台65%的任务被AI自动分配&#xff0c;却仍在为下周的营销方案熬夜改稿时&#xff0c;一个现实的矛盾浮出水面&#xff1a;AI到底能帮企业做什么&#xff1f; 2025年&#xff0c;算法研发投入占企业AI预算的…

【笔记】扩散模型(一一):Stable Diffusion XL 理论与实现

论文链接&#xff1a;SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis 官方实现&#xff1a;Stability-AI/generative-models 非官方实现&#xff1a;huggingface/diffusers Stable Diffusion XL (SDXL) 是 Stablility AI 对 Stable Diffusion 进…

学习安卓APP开发,10年磨一剑,b4a/Android Studio

学习安卓APP开发 记得上次学APP都是在2016年前了&#xff0c;一晃就过去了10年。 当时用ANDROID studio打开一个空项目和编绎分别用了300秒&#xff0c;一下就用了10分钟。 后来买了一台一万多的电脑&#xff0c;CPU换成了I5 8600K 4.2GHZ*6核&#xff0c;再加上M2固态硬盘。 编…

调试技巧(vs2022 C语言)

调试之前首先要保证我们的脑袋是清晰的&#xff0c;我们调试的过程主要是看代码有没有按照我们的想法去运行调试最常使用的几个快捷键F5启动调试&#xff0c;经常用来直接跳到下一个断点处&#xff08;F5通常和F9配合使用&#xff0c;打了断点按F5程序可以直接运行到断点处&…

MySQL深度理解-Innodb底层原理

1.MySQL的内部组件结构大体来说&#xff0c;MySQL可以分为Server层和存储引擎层两部分。2.Server层Server层主要包括连接器、查询缓存、分析器、优化器和执行器等&#xff0c;涵盖MySQL的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、时间、数据和加密…

QFtp在切换目录、上传文件、下载文件、删除文件等一系列操作时,如何按照预期操作指令顺序执行

FTP服务初始化时&#xff0c;考虑到重连、以及commandFinished信号信号执行完成置m_bCmdFinished 为true; void ICore::connectFtpServer() {if(g_pFile nullptr){g_pFile new QFile;}if(g_pFtp){g_pFtp->state();g_pFtp->abort();g_pFtp->deleteLater();g_pFtp n…

JavaSE高级-02

文章目录1. 多线程1.1 创建线程的三种方式多线程的创建方式一&#xff1a;继承Thread类多线程的创建方式二&#xff1a;实现Runnable接口多线程的创建方式三&#xff1a;实现Callable接口三种线程的创建方式对比Thread的常用方法1.2 线程安全线程同步方式一&#xff1a;同步代码…

从舒适度提升到能耗降低再到安全保障,楼宇自控作用关键

在现代建筑的发展历程中&#xff0c;楼宇自动化控制系统&#xff08;BAS&#xff09;已从单纯的设备管理工具演变为集舒适度优化、能耗控制与安全保障于一体的核心技术。随着物联网和人工智能的深度应用&#xff0c;楼宇自控系统正以数据为纽带&#xff0c;重构人与建筑的关系。…

图像分类精度评价的方法——误差矩阵、总体精度、用户精度、生产者精度、Kappa 系数

本文详细介绍 “图像分类精度评价的方法”。 图像分类后&#xff0c;需要评估分类结果的准确性&#xff0c;以判断分类器的性能和结果的可靠性。 常涉及到下面几个概念&#xff08;指标&#xff09; 误差矩阵、总体精度、用户精度、生产者精度和 Kappa 系数。1. 误差矩阵&#…

【科普向-第一篇】数字钥匙生态全景:手机厂商、车厂与协议之争

目录 一、协议标准之争&#xff1a;谁制定规则&#xff0c;谁掌控入口 1.1 ICCE&#xff1a;中国车企主导的自主防线 1.2 ICCOA&#xff1a;手机厂商的生态突围 1.3 CCC&#xff1a;国际巨头的高端壁垒 1.4 协议对比 二、底层技术路线&#xff1a;成本与安全的博弈 2.1B…