繁体   English   中英

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

[英]How do I move data from RDS of one AWS account to another account

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

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

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

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

到 2022 年,完成此任务的最简单方法是使用 AWS 数据库迁移服务 (AWS DMS)。

您可以创建迁移任务,将原数据库设置为源端点,将新数据库设置为目的端点。

接下来创建一个具有“满载,持续复制”设置的任务。

更多细节在这里: https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html

我最近使用 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 实例,我们可以开始使用触发器同步数据,这将更新目标数据库中的数据,然后新数据进入源数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM