Debezium Embedded Engine with AWS Kinesis - PostgreSQL 快照加载和事务元数据流

Debezium Embedded Engine with AWS Kinesis - PostgreSQL snapshot load and Transaction metadata stream

我想将 Debezium Embedded Engine 与 AWS Kinesis 结合使用,以加载 PostgreSQL 数据库的初始快照,然后连续执行 CDC。

我知道,有了 Kafka Connect,我将拥有开箱即用的事务元数据主题,以便检查事务边界。

如果使用 Debezium Embedded Engine 和 AWS Kinesis ( https://debezium.io/blog/2018/08/30/streaming-mysql-data-changes-into-kinesis/ ),在这种情况下我会有 Kinesis Transaction 元数据流吗?另外,Debezium Embedded Engine 会执行现有 PostgreSQL 数据的初始快照吗?

已更新

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

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

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

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 Embedded Engine,那么 Debezium 本身提供了一个选项,它称为 Dewbezium Server(我相信它在内部使用了 Debezium Engine)。 它是使用 Kafka 的一个很好的替代方案,它支持 Kinesis、Google PubSub、Apache Pulsar,目前用于 CDC。

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