首页 > 解决方案 > Debezium Embedded Engine with AWS Kinesis - PostgreSQL 快照加载和事务元数据流

问题描述

我想将 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)' 方法中,我可以看到参与事务的每个数据库表的正确主题,例如:

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 正确获取事务元数据流?

标签: postgresqltransactionsamazon-kinesiscdcdebezium

解决方案


如果您不具体使用 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


推荐阅读