debezium学习

前提环境准备

使用Dokcer Desktop首先需要 WSL 2, Windows专业版默认安装, 家庭版需要下载
在cmd中查看wsl版本信息

wsl -v
# -1可能会出现没有安装发行版, 根据提示直接安装即可, wsl --install
wsl -l

在这里插入图片描述
如果安装失败, 使用wsl --install --web-download 从 Web 下载发行版
因为是在本地学习, 且本地是Windows系统, 所以建议使用 Docker Desktop来运行docker
不用了, 到时候直接卸载即可
下载完成后进行安装,只能装在C盘,不支持更改安装目录。
安装完成后以管理员运行 Powershell 执行 docker version

运行Docker Desktop
在这里插入图片描述
开启WSL 2运行Dokcer, 正常是默认开启的
在这里插入图片描述
修改资源存储目录
在这里插入图片描述
配置国内镜像源,可以添加多个,json格式

"registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "http://hub-mirror.c.163.com",
    "https://registry.docker-cn.com"
  ]

在这里插入图片描述
如果有Clash代理在这里配置代理地址
在这里插入图片描述
配置好后
以管理员运行cmd或者powerShell

官方下载地址:https://docs.docker.com/desktop/install/windows-install/

入门

官网文档地址: https://debezium.io/documentation/reference/stable/tutorial.html

使用 Debezium 监控 MySQL 数据库

使用 Docker 和 Debezium 容器镜像运行 ZooKeeper、Kafka、Debezium 和 MySQL 服务
学习时 ZooKeeper 和 Kafka 的容器不是持久化的
ZooKeeper 和 Kafka 通常会将其数据存储在本地容器中,这需要您将目录作为卷挂载到主机上。
这样,当容器停止时,持久化的数据将保留。
但是,本教程将跳过此设置 - 当容器停止时,所有持久化数据都将丢失。
这样,完成本教程后,清理工作就很简单了。

打开powerShell终端, 运行以下命令步骤

需先启动Zookeeper

docker run -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 quay.io/debezium/zookeeper:2.5

在这里插入图片描述

启动 Kafka

docker run -it --rm --name kafka -p 9092:9092 --link zookeeper:zookeeper quay.io/debezium/kafka:2.5

在这里插入图片描述

启动MySQL数据库

docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.5

在这里插入图片描述
建议使用sql客户端工具连接 localhost 3306, 如果本地之前安装过Mysql服务, 建议改端口号, root账号的密码上面有

启动 Kafka Connect

docker run -it --rm --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs -e OFFSET_STORAGE_TOPIC=my_connect_offsets -e STATUS_STORAGE_TOPIC=my_connect_statuses --link kafka:kafka --link mysql:mysql quay.io/debezium/connect:2.5

在这里插入图片描述
检验服务状态

curl -H "Accept:application/json" localhost:8083/
curl -H "Accept:application/json" localhost:8083/connectors/

部署 MySQL 连接器

注册连接器以监视清单数据库
在这里插入图片描述
在这里插入图片描述

curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d '{ "name": "inventory-connector", "config": { "connector.class": "io.debezium.connector.mysql.MySqlConnector", "tasks.max": "1", "database.hostname": "mysql", "database.port": "3306", "database.user": "debezium", "database.password": "dbz", "database.server.id": "184054", "topic.prefix": "dbserver1", "database.include.list": "inventory", "schema.history.internal.kafka.bootstrap.servers": "kafka:9092", "schema.history.internal.kafka.topic": "schemahistory.inventory" } }'

# Windows可能需要转义双引号
curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d '{ \"name\": \"inventory-connector\", \"config\": { \"connector.class\": \"io.debezium.connector.mysql.MySqlConnector\", \"tasks.max\": \"1\", \"database.hostname\": \"mysql\", \"database.port\": \"3306\", \"database.user\": \"debezium\", \"database.password\": \"dbz\", \"database.server.id\": \"184054\", \"topic.prefix\": \"dbserver1\", \"database.include.list\": \"inventory\", \"schema.history.internal.kafka.bootstrap.servers\": \"kafka:9092\", \"schema.history.internal.kafka.topic\": \"schemahistory.inventory\" } }'

或者复制json, 通过http客户端发送请求
验证 inventory-connector 是否包含在连接器列表中:

curl -H "Accept:application/json" localhost:8083/connectors/

# 查看连接器的任务:
curl -i -X GET -H "Accept:application/json" localhost:8083/connectors/inventory-connector

**
打开一个新终端,并使用它启动 watch-topic 实用程序,从主题的开头开始监视 dbserver1.inventory.customers 主题。**

docker run -it --rm --name watcher --link zookeeper:zookeeper --link kafka:kafka quay.io/debezium/kafka:2.5 watch-topic -a -k dbserver1.inventory.customers

在这里插入图片描述
接下来对数据库表进行CUD操作就会显示在watcher

清理工作

# 停止每个容器:
docker stop mysqlterm watcher connect mysql kafka zookeeper

Docker 停止每个容器。由于您在启动它们时使用了 --rm 选项,因此 Docker 也会删除它们。

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值