【Debezium】
文章平均质量分 81
_laomei_
Debezium Contributor;
Schema Registry Contributor;
flink大数据、微服务体系开发;
展开
-
[debezium 源码分析] MySqlConnectorTask 启动和拉取数据过程分析
MySqlConnectorTask的poll方法会获取,并将这些数据存入kafka内。start 方法现在先分析MySqlConnectorTask.start方法,下面是一部分代码...this.taskContext.start();boolean startWithSnapshot = false;boolean snapshotEventsAreInserts ...原创 2018-03-13 21:41:16 · 3026 阅读 · 0 评论 -
[debezium 源码分析] BinlogReader和SnapshotReader
debezium工作方式主要有2种,分别是全量和增量订阅。 全量对应SnapshotReader,增量订阅对应BinlogReader;前者会读取全表数据,后者会对binlog事件作出对应的处理逻辑。SnapshotReader该类内最重要的方法就是execute(),调用该方法也就是意味着一次snapshot操作,全量任务是在子线程里运行的。现在按序分析该方法的执行过程。st...原创 2018-03-13 21:42:53 · 4289 阅读 · 0 评论 -
Debezium 解析 Mysql 默认值
Debezium在很长一段时间内都是不支持解析Mysql column default值,issues https://issues.jboss.org/browse/DBZ-191;前一段时间尝试支持解析Mysql默认值,很高兴今天PR被merge到主分支,在debezium 0.8.0版本会发布。下面具体描述如何实现1. 获取默认值MySqlDdlParser.class这...原创 2018-06-04 20:49:31 · 2373 阅读 · 0 评论 -
用confluent的包部署debezium
1.下载confluent 4.0包, 地址https://www.confluent.io/download/,解压放到/opt下;2.下载0.7.1的debezium, 地址https://repo1.maven.org/maven2/io/debezium/debezium-connector-mysql/0.7.1/debezium-connector-mysql-0.7.1-plug原创 2018-01-18 22:14:34 · 2962 阅读 · 0 评论 -
debezium mysql connector DDL 解析
debezium实现了一个mysql ddl语法解析器,用来解析ddl语句。debezium在最近会对解析器进行优化,更换mysql语法解析器。为什么debezium mysql connector需要ddl parser?为什么需要DdlParserdebeizum mysql connector有2个reader,分别用于snapshot和增量订阅。它们内部都用到了ddl pars...原创 2018-06-12 23:40:51 · 2824 阅读 · 0 评论 -
debezium mysql 创建订阅任务逻辑
用户通过kafka connect提供的REST接口,向debezium提交配置内容,debezium会根据提交的配置信息,启动debezium订阅任务。debezium创建mysql同步任务逻辑主要在MysqlConnectorTask.start方法内,由以下3个大步骤组成: 1. 初始化和构建Readers 2. Readers工作 3. 数据获取之后初始化和构建Reade...原创 2018-06-09 23:50:14 · 2719 阅读 · 0 评论 -
debezium 经验和踩坑
对debezium的运维和使用大半年时间。曾经管理的单个debezium集群有10个左右的debeizum任务。某个库的debezium订阅的表数量大概有几十个,得出了很多经验,踩了很多坑。下面会列出各种遇到的问题和一些比较不错的实践。踩坑debezium坑很多!!最大的坑就是kafka connect的rebalance;每当有新的debezium connector被发到集群后,就...原创 2018-09-05 21:02:30 · 10748 阅读 · 24 评论 -
[debezium 源码分析] debezium history topic
概述对于mysql, debezium提供了一个history topic,history topic的配置比较特殊,过期策略为delete,过期时间非常大,一般我设置为Long - 1(只要数据不删除即可),分区个数必须为1。具体原因会在之后给出。对于dbz mysql connector,一般来说history topic是必须的,不可省略。History Topic 机制dbz hi...原创 2018-09-30 23:43:18 · 2922 阅读 · 0 评论 -
Debezium 如何处理 DDL
Mysql的数据变更(ddl, dml)在debezium都对应一个事件,不同的事件Debezium内部会有不同的处理逻辑。Debezium在内存里会维护订阅的所有表的schema信息。当有DDL事件发生时,Debezium会获取到DDL的语句,将DDL作用于内存的表,那么内存中维护的表结构就能和数据库中的表结构一致。当某个表的数据被更新时,假设是insert,Debezium捕获到变更,随后...原创 2019-02-27 22:05:43 · 3157 阅读 · 0 评论