从 DynamoDB 迁移到 RDS

Pet*_*ger 5 database migration amazon-web-services amazon-rds amazon-dynamodb

我正在考虑可用于将 DynamoDB 数据库迁移到 RDS 的不同选项。数据结构在关系格式中更有意义。

有 8 张表,每张表大约有 100 万个文档。我们已经制定了主/外键之间的映射。

根据我在 AWS 上阅读的文档,我有几个选择。

  • AWS 数据管道 -> S3 -> 转换为 csv -> AWS Database Migration Service
  • 自定义程序以 csv 格式将表写入 S3 -> AWS 数据库迁移
  • 自定义程序从 dynamoDB 读取 -> 立即逐表插入 RDS,直至完成。
  • 也许使用AWS数据管道直接从DynamoDB复制到RDS?

还有其他人有过这种迁移的经验吗?还有其他选择吗?

MLu*_*MLu 5

800 万个文档并不算多,我不会花太多时间尝试过度优化一个最终可能只运行一次且仅几分钟的流程。

如果您将 DynamoDB 读取性能扩展到每秒 10k 容量单位,您应该能够在不到 15 分钟的时间内读取整个数据集。同时在足够大的实例上运行 RDS ,以便它可以维持 8M 行的写入而不会减慢速度。不要使用db.t2.*类,因为它会使用 CPU 积分,一旦用完,速度就会变慢。相反,使用db.r4.2xlarge具有大量内存的大型设备(例如),导入完成后,您可以立即将其降级为适合您长期需要的任何设备,以节省资金。还可以考虑使用Aurora而不是老式的RDS

您可以在一小部分记录上尝试不同的方法,一旦该过程有效,就可以在整个数据集上运行它。我可能会选择一个简单的自定义程序,一侧从 DynamoDB 读取,另一侧写入 RDS。出于性能和成本优化的原因,我会从 EC2 实例运行它(以防止流量离开 AWS,这会花费一些钱)。除非您已经将数据管道用于其他用途,否则对于如此小的一次性工作可能不值得学习。但如果您已经知道如何使用数据管道,那么您就可以使用它。最后,任何可以从 DynamoDB 读取并写入 RDS 的东西都可以完成这项工作,因此请选择您已经熟悉的东西。

希望有帮助:)