需要将大型表从 RDS 迁移到 DynamoDB 的策略建议
Posted
技术标签:
【中文标题】需要将大型表从 RDS 迁移到 DynamoDB 的策略建议【英文标题】:Need strategy advice for migrating large tables from RDS to DynamoDB 【发布时间】:2016-03-25 02:03:33 【问题描述】:我们在 RDS 中有几个巨大的 mysql 表(超过 700 GB),我们希望将它们迁移到 DynamoDB 表。您能否提出一个策略或方向,以一种干净、并行的方式做到这一点?也许使用 EMR 或 AWS Data Pipeline。
【问题讨论】:
【参考方案1】:您可以使用 AWS Pipeline。有两个基本模板,一个用于将 RDS 表移动到 S3,第二个用于将数据从 S3 导入 DynamoDB。您可以使用这两个模板创建自己的管道。
问候
【讨论】:
谢谢,如果我们可以使用这些模板就完美了,但是我们有 2 个 mySQL 表,我们想将它们存储为 1 个单个 DynamoDB 表。模板具有使用单个表的选项,但没有 2。是否有解决此问题的方法,不涉及预处理? (这将是我们最后的手段 - 将 2 个 mySQL 表连接到一个 mySQL 表中,因为它需要大量的时间和空间) 嗨 Ankit。在这种情况下,您需要在管道中包含一个 EMR 集群。工作流程应该是:将两个表在单独的 csv 中移动到 S3,EMR 集群将合并/连接表,输出到 S3,最后将您的数据导入 DynamoDB。在这里,您需要为合并/加入作业开发一些内容。使用 Hadoop 命令可以轻松导入/导出到 EMR 中的 S3。【参考方案2】:处理如此庞大的数据需要考虑的一件事是 Dynamo 是否是最佳选择。
如果这是统计数据或其他“大数据”,请查看可能更适合您情况的 AWS RedShift。
【讨论】:
我们需要切换到非规范化的无模式表以适应某些用例,因此 Dynamo 对我们来说是更好的选择。 @AnkitKapur - Dynamo 只有当你能为你的数据选择一个好的散列键时才是好的!请务必阅读文档并确保您了解 Dynamo 的限制和最佳实践,然后再走这条路线。【参考方案3】:我们已经做过类似的工作,并且可能有更好的策略来做到这一点。在源实例中使用 AWS DMS 和一些准备表。
它涉及两个步骤:
您在源实例中创建与 dynamodb 模式完全匹配的新表。就像将多个表合并为一个等。
设置 DMS 任务,准备表作为源,DynamoDB 作为目标。由于准备表和目标模式现在匹配,因此从这一点开始应该非常简单。
希望对您有所帮助!祝你好运!!
【讨论】:
以上是关于需要将大型表从 RDS 迁移到 DynamoDB 的策略建议的主要内容,如果未能解决你的问题,请参考以下文章
将一张表从 RDS / postgres 加载到 Redshift
使用 Golang API 将表从 Amazon RDS 导出到 csv 文件