如何将数据从一个 AWS 账户的 RDS 移动到另一个账户

ddd*_*ddd 5 postgresql etl data-migration amazon-web-services amazon-rds

我们不久前在 AWS 上设置了 Web 服务和数据库,应用程序现已投入生产。由于某种原因,我们需要终止旧的 AWS 并将所有内容转移到新创建的 AWS 帐户下。应用程序和所有基础设施都非常简单。但对于数据来说,这比较棘手。当前的数据库每天仍在接收大量数据。因此,最好在关闭旧应用程序并切换到新平台后迁移数据。

源 RDS 和目标 RDS 都是 Postgres。我们有大约 40GB 的数据要传输。我能想到三种方法,它们都有缺点。

  1. 拍摄第一个 RDS 的快照并在第二个 RDS 中恢复它。问题是我不需要将所有数据从源传输到目的地。可能只需要 10 月 1 日之后的记录就足够了。此外,快照最适合在刚刚创建的空 rds 中恢复。对于我们的例子,新的 RDS 将在截止后开始接收数据。只有在那之后,数据才会从旧帐户转移到新帐户,否则我们将丢失数据。
  2. 从旧 RDS 中的表中转储数据并在新 RDS 中备份。这将有与#1 相同的问题。另外,如果我将数据转储到本地机器,然后从本地备份,网络速度是瓶颈。
  3. 将表数据导出到 csv 文件并导入到新的 RDS。优点是这种方法允许挑选和一些数据清理。但将大型事实表导出到本地 csv 文件需要很长时间。另一个问题是,对于某些表,我有代理行 ID serial(自动增量)。导出的 csv 的行 ID 可能与新 RDS 表中的现有数据冲突。

我想知道是否有更好的方法来做到这一点。也许AWS有一些ETL工具可以点对点直接传输,而不需要使用本地计算机作为中间点。

log*_*esh 0

我最近使用 Bucardo ( https://bucardo.org/ )将 RDS 的数据从一个帐户移动到另一个帐户。请参考以下博客

https://www.compose.com/articles/using-bucardo-5-3-to-migrate-a-live-postgresql-database/

https://bucardo.org/pipermail/bucardo-general/2017-February/002875.html

虽然这没有确切提到两个 RDS 帐户之间的迁移,但这可能有助于设置。我们仍然需要一些中间点,例如 EC2 实例,我们需要在其中配置此 Bucardo 并在帐户之间迁移数据。如果您正在寻找更多信息,我很乐意为您提供帮助。

简而言之,我们需要拍摄源数据库的手动快照并将其恢复到另一个帐户(https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ShareSnapshot.html)并在其中设置 Bucardo在 EC2 实例中,我们可以开始使用触发器同步数据,这将更新目标数据库中的数据,然后新数据进入源数据库。