从 DynamoDB 迁移到 RDS

从 DynamoDB 迁移到 RDS

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

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

从我在 AWS 上读过的文档来看,我有几个选择。

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

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

答案1

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

如果你提升 DynamoDB 读取性能达到每秒 10k 个容量单位,您应该能够在 15 分钟内读取整个数据集。同时在足够大的实例这样它就可以承受 8M 行的写入而不会减慢速度。不要使用db.t2.*class,因为它会占用 CPU 信用,一旦用完,速度就会变慢。相反,使用db.r4.2xlarge具有大量内存的大型程序(例如),一旦导入完成,您可以立即将其降级为适合您长期需求的任何程序以节省资金。还可以考虑极光而不是老式的远程数据传送系统

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

希望有帮助:)

相关内容