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

时间:2018-11-13 22:22:04

标签: postgresql amazon-web-services etl amazon-rds data-migration

我们已经在AWS上建立了Web服务和数据库,并且应用程序现已投入生产。由于某些原因,我们需要终止旧的AWS并将所有内容移至新创建的AWS账户下。应用程序和所有基础结构都非常简单。但是,这对于数据来说比较棘手。当前的数据库每天仍在接收大量数据。因此,最好在关闭旧应用程序并打开新平台后迁移数据。

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

  1. 为第一个RDS拍摄快照,然后在第二个RDS中恢复它。问题是我不需要将所有数据从源传输到目标。大概10/01之后的记录就足够了。另外,快照最好以刚创建的空rds恢复。对于我们的情况,新的RDS将在中断后开始接收数据。只有这样,数据才会从旧帐户转移到新帐户,否则我们将丢失数据。
  2. 从旧RDS中的表中转储数据,并在新RDS中进行备份。这将具有与#1相同的问题。另外,如果我将数据转储到本地计算机,然后从本地备份,则网络速度将成为瓶颈。
  3. 将表数据导出到csv文件并导入到新的RDS。优点是此方法还允许选择和清除某些数据。但是,将大型事实表导出到本地csv文件需要花费很多时间。另一个问题是,对于某些表,我的代理行ID是serial(自动递增)。导出的csv的行ID可能与新RDS表中的现有数据冲突。

我想知道是否有更好的方法。也许AWS拥有一些ETL工具,它确实实现了点对点直接传输,而无需使用本地计算机作为中间点。

1 个答案:

答案 0 :(得分: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)中,并且在EC2实例中设置了Bucardo之后,我们就可以开始使用触发器来同步数据了然后将更新目标数据库中的数据,然后新数据进入源数据库。