@Jark,感谢回复,很好的解答了我的疑惑

Best,
Xingxing Di
 
Sender: Jark Wu
Send Time: 2020-08-27 20:13
Receiver: user-zh
Subject: Re: Re: 请问一下,flink 1.11 的cdc历史数据问题
Hi,
 
debezium 是支持全量加载的。debezium 的一个亮点就是能够加载完存量数据以后能够无缝切换到 binlog 模式。
全量加载可以看下 SnapshotReader。
 
另外,全量数据导入到 kafka ,然后从 kafka 加载全量再切换到 mysql
binlog,这里面主要一个问题是很难做到无缝切换,因为不知道确切的 mysql binlog 位点。
 
Best,
Jark
 
On Tue, 25 Aug 2020 at 12:47, [email protected] <[email protected]>
wrote:
 
> Hi:
> Leonard Xu 感谢回复
> > 2.debezium是通过jdbc查询源表的数据来加载全量的历史数据吗? 这块会不会对数据库造成瞬时压力?
> > 不会,不是直接查询源表,所以不会锁表,加载全量历史数据时只是读取binlog的一个offset
>
> 这里恰好是我的疑问,之前看debezium代码,没有找到使用jdbc加载全量历史数据的代码,debezium的snapshot看起来只是保存了表的schema变更记录,这样重新消费binlog时,可以为每条binlog数据找到正确schema,达到正确解析历史数据的目的。
>
> 我的疑问是,如果加载全量历史数据,只是指定binlog的offset,从头读取binlog,那么是不是有可能无法加载到全量的数据,因为通常binlog是有过期时间的,不会保存全量的binlog。如果我理解的没问题,那么目前flink1.11
> 的cdc是无法加载全量历史数据的。
>
> 我理解加载全量数据,无非两种方式:
> 1.jdbc从源表全量拉取数据
> 2.将原表数据初始化到一个kafka
> topic中(topic设置为compact模式),再消费binlog,往这个topic里写入增量数据,确保这个topic的数据和原表一致,然后flink作业启动时,从这个topic的earliest
> offset消费,得到全量的历史数据。
>
> 不知道我的理解是否正确,希望能帮忙解答
>
>
>
> Best,
> Xingxing Di
>
> 发件人: Leonard Xu
> 发送时间: 2020-08-25 10:03
> 收件人: user-zh
> 主题: Re: 请问一下,flink 1.11 的cdc历史数据问题
> Hello
>
> > Flink1.11 的cdc是支持加载历史数据的,有两个问题想求证一下:
> > 1.底层是使用了debezium来加载历史数据的吗?
> Flink支持两种CDC格式,debezium json和 canal json, debezium 和
> canal都是CDC系统,简单说他们可以把数据库表的binlog以对应的json写入到消息队列如Kafka,
> 作为下游系统的Flink 支持去消费对应的cdc数据,两个CDC工作都支持加载历史数据的。
> 另外Jark 在Veverica 开源了一个Flink CDC connector
> [1],支持利用debezuim直接读取数据库的cdc数据,不需要搭建CDC系统。
>
> > 2.debezium是通过jdbc查询源表的数据来加载全量的历史数据吗? 这块会不会对数据库造成瞬时压力?
> 不会,不是直接查询源表,所以不会锁表,加载全量历史数据时只是读取binlog的一个offset
>
>
> Best
> Leonard
> [1] https://github.com/ververica/flink-cdc-connectors <
> https://github.com/ververica/flink-cdc-connectors>
>

回复