

# 使用导出到 S3 和从 S3 导入功能来迁移表
<a name="bp-migrating-table-between-accounts-s3"></a>

**先决条件**
+ 必须为表启用时间点故障恢复（PITR）才能执行导出到 S3 的操作。有关更多信息，请参阅[在 DynamoDB 中启用时间点恢复](PointInTimeRecovery_Howitworks.md)。
+ 具有执行导出的有效 IAM 权限。有关更多信息，请参阅 [在 DynamoDB 中请求表导出](S3DataExport_Requesting.md)。
+ 具有足以执行导入的有效 IAM 权限。有关更多信息，请参阅 [在 DynamoDB 中请求表导入](S3DataImport.Requesting.md)。

**定价信息**

AWS 对 PITR（基于表大小和启用 PITR 的时长）收费。如果您除了导出之外不需要 PITR 功能，则可以在导出结束后将其关闭。AWS 还会对向 S3 发出请求、将导出的数据存储在 S3 中以及导入（基于导入数据的未压缩大小）收费。

有关 DynamoDB 定价的更多信息，请参阅 [DynamoDB 定价](https://aws.amazon.com/dynamodb/pricing/)。

**注意**  
 从 S3 导入 DynamoDB 时，对对象的大小和数量有一些限制。有关更多信息，请参阅 [导入配额](S3DataImport.Validation.md#S3DataImport.Validation.limits)。

## 请求将表导出到 Amazon S3
<a name="bp-migrating-table-between-accounts-s3-table-export"></a>

1. 登录 AWS 管理控制台，打开 DynamoDB 控制台。

1. 在控制台左侧的导航窗格中，选择**导出到 S3**。

1. 选择源表和目标 S3 存储桶。使用 `s3://bucketname/prefix` 格式输入目标账户存储桶的 URL。`/prefix` 是一个可选文件夹，有助于您的目标存储桶保持井然有序。

1. 选择**完整导出**。完整导出会按照您指定的时间点输出表的完整表快照。

   1. 选择**当前时间**以导出最新的完整表快照。

   1. 对于**导出的文件格式**，请在 DynamoDB JSON 和 Amazon Ion 之间进行选择。默认选项是 DynamoDB JSON。

1. 单击**导出**按钮开始导出。

1. 小型表导出应在几分钟内完成，但 TB 级别的表可能需要一个多小时。

## 请求从 Amazon S3 导入表
<a name="bp-migrating-table-between-accounts-s3-table-import"></a>

1. 登录 AWS 管理控制台，打开 DynamoDB 控制台。

1. 在控制台左侧的导航窗格中，选择 **Import from S3**（从 S3 导入）。

1. 在显示的页面上选择 **Import from S3**（从 S3 导入）。

1. 输入 Amazon S3 源 URL。也可以使用**浏览 S3** 按钮查找该 URL。预期的路径采用格式 `s3://bucket/prefix/AWSDynamoDB/<XXXXXXXX-XXXXXX>/data/`。

1. 指定您是否为 S3 存储桶拥有者。

1. 在**导入文件压缩**下，选择 **GZIP** 以匹配导出。

1. 在**导入文件格式**下，选择 **DynamoDB JSON** 以匹配导出。

1. 选择**下一步**。对于**指定表详细信息**，为将创建用于存储数据的新表选择相应选项。

1. 选择**下一步**。对于**配置表设置**，请自定义任何其它表设置（如果适用）。

1. 选择**下一步**再次查看导入选项，然后单击**导入**开始导入任务。您会在**从 S3 导入**下看到列出了新表，其状态为**正在导入**。此时无法访问您的表。小规模导入应在几分钟内完成，但 TB 级别的表可能需要一个多小时。

1. 导入完成后，状态显示为**活动**，您可以开始使用该表。

## 在迁移期间保持表同步
<a name="bp-migrating-table-between-accounts-s3-table-sync"></a>

如果可以在迁移期间暂停对源表的写入操作，那么在迁移后源表和输出应该完全匹配。如果无法暂停写入操作，则迁移后目标表通常会稍微落后于源表。要追踪源表，可以使用流媒体（DynamoDB Streams 或 Kinesis Data Streams for DynamoDB）来重播自备份或导出以来源表中发生的写入操作。

在将源表导出到 S3 时，您应该在时间戳之前开始读取流记录。例如，如果向 S3 的导出活动发生在下午 2:00，向目标表的导入活动在晚上 11:00 结束，则应在下午 1:58 启动 DynamoDB 流读取活动。用于更改数据捕获表的流式处理选项总结了每种流式处理模式的功能。

将 DynamoDB Streams 与 Lambda 结合使用提供了一种在源表和目标 DynamoDB 表之间同步数据的简化方法。可以使用 Lambda 函数重播目标表中的每一次写入操作。

**注意**  
项目会在 DynamoDB Streams 中保存 24 小时，因此您应该计划在该时段内完成备份和还原或导出和导入。