Debezium MySQL源连接器
Debezium MySQL源连接器
该Debezium的MySQL连接是源连接器,可以得到现有数据的快照,记录所有的MySQL服务器/群集在数据库中的行级变化。第一次连接到MySQL服务器时,它将读取所有数据库的一致快照。该快照完成后,连接器将连续读取提交给MySQL的更改,并生成相应的插入,更新和删除事件。每个表的所有事件都记录在单独的Kafka主题中,应用程序和服务可以轻松使用它们。
- Confluent支持MySQL连接器0.9.3版和更高版本。
- Confluent支持将此连接器与MySQL 5.6或更高版本一起使用。
安装MySQL连接器
您可以使用Confluent Hub客户端(推荐)安装此连接器,也可以手动下载ZIP文件。
confluent-hub install debezium/debezium-connector-mysql:latest
您可以通过替换latest
版本号来安装特定版本。例如:
confluent-hub install debezium/debezium-connector-mysql:0.9.4
许可证
Debezium MySQL连接器是一个开源连接器,不需要Confluent企业许可证。
在MySQL服务器上启用二进制日志
必须将MySQL服务器配置为使用行级二进制日志,有关详细信息,请参见MySQL文档。MySQL的二进制日志或二进制日志以数据库执行的相同顺序记录所有操作,包括对表模式的更改或对表中存储的数据的更改。MySQL使用其binlog进行复制和恢复。
Debezium的MySQL连接器读取MySQL的二进制日志,以了解数据更改的内容和顺序。然后,它为binlog中的每个行级插入,更新和删除操作生成一个change事件,并在单独的Kafka主题中记录每个表的所有change事件。
这通常是在MySQL服务器配置文件中完成的,看起来类似于以下片段:
server-id = 223344
log_bin = mysql-bin
binlog_format = row
binlog_row_image = full
expire_logs_days = 10
属性解释:
- 对于MySQL集群中的每个服务器和复制客户端,server-id的值必须唯一。设置连接器时,还为连接器分配了唯一的服务器ID。
- log_bin的值是二进制日志文件序列的基本名称。
- binlog_format的值必须设置为row或ROW。
- binlog_row_image的值必须设置为full或FULL。
- expire_log_days的值是自动二进制日志文件删除的天数。默认值为0,表示“不自动删除”,因此请确保设置适合您的环境的值。
mysql8
下弃用expire_log_days
,替换为:binlog_expire_logs_seconds
,默认值为30天,建议配置如下:
# ----------------------------------------------
# 自定义参数
# 设置日志清理周期为7天
binlog_expire_logs_seconds=604800
# 设置默认时区
default-time-zone='+8:00'
# ----------------------------------------------
快速开始
Debezium的MySQL连接器是一个源连接器,可以在单独的Kafka主题中记录每个表的事件,应用程序和服务可以轻松地使用它们。
安装连接器
如果要使用Docker映像来设置Kafka,ZooKeeper和Kafka Connect,请参考Debezium教程。对于以下教程,您需要在本地安装Confluent Platform。
导航到您的Confluent Platform安装目录,然后运行以下命令来安装连接器:
confluent-hub install debezium/debezium-connector-mysql:0.9.4
添加新的连接器插件需要重新启动Connect。使用Confluent CLI重新启动Connect。
提示
Confluent CLI开发命令的命令语法在5.3.0中已更改。这些命令已移至。例如,的语法为now 。有关更多信息,请参见confluent local。confluent local
confluent start
confluent local start
confluent local stop connect && confluent local start connect
Using CONFLUENT_CURRENT: /Users/username/Sandbox/confluent-snapshots/var/confluent.NuZHxXfq
Starting zookeeper
zookeeper is [UP]
Starting kafka
kafka is [UP]
Starting schema-registry
schema-registry is [UP]
Starting kafka-rest
kafka-rest is [UP]
Starting connect
connect is [UP]
检查MySQL插件是否已正确安装并由插件加载器加载:
curl -sS localhost:8083/connector-plugins | jq .[].class | grep mysql
"io.debezium.connector.mysql.MySqlConnector"
使用Docker设置MySQL(可选)
如果没有本机安装的MySQL,则可以使用以下命令来启动一个新容器,该容器运行预先配置了清单数据库的MySQL数据库服务器:
#Run docker container
docker run -it --rm --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=debezium \
-e MYSQL_USER=mysqluser \
-e MYSQL_PASSWORD=mysqlpw debezium/example-mysql:0.9
启动一个MySQL命令行客户端。
docker run -it --rm --name mysqlterm --link mysql --rm 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"'
启动Debezium SQL Server连接器
创建文件register-mysql.json
以存储以下连接器配置:
{"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","database.server.name": "dbserver1","database.whitelist": "inventory","database.history.kafka.bootstrap.servers": "localhost:9092","database.history.kafka.topic": "schema-changes.inventory"}}
启动连接器。
curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" http://localhost:8083/connectors/ -d @register-mysql.json
开始您的Kafka消费者
在新的终端会话中启动使用者。
confluent local consume dbserver1.inventory.customers -- --from-beginning
当您在MySQL bash中输入SQL查询以添加或修改数据库中的记录时,将填充消息,并在您的用户终端上显示这些消息,其中显示已添加或已修改的记录。
# Explore the sample inventory database already populated in your MySQL client running in Docker
use inventory;
SELECT * FROM customers;
# Type these queries to see change events in the consumer terminal
UPDATE customers SET first_name='Anne Marie' WHERE id=1004;
DELETE FROM customers WHERE id=1004;
清理资源
删除连接器并停止Confluent服务。
curl -X DELETE localhost:8083/connectors/inventory-connector
confluent local stop
停止SQL Server容器。
docker stop mysqlterm mysql
注意
此处提供的部分信息来自Debezium社区最初提供的文档。Debezium生产的作品已获得知识共享3.0的许可。
dbz-connecor-mysql与jdbc-connector-mysql对比
- 1、dbz-connector 支持数据插入、更新、删除的CDC,但jdbc-connector 仅支持插入、更新;
- 2、jdbc-connect提供了mysql的源端、池端连接器,但是dbz仅提供为源端连接器,池端连接器,需要自行实现。
- 3、dbz-connector-mysql 与 jdbc-connect的消息格式不兼容;
原文
https://docs.confluent.io/current/connect/debezium-connect-mysql/index.html
Debezium MySQL源连接器相关推荐
- 必需的 Debezium MySQL 连接器配置属性
必需的 Debezium MySQL 连接器配置属性 官网地址: https://debezium.io/documentation/reference/1.5/connectors/mysql.ht ...
- Kafka连接器深度解读之JDBC源连接器
在现实业务中,Kafka经常会遇到的一个集成场景就是,从数据库获取数据,因为关系数据库是一个非常丰富的事件源.数据库中的现有数据以及对该数据的任何更改都可以流式传输到Kafka主题中,在这里这些事件可 ...
- Flink系列之:Flink CDC深入了解MySQL CDC连接器
Flink系列之:Flink CDC深入了解MySQL CDC连接器 一.增量快照特性 1.增量快照读取 2.并发读取 3.全量阶段支持 checkpoint 4.无锁算法 5.MySQL高可用性支持 ...
- 读 MySQL 源码再看 INSERT 加锁流程
欢迎关注方志朋的博客,回复"666"获面试宝典 在之前的博客中,我写了一系列的文章,比较系统的学习了 MySQL 的事务.隔离级别.加锁流程以及死锁,我自认为对常见 SQL 语句的 ...
- MySQL 源码 需要 什么基础_MySQL 基础之 源码 部署
源码部署 1. 需要先卸载一些软件 centos7 中需要先卸载 mariadb-libs 软件包 # rpm -e --nodeps mariadb-libs 2. 安装依赖包 yum -y ins ...
- 怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!
写在前面 最近,在开发一个分库分表中间件,由于功能需求,需要分析MySQL协议,发现网上对于MySQL协议分析的文章大部分都过时了,原因是分析的MySQL版本太低了.怎么办呢?于是乎,我便硬着头皮开始 ...
- 通过 Mysql 官网配置更新本地的mysql源
参考连接:https://blog.csdn.net/xyang81/article/details/51759200前提环境:Centos 6.* 本身配置的yum源自带的mysql版本为5.1:后 ...
- gcc编译器和mysql源码哪个难_源码编译mysql 5.5
http://blog.csdn.net/aidenliu/article/details/6586610 源码编译mysql 5.5+ 安装过程全记录 分类: Mysql 2011-07-05 21 ...
- (二)企业部分之lnmp环境的搭建:mysql源码安装
Web服务器架构 Web服务器架构一般主要由系统环境.Web服务器.数据库和语言组成. 可以有以下组成方式: 系统:linux unix windox mac freebsd aix Web服务器:a ...
最新文章
- View.setSystemUiVisibility(int) 方法使用
- JQuery中的html(),text(),val()区别
- 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第5章-不确定系统的分析与综合
- 没学c语言可以学python_先学C语言还是Python?资深程序员往往是这样建议的!
- Matplotlib实例教程 | 统计DataFrame中文本长度分布(条形统计图)
- 就读计算机科学与技术的原因,清华大学转专业数据!23个专业无人响应!深层次原因究竟是什么?...
- CF1100F Ivan and Burgers(线性基)
- 被引10万次:21世纪高被引论文Top 10
- 熊猫烧香系列变种分析报告
- 图文左右滚动代码php,jQuery幻灯片左右滚动效果
- java虚拟机家族种类
- JsonUtils工具类,拿来使用即可
- 硬盘安装FREEBSD5.4详细步骤
- D类音频功放NS4110B电路设计
- java前景以及职业发展方向
- 这6款APP和游戏,是苹果选出的2019年年度最佳
- thinkphp 运行机制和优缺点
- win32 打印机任务管理的 node 模块 (3)详解Win32 Spooler API 获取打印机列表及状态
- 小马哥----高仿苹果6s 主板型号S106s 更换内核 刷机拆机主板图与开机识别图
- 2018 微信数据报告,看看你的微信用了多少天?