快速构建 Debezium MySQL Example 数据库

《大数据平台架构与原型实现:数据中台建设实战》博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维码进入京东手机购书页面。

Debezium 官方提供的 MySQL Example 数据库是一个很好的工具,它内置了一个名为 inventory 的数据库,且已经配置好了 binlog,在测试 CDC 方案时非常有用,同时,它又可以基于 Docker 快速部署,所以使用起来就更方便了。本文专门介绍一下这个数据库的使用的方法。

本文操作预设本地已安装并配置好了 docker,如需先行安装 docker,请参考 《Apache Kafka 基于 S3 的数据导出、导入、备份、还原、迁移方案》一文第4节提供的 Shell 脚本。

1. 启动 MySQL Server 端


# stop container if running
docker container stop $(docker ps -aqf "name=mysql")
# remove container
docker container rm $(docker ps -aqf "name=mysql")
# start container
docker run -d --rm \--name mysql \-p 3307:3306 \-e MYSQL_ROOT_PASSWORD=Admin1234! \-e MYSQL_USER=mysqluser \-e MYSQL_PASSWORD=Admin1234! \debezium/example-mysql:1.0

备注:为避免和本地安装的 MySQL Server 冲突,此处特意将端口改为了3307

2. 启动 MySQL Client 端


docker run -it --rm \--name mysqlterm \--link mysql \mysql:5.7 \sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

备注:--link可以通过 “容器名” 互相通信,容器间共享环境变量,该参数用来解决:两个容器通过ip地址连接时容器 IP 地址会变动的问题,mysql 命令行中使用的环境MYSQL_PORT_3306_TCP_ADDRMYSQL_PORT_3306_TCP_PORT均为 link 了 name 为 mysql 的这个容器(就是上面启动的 Server 端容器)后,从该容器传递过来的环境变量,也就是 Server端容器的 IP 地址和 Port。

附录:Docker 知识点


启动 MySQL Server 端和 Client 端的 docker 命令是 -d-it 两个参数特别好的示例!因为两者的启动模式恰好就是这两种参数各自典型的应用场景!简单地说:

  • -d 用来运行那些**”服务“型的程序**,启动之后在后台运行,当前命令行应就地退出,MySQL Server 端进程就是此类典型的案例
  • -it 用来运行那些**”交互“式的命令行**,启动之后不但要分配命令行终端,且不会主动退出,除非用户在终端主动退出,MySQL Client 端进程就是此类典型的案例

以下是 Docker 官方文档 对 -d-i-t 三个参数的解释:

参数说明解释
–detach , -dRun container in background and print container ID后台运行模式,d 意为 detach
–interactive , -iKeep STDIN open even if not attached交互模式,i 意为 interactive
–tty , -tAllocate a pseudo-TTY分配终端,t 意为 tty

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

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

相关文章

AI绘画与修图:重塑数字艺术的新纪元

文章目录 一、AI绘画与修图的原理二、AI绘画的应用三、AI修图的优势四、面临的挑战五、未来发展趋势《AI绘画与修图实战:PhotoshopFirefly从入门到精通 轻松玩转AI绘画与修图实战》亮点内容简介作者简介 随着人工智能技术的飞速发展,AI绘画与修图已经成为…

如何理解和区分训练集、测试集和验证集

如何理解和区分训练集、测试集和验证集 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】 💡 创作高质量博文,分享更多关于深度学习、PyTor…

靡语IT:Vue精讲(一)

Vue简介 发端于2013年的个人项目,已然成为全世界三大前端框架之一,在中国大陆更是前端首选。 它的设计思想、编码技巧也被众多的框架借鉴、模仿。 纪略 2013年,在Google工作的尤雨溪,受到Angular的启发,从中提取自…

【前端素材】推荐优质后台管理系统Protable平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理和监控网站、应用程序或系统的在线工具。它通常是通过网页界面进行访问和操作,用于管理网站内容、用户权限、数据分析等。当我们从多个层次来详细分析后台管理系统时,可以将其功能和定义进一步细分,…

华为配置CAPWAP双栈覆盖业务示例

配置CAPWAP双栈覆盖业务示例 组网图形 图1 配置CAPWAP双栈覆盖业务示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 企业用户接入WLAN网络,以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时,不影响用户的业…

【selenium】三大切换 iframe 弹窗alert 句柄window 和 鼠标操作

目录 一、iframe 1、切换方式: 1、第一种情况: 2、第二种情况: 方式1: 先找到iframe,定位iframe元素(可以通过元素定位的各种方式:xpath,css等等),用对象接收&…

[HTML]Web前端开发技术27(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

activeMq将mqtt发布订阅转成消息队列

1、activemq.xml置文件新增如下内容 2、mqttx测试发送: 主题(配置的模糊匹配,为了并发):VirtualTopic/device/sendData/12312 3、mqtt接收的结果 4、程序处理 package comimport cn.hutool.core.date.DateUtil; imp…

【AIGC】基于深度学习的图像生成与增强技术

摘要: 本论文探讨基于深度学习的图像生成与增强技术在图像处理和计算机视觉领域的应用。我们综合分析了主流的深度学习模型,特别是生成对抗网络(GAN)和变分自编码器(VAE)等,并就它们在实际应用中…

小程序性能优化

背景 在开发小程序的过程中我们发现,小程序的经常会遇到性能问题,尤其是在微信开发者工具的时候更是格外的卡,经过排查发现,卡顿的页面有这么多的js代码需要加载,而且都是在进入这个页面的时候加载,这就会…

Android 仿信号格子强度动画效果实现

效果图 在 Android 中,如果你想要绘制一个圆角矩形并使其居中显示,你可以使用 Canvas 类 drawRoundRect 方法。要使圆角矩形居中,你需要计算矩形的位置,这通常涉及到确定矩形左上角的位置(x, y)&#xff0…

第3部分 原理篇2去中心化数字身份标识符(DID)(2)

3.2.2. DID相关概念 3.2.2.1. 去中心化标识符 (Decentralized identifier,DID) 本聪老师:DID有两个含义,一是Decentralized identity,就是去中心化身份,是广泛意义的DID。另外一个是Decentralized identifier&#xf…

Web性能优化-浏览器工作原理-MDN文档学习笔记

浏览器工作原理 查看更多学习笔记:GitHub:LoveEmiliaForever MDN中文官网 导航 导航是加载 web 页面的第一步:输入 URL、点击一个链接、提交表单等等 DNS查询 导航的第一步是要去寻找页面资源的位置 例如访问https://example.com&#x…

qt-动画圆圈等待-LED数字

qt-动画圆圈等待-LED数字 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include "LedNumber.h" #include <QLabel>LEDNumber::LEDNumber(QWidget *parent) : QWidget(parent) {//设置默认宽高比setScale((float)0.6);//设置默认背景色se…

websocket与Socket的区别

概念讲解 网络&#xff1a;通俗意义上&#xff0c;也就是连接两台计算器 五层网络模型&#xff1a;应用层、传输层、网络层、数据链路层、物理层 应用层 (application layer)&#xff1a;直接为应用进程提供服务。应用层协议定义的是应用进程间通讯和交互的规则&#xff0c;不…

排序第三篇 直接插入排序

插入排序的基本思想是&#xff1a; 每次将一个待排序的记录按其关键字的大小插入到前面已排好序的文件中的适当位置&#xff0c; 直到全部记录插入完为止。 一 简介 插入排序可分为2类 本文介绍 直接插入排序 它的基本操作是&#xff1a; 假设待排充序的记录存储在数组 R[1……

电路设计(27)——交通信号灯的multisim仿真

1.功能要求 使用数字芯片设计一款交通信号灯&#xff0c;使得&#xff1a; 主干道的绿灯时间为60S&#xff0c;红灯时间为45S 次干道的红灯时间为60S&#xff0c;绿灯时间为45S 主、次干道&#xff0c;绿灯的最后5S内&#xff0c;黄灯闪烁 使用数码管显示各自的倒计时时间。 按…

JavaScript 数组、遍历

数组 多维数组&#xff1a;数组里面嵌套 一层数组为二维数组。一维数组的使用频率是最高的。 如果数组访问越界会返回undefined。 数组遍历 数组方法Array.isArray() 这个方法可以去判定一个内容是否是数组。

AndroidStudio 2024-2-21 Win10/11最新安装配置(Kotlin快速构建配置,gradle镜像源)

AndroidStudio 2024 Win10/11最新安装配置 教程目的&#xff1a; (从安装到卸载) &#xff0c;针对Kotlin开发配置&#xff0c;gradle-8.2-src/bin下载慢&#xff0c;以及Kotlin构建慢的解决 好久没玩AS了,下载发现装个AS很麻烦,就觉得有必要出个教程了(就是记录一下:嘻嘻) 因…

java 时间格式 YYYY 于yyyy的区别

java formatDate 时间时&#xff0c;经常需要输入格式比如 YYYYMMDD,yyyyMMdd 这两个是有区别的 具体每个参数可以看下面