使用导出到 S3 和从 S3 导入功能来迁移表
先决条件
-
必须为表启用时间点故障恢复(PITR)才能执行导出到 S3 的操作。有关更多信息,请参阅在 DynamoDB 中启用时间点恢复。
-
具有执行导出的有效 IAM 权限。有关更多信息,请参阅 在 DynamoDB 中请求表导出。
-
具有足以执行导入的有效 IAM 权限。有关更多信息,请参阅 在 DynamoDB 中请求表导入。
定价信息
Amazon 对 PITR(基于表大小和启用 PITR 的时长)收费。如果您除了导出之外不需要 PITR 功能,则可以在导出结束后将其关闭。Amazon 还会对向 S3 发出请求、将导出的数据存储在 S3 中以及导入(基于导入数据的未压缩大小)收费。
有关 DynamoDB 定价的更多信息,请参阅 DynamoDB 定价
注意
从 S3 导入 DynamoDB 时,对对象的大小和数量有一些限制。有关更多信息,请参阅 导入配额。
步骤 1:请求将表导出到 Amazon S3
-
登录 Amazon 管理控制台,打开 DynamoDB 控制台。
-
在控制台左侧的导航窗格中,选择导出到 S3。
-
选择源表和目标 S3 存储桶。使用
s3://bucketname/prefix
格式输入目标账户存储桶的 URL。前缀是一个可选文件夹,可帮助保持目标存储桶井然有序。 -
选择完整导出。完整导出会按照您指定的时间点输出表的完整表快照。
-
选择当前时间,导出最新的完整表快照
-
对于导出的文件格式,请在 DynamoDB JSON 和 Amazon Ion 之间进行选择。默认选项是 DynamoDB JSON。
-
-
单击导出按钮开始导出。
-
小型表导出应在几分钟内完成,但是 TB 级别的表可能需要一个多小时。
步骤 2:请求从 Amazon S3 导入表
-
登录 Amazon 管理控制台,打开 DynamoDB 控制台。
-
在控制台左侧的导航窗格中,选择 Import from S3(从 S3 导入)。
-
在显示的页面上选择 Import from S3(从 S3 导入)。
-
输入 Amazon S3 源 URL。您也可以使用浏览 S3 按钮查找该 URL:
s3://bucket/prefix/AWSDynamoDB/<XXXXXXXX-XXXXXX>/Data/
。 -
指定您是否为 S3 存储桶拥有者。
-
在导入文件压缩下,选择 GZIP 以匹配导出。
-
在导入文件格式下,选择 DynamoDB JSON 以匹配导出。
-
选择下一步按钮,然后为将创建用于存储数据的新表选择相应选项。
-
选择下一步再次查看导入选项,然后单击导入开始导入任务。您将看到新表在表中列出,状态为正在创建。此时无法访问该表。
-
导入完成后,状态将显示为活动,此时可以开始使用该表。
-
小规模导入应在几分钟内完成,但是 TB 级别的表可能需要一个多小时。
在迁移期间保持表同步
如果可以在迁移期间暂停对源表的写入操作,那么在迁移后源表和输出应该完全匹配。如果无法暂停写入操作,则迁移后目标表通常会稍微落后于源表。要追踪源表,可以使用流媒体(DynamoDB Streams 或 Kinesis Data Streams for DynamoDB)来重播自备份或导出以来源表中发生的写入操作。
在将源表导出到 S3 时,您应该在时间戳之前开始读取流记录。例如,如果向 S3 的导出活动发生在下午 2:00,向目标表的导入活动在晚上 11:00 结束,则应在下午 1:58 启动 DynamoDB 流读取活动。用于更改数据捕获表的流式处理选项总结了每种流式处理模式的功能。
将 DynamoDB Streams 与 Lambda 结合使用提供了一种在源表和目标 DynamoDB 表之间同步数据的简化方法。可以使用 Lambda 函数重播目标表中的每一次写入操作。
注意
项目会在 DynamoDB Streams 中保存 24 小时,因此您应该计划在该时段内完成备份和还原或导出和导入。