带有AWS Kinesis的Debezium嵌入式引擎-PostgreSQL快照加载和事务元数据流

问题描述

我想将Debezium嵌入式引擎与AWS Kinesis一起使用,以便加载Postgresql数据库的初始快照,然后连续执行CDC。

我知道,使用Kafka Connect,我可以开箱即用的交易元数据主题,以便检查交易边界。

使用Debezium嵌入式引擎和AWS Kinesis(https://debezium.io/blog/2018/08/30/streaming-mysql-data-changes-into-kinesis/)情况相同吗?在这种情况下,我将拥有Kinesis Transaction元数据流吗?另外,Debezium嵌入式引擎会为现有Postgresql数据执行初始快照吗?

已更新

我用Postgresql实现了测试EmbeddedEngine应用程序:

    engine = EmbeddedEngine.create()
            .using(config)
            .using(this.getClass().getClassLoader())
            .using(Clock.SYstem)
            .notifying(this::sendRecord)
            .build();

现在,在我的'sendRecord(SourceRecord record)'方法中,我可以看到参与事务的每个数据库表的正确主题,例如:

private void sendRecord(SourceRecord record) {

    String streamName = streamNameMapper(record.topic());
    System.out.println("streamName: " + streamName);

结果如下:

streamName: kinesis.public.user_states
streamName: kinesis.public.tasks

在同一txId=1510

但是我仍然看不到交易元数据流。 如何使用Debezium EmbeddedEngine正确获取事务元数据流?

解决方法

如果您不具体使用 Debezium 嵌入式引擎,那么 Debezium 本身提供了一个选项,它被称为 Dewbezium 服务器(在内部我相信它使用了 Debezium 引擎)。 它是使用 Kafka 的一个很好的替代方案,它目前支持 Kinesis、Google PubSub、Apache Pulsar 用于 CDC。

这里有一篇文章可以参考 https://xyzcoder.github.io/2021/02/19/cdc-using-debezium-server-mysql-kinesis.html