如何仅提取 AWS RDS(Postgres 数据库)中的更改数据(CDC)并将更改数据转储到另一个 RDS postgres 实例?

Posted

技术标签:

【中文标题】如何仅提取 AWS RDS(Postgres 数据库)中的更改数据(CDC)并将更改数据转储到另一个 RDS postgres 实例?【英文标题】:How to extract only change data (CDC) in AWS RDS (Postgres database) and dump change data to another RDS postgres instance? 【发布时间】:2020-07-27 17:06:03 【问题描述】:

有没有办法只捕获 RDS Postgres 实例中的更改数据并将这些更改记录写入另一个 RDS Postgres 数据库实例以供以后使用?

我看过几个选项,比如使用 Debezium,但它似乎没有帮助,因为我不必实际写入流。

我的要求是: 1)一次将所有现有数据加载到另一个数据库 2)捕获变更数据(delta)并存储在数据库中(具有相同的副本)并处理变更数据。

【问题讨论】:

AWS 数据库迁移服务能如你所愿吗? @jordanm DMS 不符合我们的确切要求。所以我们决定继续使用只读副本。有没有一种方法可以捕获和公开 postgres 的 RDS 只读副本中的插入/更新/删除活动? 您可以使用代理系统自动将写入请求重定向到主服务器。这似乎是一个现代版本:github.com/CrunchyData/crunchy-proxy 【参考方案1】:

我已按照以下步骤实现上述场景:

1) 编写了一个 Spring 批处理作业,它连接到 RDS 并执行一次完整加载。 2) 完全加载完成后,我们添加逻辑以导出 CDC 数据的 WAL 日志,然后将数据放入流中以进一步处理。

不是最好的解决方案,但该解决方案适用于上述情况。

【讨论】:

您是否碰巧在任何地方公开发布了您的代码?我很好奇如何创建逻辑来导出 WAL 日志等。

以上是关于如何仅提取 AWS RDS(Postgres 数据库)中的更改数据(CDC)并将更改数据转储到另一个 RDS postgres 实例?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 aws rds 导出 postgres 数据库

如何通过 eb cli (django postgres) 迁移 AWS RDS 数据库?

AWS postgres RDS 读取复制如何处理架构切换?

AWS Lambda NodeJS 连接到 RDS Postgres 数据库

如何对接一个与 AWS RDS Postgres 实例连接的 Spring Boot 应用程序? [关闭]

PSQLException:此连接已关闭 - Spring Boot + AWS RDS + Postgres