

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 AWS DMS 复制实例
<a name="CHAP_ReplicationInstance"></a>

当您创建 AWS DMS 复制实例时，在基于亚马逊 VPC 服务的虚拟私有云 (VPC) 中的 Amazon EC2 实例上 AWS DMS 创建该实例。您可以使用此复制实例执行数据库迁移。在选择**多可用区**选项时，复制实例可通过多可用区部署提供高可用性和失效转移支持。

在多可用区部署中， AWS DMS 自动在不同的可用区域中预置和维护复制实例的同步备用副本。主复制实例可以跨可用区同步复制到备用副本。这种方法提供了数据冗余，消除了 I/O 冻结，并最大限度地减少了延迟峰值。

![\[AWS 数据库 Migration Service 复制实例\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-conceptual2.png)


AWS DMS 使用复制实例连接到您的源数据存储、读取源数据并格式化数据以供目标数据存储使用。复制实例还会将数据加载到目标数据存储中。大部分这种处理发生在内存中。但是，大型事务可能需要部分缓冲到磁盘上。缓存事务和日志文件也会写入磁盘。

您可以在以下 AWS 区域创建 AWS DMS 复制实例。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_ReplicationInstance.html)

AWS DMS 支持名为的特殊 AWS 区域 AWS GovCloud (US) ，该区域旨在允许美国政府机构和客户将敏感工作负载迁移到云中。 AWS GovCloud (US) 满足了美国政府的具体监管和合规要求。有关的更多信息 AWS GovCloud (US)，请参阅[什么是 AWS GovCloud （美国）？](https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/whatis.html)

接下来，您可以了解有关复制实例的更多详细信息。

**Topics**
+ [为您的迁移选择正确的 AWS DMS 复制实例](CHAP_ReplicationInstance.Types.md)
+ [选择复制实例的最佳大小](CHAP_BestPractices.SizingReplicationInstance.md)
+ [使用复制引擎版本](CHAP_ReplicationInstance.EngineVersions.md)
+ [公有和私有复制实例](CHAP_ReplicationInstance.PublicPrivate.md)
+ [IP 地址和网络类型](CHAP_ReplicationInstance.IPAddressing.md)
+ [为复制实例设置网络](CHAP_ReplicationInstance.VPC.md)
+ [为复制实例设置加密密钥](CHAP_ReplicationInstance.EncryptionKey.md)
+ [创建复制实例](CHAP_ReplicationInstance.Creating.md)
+ [修改复制实例](CHAP_ReplicationInstance.Modifying.md)
+ [重启复制实例](CHAP_ReplicationInstance.Rebooting.md)
+ [删除复制实例](CHAP_ReplicationInstance.Deleting.md)
+ [使用 AWS DMS 维护窗口](CHAP_ReplicationInstance.MaintenanceWindow.md)

# 为您的迁移选择正确的 AWS DMS 复制实例
<a name="CHAP_ReplicationInstance.Types"></a>

AWS DMS 在 Amazon EC2 实例上创建复制实例。 AWS DMS 目前支持复制实例的 T3、C5、C6i、R5 和 R6i Amazon EC2 实例类：
+ T3 实例是下一代可突增性能通用实例类型。此类型提供基准级别的 CPU 性能，并能够根据需要随时突增 CPU 使用率。T3 实例兼顾了计算、内存和网络资源，非常适合 CPU 使用中等、偶尔遇到峰值的应用程序。当工作负载的运行低于基准阈值时，T3 实例会累积 CPU 积分。每获得一个 CPU 积分，T3 实例就有机会在需要时为完整 CPU 核心突增一分钟内的性能。

  T3 实例可在 `unlimited` 模式下突增到所需的时间。有关 `unlimited` 模式的更多信息，请参阅[对可突增性能实例使用无限模式](#CHAP_ReplicationInstance.Types.UnlimitedMode)。
+ C5 实例是下一代实例类型，可以较低的单位计算价格，为运行高级计算密集型工作负载提供经济高效的高性能。这包括高性能 Web 服务器、高性能计算（HPC）、批处理、广告服务、高度可扩展的多人游戏和视频编码等工作负载。适合 C5 实例的其他工作负载包括科学建模、分布式分析以及机器和深度学习推理。C5 实例可选择 Intel 和 AMD 的处理器。
+ 与同类第 5 代实例相比，C6i 实例为各种工作负载提供的计算性价比高出 15%，而且内存加密始终处于开启状态。C6i 实例非常适合计算密集型工作负载，例如批处理、分布式分析、高性能计算（HPC）、广告服务、高度可扩展的多人游戏和视频编码。
+ R5 实例是适用于 Amazon EC2 的下一代内存优化型实例类型。R5 实例非常适合内存密集型应用程序，例如高性能数据库、分布式 Web 级内存缓存、中型内存数据库、实时大数据分析和其他企业应用程序。使用高吞吐量事务系统的持续迁移或复制 AWS DMS 也会消耗大量 CPU 和内存。
+ 与同类第 5 代实例相比，R6i 实例为各种工作负载提供的计算性价比高出 15%，而且内存加密始终处于开启状态。R6i 实例已通过 SAP 认证，非常适合 SQL 和 NoSQL 数据库等工作负载、Memcached 和 Redis OSS 等分布式 Web 级内存缓存、SAP HANA 等内存数据库以及 Hadoop 和 Spark 集群等实时大数据分析。
+ 与上一代同类实例相比，C7i 实例的计算性能更高。对于 AWS DMS 工作负载，C7i 实例擅长加速数据转换过程、处理计算密集型架构转换以及在高容量迁移任务期间保持一致的吞吐量。这些实例可实现计算性能与持续 CPU 性能的理想平衡。
+ 与上一代同类实例相比，R7i 实例具备更优异的计算性能，同时搭配大容量内存，可从容应对内存密集型工作负载。对于 AWS DMS 工作负载，R7i 实例特别适合处理处理大量并发数据库事务的大型数据库的任务，从而可以高效处理内存密集型复制场景和需要大量内存缓冲区的复杂数据验证过程。

每个复制实例都有特定的内存和 vCPU 配置。下表显示了各复制实例类型的配置。有关定价的信息，请参阅 [AWS Database Migration Service 服务定价页面](https://aws.amazon.com/dms/pricing/)。

**通用复制实例类型**


|  Type  |  vCPU  |  内存（GiB）  | 
| --- | --- | --- | 
|  dms.t3.micro  |  2  |  1  | 
|  dms.t3.small  |  2  |  2  | 
|  dms.t3.medium  |  2  |  4  | 
|  dms.t3.large  |  2  |  8  | 

**计算优化复制实例类型**


|  Type  |  vCPU  |  内存（GiB）  | 
| --- | --- | --- | 
|  dms.c5.large  |  2  |  4  | 
|  dms.c5.xlarge  |  4  |  8  | 
|  dms.c5.2xlarge  |  8  |  16  | 
|  dms.c5.4xlarge  |  16  |  32  | 
|  dms.c5.9xlarge  |  36  | 72 | 
|  dms.c5.12xlarge  |  48  | 96 | 
|  dms.c5.18xlarge  |  72  | 144 | 
|  dms.c5.24xlarge  |  96  | 192 | 
|  dms.c6i.large  |  2  |  4  | 
|  dms.c6i.xlarge  |  4  |  8  | 
|  dms.c6i.2xlarge  |  8  |  16  | 
|  dms.c6i.4xlarge  |  16  |  32  | 
|  dms.c6i.8xlarge  |  32  | 64 | 
|  dms.c6i.12xlarge  |  48  | 96 | 
|  dms.c6i.16xlarge  |  64  | 128 | 
|  dms.c6i.24xlarge  |  96  | 192 | 
|  dms.c6i.32xlarge  |  128  | 256 | 
|  dms.c7i.large  |  2  |  4  | 
|  dms.c7i.xlarge  |  4  |  8  | 
|  dms.x7i.2xlarge  |  8  |  16  | 
|  dms.x7i.4xlarge  |  16  |  32  | 
|  dms.x7i.8xlarge  |  32  |  64  | 
|  dms.x7i.12xlarge  |  48  |  96  | 
|  dms.x7i.16xlarge  |  64  |  128  | 
|  dms.x7i.24xlarge  |  96  |  192  | 
|  dms.x7i.48xlarge  |  192  |  384  | 

**内存优化复制实例类型**


|  Type  |  vCPU  |  内存（GiB）  | 
| --- | --- | --- | 
|  dms.r5.large  |  2  |  16  | 
|  dms.r5.xlarge  |  4  |  32  | 
|  dms.r5.2xlarge  |  8  |  64  | 
|  dms.r5.4xlarge  |  16  |  128  | 
|  dms.r5.8xlarge  |  32  |  256  | 
|  dms.r5.12xlarge  |  48  |  384  | 
|  dms.r5.16xlarge  |  64  |  512  | 
|  dms.r5.24xlarge  |  96  |  768  | 
|  dms.r6i.large  |  2  |  16  | 
|  dms.r6i.xlarge  |  4  |  32  | 
|  dms.r6i.2xlarge  |  8  |  64  | 
|  dms.r6i.4xlarge  |  16  |  128  | 
|  dms.r6i.8xlarge  |  32  |  256  | 
|  dms.r6i.12xlarge  |  48  |  384  | 
|  dms.r6i.16xlarge  |  64  |  512  | 
|  dms.r6i.24xlarge  |  96  |  768  | 
|  dms.r6i.32xlarge  |  128  |  1024  | 
|  dms.r7i.large  |  2  |  16  | 
|  dms.r7i.xlarge  |  4  |  32  | 
|  dms.r7i.2xlarge  |  8  |  64  | 
|  dms.r7i.4xlarge  |  16  |  128  | 
|  dms.r7i.8xlarge  |  32  |  256  | 
|  dms.r7i.12xlarge  |  48  |  384  | 
|  dms.r7i.16xlarge  |  64  |  512  | 
|  dms.r7i.24xlarge  |  96  |  768  | 
|  dms.r7i.48xlarge  |  192  |  1536  | 

上表列出了所有 AWS DMS 复制实例类型，但您所在地区的可用类型可能会有所不同。要查看您所在区域的可用复制实例类型，可以运行以下 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html) 命令：

```
aws dms describe-orderable-replication-instances --region your_region_name
```

**Topics**
+ [决定使用哪个实例类](#CHAP_ReplicationInstance.Types.Deciding)
+ [对可突增性能实例使用无限模式](#CHAP_ReplicationInstance.Types.UnlimitedMode)

## 决定使用哪个实例类
<a name="CHAP_ReplicationInstance.Types.Deciding"></a>

为了帮助确定哪个复制实例类最适合您，让我们来看看 AWS DMS 使用的变更数据捕获 (CDC) 流程。

假设您运行的是完全加载加 CDC 任务（批量加载加持续复制）。在这种情况下，任务有自己的 SQLite 存储库来存储元数据和其他信息。在 AWS DMS 开始满负荷之前，需要执行以下步骤：
+ AWS DMS 开始捕获它正在从源引擎的事务日志中迁移的表的更改（我们称之为*缓存的更改*）。完全加载完成后，将收集这些缓存的更改并将其应用于目标中。根据缓存更改的量，可以直接从内存中应用这些更改，最初在内存中收集更改，并一直收集到设定的阈值。或者，也可以从内存中无法保存更改时将更改写入到的磁盘中应用更改。
+ 应用缓存的更改后，默认情况下 AWS DMS 会在目标实例上启动事务性应用进程。

在应用缓存更改阶段和正在进行的复制阶段， AWS DMS 使用两个流缓冲区，每个缓冲区用于传入和传出数据。 AWS DMS 还使用了一个名为分*拣器的重要组件，*它是另一个内存缓冲区。下面是排序器组件的两个重要用法 (还有其他用法)：
+ 它跟踪所有事务并确保只将相关事务转发至传出缓冲区。
+ 它确保按照与源中相同的提交顺序转发事务。

如您所见，此架构中有三个重要的内存缓冲区用于 AWS DMS中的 CDC。如果任何缓冲区遇到内存压力，迁移可能会出现导致故障的性能问题。

在将每秒事务数（TPS）很高的重型工作负载插入此架构时，您会发现 R5 和 R6i 实例提供的额外内存很有用。您可以使用 R5 和 R6i 实例在内存中保存大量事务，并可避免在持续复制期间出现内存压力问题。

## 对可突增性能实例使用无限模式
<a name="CHAP_ReplicationInstance.Types.UnlimitedMode"></a>

配置为 `unlimited` 的可突增性能实例（例如 T3 实例）可以承受所需的任何时段的高 CPU 利用率。每小时实例价格可以自动涵盖所有 CPU 使用峰值。如果在滚动 24 小时或实例生命周期（以较短者为准）内实例的平均 CPU 使用率等于或低于基准，则会这样处理。

对于绝大多数通用型工作负载，配置为 `unlimited` 的实例可提供足够高的性能，而不会收取任何额外的费用。如果实例长时间以较高的 CPU 利用率运行，可能会按每 vCPU 小时的固定费率收取额外的费用。有关 T3 实例定价的信息，请参阅 [AWS Database Migration Service](https://aws.amazon.com/dms/pricing/) 中的“T3 CPU 积分”。

有关 T3 实例的 `unlimited` 模式的更多信息，请参阅《Amazon EC2 用户指南》**中的[可突增性能实例的无限模式](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances-unlimited-mode.html)。

**重要**  
如果您使用的 `dms.t3.micro` 实例享受 [AWS 免费套餐](https://aws.amazon.com/free/)优惠，并在 `unlimited` 模式下使用该实例，可能会收取相应的费用。特别是，如果连续 24 小时内的平均利用率超过实例的基准利用率，可能需要收取相应费用。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[基准利用率](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html#baseline_performance)。  
T3 实例默认情况下作为 `unlimited` 启动。如果滚动 24 小时内的平均 CPU 使用率超过基准，将会产生超额积分费用。在某些情况下，您可以使用 `unlimited` 模式启动 T3 竞价型实例，并计划立即短时间使用它们。如果您在没有空闲时间来累积 CPU 积分的情况下这样做，则会产生超额积分费用。建议您使用标准模式启动 T3 竞价型实例，以避免支付更高的费用。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[超额积分会产生费用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances-unlimited-mode-concepts.html#unlimited-mode-surplus-credits)、[T3 竞价型实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-limits.html#t3-spot-instances)和[可突增性能实例的标准模式](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances-standard-mode.html)。

# 选择复制实例的最佳大小
<a name="CHAP_BestPractices.SizingReplicationInstance"></a>

如何选择合适的复制实例取决于与您的使用案例相关的多种因素。为帮助您了解如何使用复制实例资源，请参阅以下讨论。其中涵盖了完全加载 \$1 CDC 任务的常见场景。

在满负荷任务期间，单独 AWS DMS 加载表。默认情况下，一次加载八个表。 AWS DMS 捕获满载任务期间对源的持续更改，以便稍后可以在目标端点上应用这些更改。更改缓存在内存中；如果可用内存用完，则将更改缓存到磁盘上。当表的满载任务完成后，会 AWS DMS 立即将缓存的更改应用于目标表。

在应用表的所有未完成的缓存更改后，目标终端节点将处于事务一致状态。此时，目标与源端点在上次缓存的更改方面保持同步。 AWS DMS 然后开始在源和目标之间进行持续复制。为此， AWS DMS 需要从源事务日志中进行更改操作，并以事务一致的方式将其应用于目标。（此过程假设未选择批量优化应用）。 AWS DMS 如果可能，将正在进行的更改流式传输到复制实例上的内存。否则， AWS DMS 会将更改写入复制实例上的磁盘，直到它们可以应用到目标上。

您对复制实例如何应对更改处理以及在该流程中如何使用内存有一定的控制能力。有关如何优化更改处理的更多信息，请参阅[更改处理优化设置](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md)。

## 需要考虑的因素
<a name="CHAP_BestPractices.SizingReplicationInstance.Factors"></a>

 内存和磁盘空间是为使用案例选择合适的复制实例的关键因素。接下来，您可以找到有关使用案例特征的讨论，用于分析和选择复制实例。
+ 数据库和表大小

   数据卷有助于确定可优化完全加载性能的任务配置。例如，对于两个 1 TB 的架构，您可以将表分成四个 500 GB 的任务，然后并行运行这些表。可能的并行度取决于复制实例中可用的 CPU 资源。因此，最好了解数据库和表的大小以优化完全加载性能。它有助于确定您可以执行的任务数。
+ 大型对象

   迁移范围内涵盖的数据类型可能会影响性能。特别是，大型对象 (LOBs) 会影响性能和内存消耗。要迁移 LOB 值，请 AWS DMS 执行两步过程。首先，在目标中 AWS DMS 插入不带 LOB 值的行。其次，使用 LOB 值 AWS DMS 更新该行。这会对内存产生影响，因此识别源中的 LOB 列并分析其大小非常重要。
+ 加载频率和事务大小

   加载频率和每秒事务数（TPS）会影响内存使用情况。大量的 TPS 或数据操作语言（DML）活动会导致内存使用率高。之所以发生这种情况，是因为 DMS 会缓存更改，直到将它们应用于目标。在 CDC 期间，这会执行交换（由于内存溢出而写入物理磁盘），从而导致延迟。
+ 表键和引用完整性

   有关表密钥的信息决定了用于迁移数据的 CDC 模式（批量应用或事务应用）。通常，事务应用比批量应用慢。对于长时间运行的事务，可能需要迁移许多更改。使用事务性应用时，与批处理应用相比， AWS DMS 可能需要更多的内存来存储更改。如果迁移没有主键的表，批量应用将失败，DMS 任务将切换至事务应用模式。如果在 CDC 期间表之间的引用完整性处于活动状态，则默认 AWS DMS 使用事务应用。有关批量应用与事务应用的更多对比信息，请参阅[如何使用 DMS 批量应用功能来提高 CDC 复制性能？](https://aws.amazon.com/premiumsupport/knowledge-center/dms-batch-apply-cdc-replication/)。

 使用这些指标来确定您需要对复制实例进行计算优化还是内存优化。

## 常见问题
<a name="CHAP_BestPractices.SizingReplicationInstance.Issues"></a>

 在迁移过程中，您可能会遇到以下导致复制实例资源争用的常见问题。有关复制实例指标的信息，请参阅[复制实例指标](CHAP_Monitoring.md#CHAP_Monitoring.Metrics.CloudWatch)。
+  如果复制实例的内存不足，则会导致向磁盘写入数据。从磁盘读取数据可能会导致延迟，您可以通过使用足够的内存调整复制实例的大小来避免延迟。
+  分配给复制实例的磁盘大小可以小于所需的容量。当内存中的数据溢出时，会使用磁盘大小；它也用于存储任务日志。最大 IOPS 也取决于它。
+  运行多个任务或高度并行的任务会影响复制实例的 CPU 消耗。这会减慢任务的处理速度并导致延迟。

## 最佳实践
<a name="CHAP_BestPractices.SizingReplicationInstance.BestPractices"></a>

 在调整复制实例规模时，请考虑这两种最常见的最佳做法。有关更多信息，请参阅 [的最佳实践 AWS Database Migration Service](CHAP_BestPractices.md)。

1.  调整工作负载大小，了解工作负载是计算机密集型还是内存密集型。在此基础上，您可以确定复制实例的类和大小：
   +  AWS DMS 内存 LOBs 中的进程。此操作需要占用相当多的内存。
   +  任务数和线程数会影响 CPU 消耗。在完全加载运行期间，避免使用超过八个 `MaxFullLoadSubTasks`。

1.  当您在完全加载期间工作负载较高时，请增加分配给复制实例的磁盘空间。这样做可以让复制实例使用为其分配的最大 IOPS。

 前面的准则并未涵盖所有可能的场景。在确定复制实例的大小时，考虑特定使用案例的具体细节至关重要。

 前面的测试表明，CPU 和内存因工作负载不同而异。特别是， LOBs 会影响内存，任务计数或并行度会影响 CPU。开始运行迁移之后，请监控 CPU、可释放内存、空闲存储以及复制实例的 IOPS。根据您收集的数据，您可以视根据增加或减小复制实例的大小。

# 使用复制引擎版本
<a name="CHAP_ReplicationInstance.EngineVersions"></a>

*复制引擎*是在您的复制实例上运行并执行您指定的迁移任务的核心 AWS DMS 软件。 AWS 定期发布具有新功能和性能改进的 AWS DMS 复制引擎软件的新版本。每个版本的复制引擎软件具有自己的版本号以区别于其他版本。

除非您另行指定，否则当您启动新的复制实例时，它将运行最新的 AWS DMS 引擎版本。有关更多信息，请参阅 [使用 AWS DMS 复制实例](CHAP_ReplicationInstance.md)。

如果您的复制实例当前正在运行，则可以将其升级到更新的引擎版本。 （AWS DMS 不支持引擎版本降级。） 有关复制引擎版本的更多信息，请参阅 [AWS DMS 发行说明](CHAP_ReleaseNotes.md)。

## 使用控制台升级引擎版本
<a name="Upgrading.Console"></a>

您可以使用升级 AWS DMS 复制实例 AWS 管理控制台。

**使用控制台升级复制实例**

1. 在 [https://console.aws.amazon.com/dms/v2 AWS DMS](https://console.aws.amazon.com/dms/v2/)/处打开控制台。

1. 在导航窗格中，选择**复制实例**。

1. 选择您的复制引擎，然后选择**修改**。

1. 对于**引擎版本**，请选择所需的版本号，然后选择**修改**。

**注意**  
我们建议您在升级复制实例之前停止所有任务。如果您不停止任务， AWS DMS 将在升级之前自动停止任务。如果您手动停止任务，则需在升级完成后手动启动任务。复制实例升级需要几分钟的时间。在实例准备就绪后，其状态将变为**可用**。

## 使用升级引擎版本 AWS CLI
<a name="Upgrading.CLI"></a>

您可以使用升级 AWS DMS 复制实例 AWS CLI，如下所示。

**要升级复制实例，请使用 AWS CLI**

1. 使用以下命令确定您的复制实例的 Amazon 资源名称 (ARN)。

   ```
   aws dms describe-replication-instances \
   --query "ReplicationInstances[*].[ReplicationInstanceIdentifier,ReplicationInstanceArn,ReplicationInstanceClass]"
   ```

   在输出中，记下要升级的复制实例的ARN，例如：`arn:aws:dms:us-east-1:123456789012:rep:6EFQQO6U6EDPRCPKLNPL2SCEEY`

1. 使用以下命令确定可用的复制实例版本。

   ```
   aws dms describe-orderable-replication-instances \
   --query "OrderableReplicationInstances[*].[ReplicationInstanceClass,EngineVersion]"
   ```

   在输出中，记下适用于您的复制实例类的引擎版本号。您应该会在步骤 1 的输出中看到此信息。

1. 使用以下命令升级复制实例。

   ```
   aws dms modify-replication-instance \
   --replication-instance-arn arn \
   --engine-version n.n.n
   ```

   将前面的内容替换为上一步*arn*中的实际复制实例 ARN。

   *n.n.n *替换为所需的引擎版本号，例如：`3.4.5`

**注意**  
复制实例升级需要几分钟的时间。您可以使用以下命令查看复制实例状态。  

```
aws dms describe-replication-instances \
--query "ReplicationInstances[*].[ReplicationInstanceIdentifier,ReplicationInstanceStatus]"
```
在复制实例准备就绪后，其状态将变为**可用**。

# 公有和私有复制实例
<a name="CHAP_ReplicationInstance.PublicPrivate"></a>

您可以指定复制实例在连接到源和目标数据库时使用公有还是私有 IP 地址。

*私有复制实例*具有无法从复制网络之外访问的私有 IP 地址。当源数据库和目标数据库位于连接到复制实例的虚拟私有云（VPC）的同一网络中时，您可以使用私有实例。可以使用虚拟专用网络 (VPN) 或 VPC 对等连接将网络连接到 VPC。 Direct Connect

*VPC 对等*连接是两 VPCs者之间的网络连接。此连接允许使用每个 VPC 的私有 IP 地址进行路由，就像位于同一个网络中一样。有关 VPC 对等连接的更多信息，请参阅《Amazon VPC 用户指南》中的 [VPC 对等连接](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-peering.html)**。

*公有复制实例*可以使用复制实例的 VPC 安全组，以及复制实例的公有 IP 地址或 NAT 网关的公有 IP 地址。这些连接构成了您用于数据迁移的网络。

# IP 地址和网络类型
<a name="CHAP_ReplicationInstance.IPAddressing"></a>

AWS DMS 始终在亚马逊虚拟私有云 (VPC) 中创建您的复制实例。创建 VPC 时，您可以确定要使用的 IP 地址：任一 IPv4 或 IPv6两者兼而有之。然后，在创建或修改复制实例时，您可以使用*双栈模式*指定使用 IPv4 IPv6 地址协议或地址协议。

**IPv4 地址**

创建 VPC 时，您可以采用无类域间路由 (CIDR) 块的形式为 VPC 指定 IPv4 地址范围，例如 10.0.0.0/16。子网组定义此 CIDR 块中的 IP 地址范围。这些 IP 地址可以是私有地址，也可以是公有地址。

私有 IPv4 地址是指无法通过 Internet 访问的 IP 地址。您可以使用私有 IPv4 地址在位于同一 VPC 中的复制实例和其他资源（如 Amazon EC2 实例）之间进行通信。每个复制实例都有一个用于在 VPC 中通信的私有 IP 地址。

公有 IP IPv4 地址是可以从互联网访问的地址。您可以使用公用地址在您的复制实例和 Internet 上的资源之间进行通信。您可以控制复制实例是否接收公有 IP 地址。

**双栈模式和地址 IPv6 **

当您的资源必须通过复制实例进行通信时 IPv6，请使用*双堆栈模式*。要使用双堆栈模式，请确保与复制实例关联的子网组中的每个子网都有一个与之关联的 IPv6 CIDR 块。您可以创建新的复制子网组或修改现有复制子网组来满足此要求。每个 IPv6 地址都是全球唯一的。您的 VPC 的 IPv6 CIDR 块是从 Amazon IPv6 地址池中自动分配的。您不能自行选择范围。

DMS 禁止私有双栈模式复制实例的 IPv6 端点访问 Internet Gateway。DMS 这样做是为了确保您的 IPv6 终端节点是私有的，并且只能从您的 VPC 内部进行访问。

您可以使用 AWS DMS 控制台创建或修改复制实例，并在**网络类型**部分指定双堆栈模式。下图显示了控制台中的 **Network type**（网络类型）部分。

![\[AWS 数据库迁移服务 Service 网络类型\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-network-type.png)


**参考**
+ 有关 IPv4 和 IPv6 地址的模式信息，请参阅 *Amazon VPC 用户指南*中的 [IP](https://docs.aws.amazon.com/vpc/latest/userguide/how-it-works.html#vpc-ip-addressing) 地址。
+ 有关使用双堆栈模式创建复制实例的更多信息，请参阅[创建复制实例](CHAP_ReplicationInstance.Creating.md)。
+ 有关修改复制实例的更多信息，请参阅[修改复制实例](CHAP_ReplicationInstance.Modifying.md)。

# 为复制实例设置网络
<a name="CHAP_ReplicationInstance.VPC"></a>

AWS DMS 始终在基于 Amazon VPC 的 VPC 中创建复制实例。您可以指定复制实例所在的 VPC。您可以为您的账户和 AWS 地区使用默认 VPC，也可以创建新的 VPC。

确保为复制实例的 VPC 分配的弹性网络接口与安全组关联。此外，请确保此安全组的规则允许所有端口上的所有流量流出（出口）VPC。使用此方法，如果端点上启用了正确的传出规则，就允许从复制实例与您的源和目标数据库端点通信。我们建议您为终端节点使用默认设置，这允许在所有端口上传出到所有地址。

源和目标终端节点连接到 VPC 或者位于 VPC 内部，以此来访问位于 VPC 内部的复制实例。数据库端点必须包括允许从复制实例进行传入访问的网络访问控制列表 (ACLs) 和安全组规则（如果适用）。如何进行此项设置取决于您使用的网络配置。您可以使用复制实例 VPC 安全组、复制实例的私有或公有 IP 地址或者 NAT 网关的公有 IP 地址。这些连接构成了您用于数据迁移的网络。

**注意**  
由于 IP 地址可能会因底层基础设施的变化而发生变化，因此我们建议您使用 VPC CIDR 范围，或者通过与 NAT GW 关联的弹性 IP 路由复制实例的出站流量。有关创建 VPC（包括 CIDR 块）的更多信息，请参阅 *Amazon Virtual Private Cloud 用户*指南中的使用[ VPCs 和子网](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html)。有关弹性 IP 地址的更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》**中的[弹性 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-ip-addresses-eip.html)。

## 数据库迁移的网络配置
<a name="CHAP_ReplicationInstance.VPC.Configurations"></a>

您可以在 D AWS atabase Migration Service 中使用几种不同的网络配置。以下是用于数据库迁移的常见网络配置。

**Topics**
+ [一个 VPC 中具有所有数据库迁移组件的配置](#CHAP_ReplicationInstance.VPC.Configurations.ScenarioAllVPC)
+ [多重配置 VPCs](#CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCPeer)
+ [共享配置 VPCs](#CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCShared)
+ [使用 Direct Connect 或 VPN 配置到 VPC 的网络](#CHAP_ReplicationInstance.VPC.Configurations.ScenarioDirect)
+ [使用 Internet 连接 VPC 的网络配置](#CHAP_ReplicationInstance.VPC.Configurations.ScenarioInternet)
+ [使用不在 VPC 中的 RDS 数据库实例与 VPC 中的数据库实例进行配置 ClassicLink](#CHAP_ReplicationInstance.VPC.Configurations.ClassicLink)
+ [连接到 AWS 服务的网络的配置](#CHAP_ReplicationInstance.VPC.Configurations.networkconnecting)
+ [使用 VPC 终端节点连接到 AWS 服务的网络的配置](#CHAP_ReplicationInstance.VPC.Configurations.vpcendpoints)
+ [使用互联网连接到 AWS 服务的网络的配置](#CHAP_ReplicationInstance.VPC.Configuration.networkconnectingusinginternet)

如果可行，我们建议您在与目标端点所在的相同区域以及相同 VPC 或子网中创建 DMS 复制实例。

### 一个 VPC 中具有所有数据库迁移组件的配置
<a name="CHAP_ReplicationInstance.VPC.Configurations.ScenarioAllVPC"></a>

对于数据库迁移而言，最简单的网络是源终端节点、复制实例和目标终端节点都位于同一个 VPC 中。当源和目标端点均位于 Amazon RDS 数据库实例或 Amazon EC2 实例上时，此配置非常合适。

下图显示了位于 Amazon EC2 实例上的数据库连接到复制实例并将数据迁移到 Amazon RDS 数据库实例的配置。

![\[AWS Database Migration Service 一体化 VPC 示例\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-scenarioAllVPC.png)


此配置中使用的 VPC 安全组必须允许从复制实例向数据库端口的传入。可以通过多种方式执行此操作。您可以确保复制实例使用的安全组可以传入端点。或者，如果您正在使用复制实例，则可以允许复制实例的 VPC CIDR 范围、NAT GW 弹性 IP 或私有 IP 地址。但是我们不建议您使用复制实例的私有 IP 地址，因为如果复制 IP 地址发生变化，它可能中断您的复制。

### 多重配置 VPCs
<a name="CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCPeer"></a>

如果您的源终端节点和目标终端节点不同 VPCs，则可以在其中一个中创建复制实例 VPCs。然后，您可以使用 VPC 对等连接将两 VPCs 者联系起来。

VPC 对等连接是两者之间的网络连接 VPCs ，它允许使用每个 VPC 的私有 IP 地址进行路由，就像它们在同一个网络中一样。您可以在自己的 VPCs、与另一个 AWS 账户中的 VPC 或不同 AWS 区域的 VPC 之间创建 VPC 对等连接。有关 VPC 对等连接的更多信息，请参阅《Amazon VPC 用户指南》中的 [VPC 对等连接](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-peering.html)**。

下图显示了一个使用 VPC 对等连接的示例配置。在此处，VPC 中 Amazon EC2 实例上的源数据库通过 VPC 对等连接来连接到 VPC。此 VPC 包含 Amazon RDS 数据库实例上的复制实例和目标数据库。

![\[AWS 数据库 Migration Service 复制实例\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-scenarioVPCPeer.png)


要实现 VPC 对等连接，请按照《Amazon Virtual Private Cloud VPC 对等连接》**文档中的[使用 VPC 对等连接](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html)说明进行操作。请确保一个 VPC 的路由表中包含另一个 VPC 的 CIDR 块。例如，如果 VPC A 使用目标 10.0.0.0/16，而 VPC B 使用目标 172.31.0.0，则 VPC A 的路由表应包含 172.31.0.0，VPC B 的路由表必须包含 10.0.0.0/16。有关更多详细信息，请参阅《Amazon Virtual Private Cloud VPC 对等连接》**文档中的[更新 VPC 对等连接的路由表](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html)。

此配置中使用的 VPC 安全组必须允许从复制实例向数据库端口的传入，还应允许具有对等关系的 VPC 上 CIDR 块的传入。

### 共享配置 VPCs
<a name="CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCShared"></a>

AWS DMS 将共享给组织中参与客户账户的子网视为同一账户中的普通子网。下面描述了如何 AWS DMS 处理 VPCs、子网以及如何使用共享 VPCs。

您可以将网络配置配置为在自定义子网中运行，也可以 VPCs 通过创建`ReplicationSubnetGroup`对象进行配置。创建 `ReplicationSubnetGroup` 时，您可以选择指定账户中特定 VPC 的子网。您指定的子网列表必须包括至少两个位于不同可用区的子网，并且所有子网都必须位于同一 VPC 中。在创建时`ReplicationSubnetGroup`，客户只能指定子网。 AWS DMS 将代表您确定 VPC，因为每个子网仅链接到一个 VPC。

创建 AWS DMS `ReplicationInstance`或时 AWS DMS `ReplicationConfig`，您可以选择指定在其中运行`ReplicationInstance`或无服务器复制的 VPC 安全组。`ReplicationSubnetGroup` and/or 如果未指定，则 AWS DMS 选择客户默认值`ReplicationSubnetGroup`（如果未为默认 VPC 中的所有子网指定，则代表您 AWS DMS 创建）和默认 VPC 安全组。

您可以选择在您指定的可用区中运行迁移，也可以选择在 `ReplicationSubnetGroup` 中的任何可用区中运行迁移。当 AWS DMS 尝试创建复制实例或启动无服务器复制时，它会将您的子网的可用区转换为核心服务账户中的可用区，以确保即使两个账户之间的可用区域映射不相同，我们也能在正确的可用区中启动实例。

如果您使用共享 VPC，则需确保创建映射到您希望从共享 VPC 使用的子网的 `ReplicationSubnetGroup` 对象。创建 `ReplicationInstance` 或 `ReplicationConfig` 时，必须为共享 VPC 指定 `ReplicationSubnetGroup`，并在创建请求中指定您为共享 VPC 创建的 VPC 安全组。

请注意以下有关使用共享 VPC 的注意事项：
+ VPC 所有者不能与参与者共享资源，但参与者可以在所有者的子网中创建服务资源。
+ VPC 所有者无法访问参与者创建的资源（例如复制实例），因为所有资源都是特定于账户的。但是，只要您在共享 VPC 中创建复制实例，并且复制端点或任务具有正确的权限，它就可以访问 VPC 中的资源，而不管拥有哪个账户。
+ 由于资源是特定于账户的，因此其他参与者无法访问其他账户拥有的资源。您无法向其他账户授予任何权限，允许他们使用您的账户访问在共享 VPC 中创建的资源。

### 使用 Direct Connect 或 VPN 配置到 VPC 的网络
<a name="CHAP_ReplicationInstance.VPC.Configurations.ScenarioDirect"></a>

远程网络可以使用多种选项连接到 VPC，例如 Di AWS rect Connect 或软件或硬件 VPN 连接。这些选项通常将内部网络扩展到 AWS 云来集成现有现场服务，例如监控、身份验证、安全、数据或其他系统。使用此类型的网络扩展，您可以无缝连接到 AWS托管的资源，例如 VPC。

下图显示了源终端节点是公司数据中心内本地数据库的配置。它使用 Direct Connect 或 VPN 连接到 Amazon RDS 数据库实例上包含复制实例和目标数据库的 VPC。

![\[AWS 数据库 Migration Service 复制实例\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-scenarioDirect.png)


在此配置中，VPC 安全组必须包含一个路由规则，即，将以 VPC CIDR 范围或特定 IP 地址为目标的流量发送到主机。此主机必须能够将流量从 VPC 桥接到本地 VPN 中。在这种情况下，NAT 主机包括自己的安全组设置。这些设置必须允许来自复制实例的 VPC CIDR 范围、私有 IP 地址或安全组的流量进入 NAT 实例。但是我们不建议您使用复制实例的私有 IP 地址，因为如果复制 IP 地址发生变化，它可能中断您的复制。

### 使用 Internet 连接 VPC 的网络配置
<a name="CHAP_ReplicationInstance.VPC.Configurations.ScenarioInternet"></a>

如果您不使用 VPN 或 Direct Connect 不连接 AWS 资源，则可以使用互联网迁移数据库。在这种情况下，您可以迁移到 Amazon EC2 实例或 Amazon RDS 数据库实例。此配置涉及到带有 Internet 网关的 VPC 中的公有复制实例，该 VPC 中包含目标终端节点和复制实例。

![\[AWS 数据库 Migration Service 复制实例\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-scenarioInternet.png)


要将互联网网关添加到 VPC，请参阅《Amazon VPC 用户指南》中的[连接互联网网关](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#Add_IGW_Attach_Gateway)**。

VPC 路由表必须包含一个路由规则，即，将并非以 VPC 为目标的流量默认发送到互联网网关。在此配置中，与终端节点的连接将显示为来自复制实例的公有 IP 地址，而非私有 IP 地址。有关更多信息，请参阅《Amazon VPC 用户指南》中的 [VPC 路由表](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html)**。

### 使用不在 VPC 中的 RDS 数据库实例与 VPC 中的数据库实例进行配置 ClassicLink
<a name="CHAP_ReplicationInstance.VPC.Configurations.ClassicLink"></a>


|  | 
| --- |
| 我们将于 2022 年 8 月 15 日停用 EC2-Classic。我们建议您从 EC2-Classic 迁移到 VPC。有关更多信息，请参阅《Amazon EC2 用户指南》中的[从 EC2-Classic 迁移到 VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) 和博客 [EC2-Classic Networking is Retiring – Here’s How to Prepare](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/)。 | 

要将不在 VPC 中的 Amazon RDS 数据库实例连接到 DMS 复制服务器和 VPC 中的数据库实例 ClassicLink ，您可以使用代理服务器。

ClassicLink 使您能够将 EC2-Classic 数据库实例关联到同一 AWS 区域内您账户中的 VPC。在您创建了链接之后，源数据库实例可以与 VPC 中的复制实例通过其私有 IP 地址进行通信。

由于 VPC 中的复制实例无法使用直接访问 EC2-Classic 平台上的源数据库实例 ClassicLink，因此您可以使用代理服务器。代理服务器将源数据库实例连接到包含复制实例和目标数据库实例的 VPC。代理服务器用于连接 ClassicLink 到 VPC。代理服务器上的端口转发允许源数据库实例与 VPC 中的目标数据库实例之间的通信。

![\[AWS 数据库迁移服务使用 ClassicLink\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-scenarioClassicLink.png)


#### 使用 D AWS atabas ClassicLink e Migration Service
<a name="CHAP_ReplicationInstance.VPC.Configurations.ClassicLink.Using"></a>

您可以将不在 VPC 中的 Amazon RDS 数据库实例连接到位于 VPC 中的 AWS DMS 复制服务器和数据库实例。为此，您可以将 Amazon EC2 ClassicLink 与代理服务器一起使用。

以下过程说明如何 ClassicLink 用于此目的。此过程将不在 VPC 中的 Amazon RDS 源数据库实例连接到包含 AWS DMS 复制实例和目标数据库实例的 VPC。
+ 在 VPC 中创建 AWS DMS 复制实例。（所有复制实例都是在中创建的 VPCs。）
+ 将 VPC 安全组与复制实例和目标数据库实例关联。当两个实例共享一个 VPC 安全组时，默认情况下，它们可以相互通信。
+ 在 EC2 Classic 实例上设置代理服务器。
+ 在代理服务器和 VPC ClassicLink 之间使用创建连接。
+ 为源数据库和目标数据库创建 AWS DMS 端点。
+ 创建 AWS DMS 任务。

**用于 ClassicLink 将不在 VPC 中的数据库实例上的数据库迁移到 VPC 中数据库实例上的数据库**

1. 创建 AWS DMS 复制实例并分配 VPC 安全组：

   1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2/)/上打开 AWS DMS 控制台。

      如果您以 AWS Identity and Access Management (IAM) 用户身份登录，请确保您拥有相应的访问权限 AWS DMS。有关数据库迁移所需权限的更多信息，请参阅 [使用所需的 IAM 权限 AWS DMS](security-iam.md#CHAP_Security.IAMPermissions)。

   1. 在**控制面板**页中，选择**复制实例**。按照[步骤 1：使用 AWS DMS 控制台创建复制实例](CHAP_GettingStarted.Replication.md#CHAP_GettingStarted.Replication.ReplicationInstance)中的说明操作来创建复制实例。

   1.  创建 AWS DMS 复制实例后，打开 EC2 服务控制台。从导航窗格中选择**网络接口**。

   1. 选择*DMSNetwork接口*，然后从 “**操作**” 菜单中选择 “**更改安全组**”。

   1. 选择要用于复制实例和目标数据库实例的安全组。

1.  将最后一步中的安全组与目标数据库实例关联：

   1. 打开 Amazon RDS 服务控制台。从导航窗格中选择**实例**。

   1.  选择目标数据库实例。在**实例操作**中，选择**修改**。

   1. 对于**安全组**参数，请选择在上一步中使用的安全组。

   1. 选择**继续**，然后选择**修改数据库实例**。

1. 步骤 3：使用 NGINX 在 EC2 Classic 实例上设置代理服务器。使用您选择的 AMI 启动 EC2 Classic 实例。下面的示例基于 AMI Ubuntu Server 14.04 LTS (HVM)。

   在 EC2 Classic 实例上设置代理服务器

   1. 使用以下命令连接到 EC2 Classic 实例并安装 NGINX：

      ```
      Prompt> sudo apt-get update
      Prompt> sudo wget http://nginx.org/download/nginx-1.9.12.tar.gz
      Prompt> sudo tar -xvzf nginx-1.9.12.tar.gz 
      Prompt> cd nginx-1.9.12
      Prompt> sudo apt-get install build-essential
      Prompt> sudo apt-get install libpcre3 libpcre3-dev
      Prompt> sudo apt-get install zlib1g-dev
      Prompt> sudo ./configure --with-stream
      Prompt> sudo make
      Prompt> sudo make install
      ```

   1.  使用以下代码编辑 NGINX 守护程序文件 `/etc/init/nginx.conf`：

      ```
      # /etc/init/nginx.conf – Upstart file
      
      description "nginx http daemon"
      author "email"
      
      start on (filesystem and net-device-up IFACE=lo)
      stop on runlevel [!2345]
      
      env DAEMON=/usr/local/nginx/sbin/nginx
      env PID=/usr/local/nginx/logs/nginx.pid
      
      expect fork
      respawn
      respawn limit 10 5
      
      pre-start script
              $DAEMON -t
              if [ $? -ne 0 ]
                      then exit $?
              fi
      end script
      
      exec $DAEMON
      ```

   1. 在 `/usr/local/nginx/conf/nginx.conf` 中创建 NGINX 配置文件。在配置文件中，添加以下内容：

      ```
      # /usr/local/nginx/conf/nginx.conf - NGINX configuration file
      
      worker_processes  1;
      
      events {
          worker_connections  1024;
      }
      
      stream {
        server {
          listen DB instance port number;
      proxy_pass DB instance identifier:DB instance port number;
          }
      }
      ```

   1. 从命令行中，使用以下命令启动 NGINX：

      ```
      Prompt> sudo initctl reload-configuration
      Prompt> sudo initctl list | grep nginx
      Prompt> sudo initctl start nginx
      ```

1. 在代理服务器和包含目标数据库实例和复制实例的目标 VPC 之间创建 ClassicLink 连接：

   1. 打开 EC2 控制台，并选择正在运行代理服务器的 EC2 Classic 实例。

   1. 对于 “**操作**”，选择 **ClassicLink**，然后选择 “**链接到 VPC**”。

   1.  选择本过程中前面使用的安全组。

   1. 选择**链接到 VPC**。

1. 步骤 5：使用中的步骤创建 AWS DMS 端点。[步骤 2：指定源和目标端点](CHAP_GettingStarted.Replication.md#CHAP_GettingStarted.Replication.Endpoints)在指定源端点时，请确保将代理的内部 EC2 DNS 主机名作为服务器名称。

1. 使用中的步骤创建 AWS DMS 任务。[步骤 3：创建任务并迁移数据](CHAP_GettingStarted.Replication.md#CHAP_GettingStarted.Replication.Tasks)

### 连接到 AWS 服务的网络的配置
<a name="CHAP_ReplicationInstance.VPC.Configurations.networkconnecting"></a>

要连接 AWS 服务，请使用互联网连接或虚拟私有云 (VPC) 终端节点。这适用于以下情况：

您的源端点或目标端点使用以下 AWS 服务：  
+ AWS Secrets Manager
+ Amazon Simple Storage Service

您的目标终端节点是一项 AWS 服务，例如：  
+ Amazon S3
+ Amazon Kinesis
+ Amazon DynamoDB
+ Amazon Redshift
+ 亚马逊 OpenSearch 服务
+ Amazon Athena

### 使用 VPC 终端节点连接到 AWS 服务的网络的配置
<a name="CHAP_ReplicationInstance.VPC.Configurations.vpcendpoints"></a>

VPC 终端节点可在您的 AWS 资源之间提供安全的连接，无需访问互联网即可将 VPC 资源连接到 AWS 服务。私有子网中的应用程序可以访问 AWS 服务，同时保持在 AWS 网络内，从而提高安全性并减少延迟。请参考下图：

![\[\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/aws_dms_vpc_endpoints.jpg)


有关更多信息，请参阅[将 VPC 终端节点配置为 AWS DMS 源和目标终端节点和](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_VPC_Endpoints.html)[配置 s AWS DMS ecrets Manager VPC 终端节点](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Advanced.Endpoints.secretsmanager.html)。

### 使用互联网连接到 AWS 服务的网络的配置
<a name="CHAP_ReplicationInstance.VPC.Configuration.networkconnectingusinginternet"></a>

在数据迁移期间，复制实例需要访问互联网才能连接 AWS 资源。

有关 VPC 内私有子网和公有子网的更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》**中的[示例：在私有子网中部署服务器并且具有 NAT 中的 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html)。您必须确保测试您的网络配置，以确保其能连接到任何必需的服务。

## 创建复制子组
<a name="CHAP_ReplicationInstance.VPC.Subnets"></a>

作为数据库迁移所用网络的一部分，您需要指定计划在虚拟私有云（VPC）中使用的子网。此 VPC 必须基于 Amazon VPC 服务。*子网* 是在指定可用区中您的 VPC 内的 IP 地址范围。这些子网可以分布在您的 VPC 所在 AWS 区域的可用区中。

在 AWS DMS 控制台中创建复制实例或实例配置文件时，您可以使用您选择的子网。

您创建复制子网组来定义要使用的子网。您必须指定至少位于两个可用区中的子网。

**创建复制子网组**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2/)/上打开 AWS DMS 控制台。

   如果以 IAM 用户身份登录，请确保具有适当的 AWS DMS访问权限。有关数据库迁移所需权限的更多信息，请参阅 [使用所需的 IAM 权限 AWS DMS](security-iam.md#CHAP_Security.IAMPermissions)。

1. 在导航窗格中，选择**子网组**。

1. 选择 **Create subnet group (创建子网组)**。

1. 在**创建复制子网组**页中，指定您的复制子网组信息。下表描述了设置。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html)

1. 选择 **Create subnet group (创建子网组)**。

## 使用 DNS 解析域端点
<a name="CHAP_ReplicationInstance.VPC.Route53"></a>

通常， AWS DMS 复制实例使用 Amazon EC2 实例中的域名系统 (DNS) 解析器来解析域终端节点。如果您需要 DNS 解析，可以使用 Amazon Route 53 Resolver。有关使用 Route 53 DNS 解析程序的更多信息，请参阅 [Route 53 Resolver 入门](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-getting-started.html)。

有关如何使用您自己的本地名称服务器通过 Amazon Route 53 Resolver 解析某些端点的信息，请参阅[使用您自己的本地名称服务器](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver)。

# 为复制实例设置加密密钥
<a name="CHAP_ReplicationInstance.EncryptionKey"></a>

AWS DMS 对复制实例使用的存储空间和端点连接信息进行加密。为了加密复制实例使用的存储， AWS DMS 使用您的 AWS 账户独有的存储。 AWS KMS key 您可以使用 AWS Key Management Service (AWS KMS) 查看和管理此 KMS 密钥。您可以使用您账户（`aws/dms`）中的默认 KMS 密钥，也可以自行创建 KMS 密钥。如果您已有 AWS KMS 加密密钥，也可以使用该密钥进行加密。

您可以通过提供 KMS 密钥标识符来加密您的 AWS DMS 资源来指定自己的加密密钥。在您指定自己的加密密钥时，执行数据库迁移所用的用户账户必须具有对该密钥的访问权限。有关创建您自己的加密密钥以及向用户提供对加密密钥访问权限的更多信息，请参阅 *[AWS KMS 开发人员指南](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)*。

如果您未指定 KMS 密钥标识符，则 AWS DMS 将使用您的默认加密密钥。KMS 为您的 AWS 账户创建 AWS DMS 的默认加密密钥。您的 AWS 账户在每个 AWS 区域都有不同的默认加密密钥。

要管理用于加密 AWS DMS 资源的密钥，可以使用。 AWS KMS您可以 AWS 管理控制台 通过 AWS KMS 在导航窗格中搜索 **KMS** 来查找。

AWS KMS 将安全、高度可用的硬件和软件相结合，提供可扩展到云端的密钥管理系统。使用 AWS KMS，您可以创建加密密钥并定义控制如何使用这些密钥的策略。 AWS KMS 支持 AWS CloudTrail，因此您可以审核密钥使用情况，以验证密钥的使用是否正确。您的 AWS KMS 密钥可以与 AWS DMS 和其他支持的 AWS 服务结合使用。支持的 AWS 服务包括 Amazon RDS、Amazon S3、Amazon Elastic Block Store（Amazon EBS）和 Amazon Redshift。

使用特定加密密钥创建 AWS DMS 资源后，您无法更改这些资源的加密密钥。在创建 AWS DMS 资源之前，请务必确定您的加密密钥要求。

# 创建复制实例
<a name="CHAP_ReplicationInstance.Creating"></a>

迁移数据的第一个任务是创建复制实例。此复制实例具有足够的存储和处理能力来执行您分配的任务，并将数据从源数据库迁移至目标数据库。此实例的所需大小是变化的，具体取决于需迁移的数据量和需要实例执行的任务数。有关复制实例的更多信息，请参阅[使用 AWS DMS 复制实例](CHAP_ReplicationInstance.md)。

**使用 AWS 控制台创建复制实例**

1. 在 AWS DMS 控制台的导航窗格中选择 “**复制实例**”，然后选择 “**创建复制实例**”。

1. 在**创建复制实例**页中，指定您的复制实例信息。下表描述了可以配置的设置。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_ReplicationInstance.Creating.html)

1. 选择 **Advanced (高级)** 选项卡以设置网络和加密设置值（如果需要）。下表描述了设置。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_ReplicationInstance.Creating.html)

1. 指定**维护**设置。下表描述了设置。有关维护设置的更多信息，请参阅 [使用 AWS DMS 维护窗口](CHAP_ReplicationInstance.MaintenanceWindow.md)。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_ReplicationInstance.Creating.html)

1. 选择**创建复制实例**。

# 修改复制实例
<a name="CHAP_ReplicationInstance.Modifying"></a>

您可以修改复制实例设置以更改实例类或增加存储 (举例)。

在修改复制实例时，您可以立即应用更改。要立即应用更改，请选中 AWS 管理控制台中的**立即应用更改**选项。或者在调用时使用`--apply-immediately`参数 AWS CLI，或者在使用 DMS API `true` 时将`ApplyImmediately`参数设置为。

如果您没有选择立即应用更改，更改将被放置在等待修改队列中。队列中的所有等待更改都将在下一维护时段应用。

**注意**  
如果您选择立即应用更改，也将同时应用等待修改队列中的所有更改。如果任何待处理修改需要停机，选择**立即应用更改**可能导致意外停机。

**使用 AWS 控制台修改复制实例**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2/)/上打开 AWS DMS 控制台。

1. 在导航窗格中，选择**复制实例**。

1. 选择要修改的复制实例。下表描述了可进行的修改。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_ReplicationInstance.Modifying.html)

## 修改复制实例时的最佳实践
<a name="CHAP_ReplicationInstance.Modifying.best.practice"></a>

修改复制实例时，遵循这些最佳实践有助于确保成功更新，同时尽可能降低对迁移工作流程的影响。在修改之前、修改期间和修改后采取以下关键步骤，以在整个过程中保持数据的完整性和运营效率。

**计划修改时间：**  
+ 您可以立即应用更改，也可以将其安排到下一个维护时段。
+ 安排在流量较低的时段可最大限度降低影响。

**修改前步骤：**  
+ 停止所有正在进行的复制任务。
+ 验证所有任务都已成功停止。
+ 记录当前的配置任务设置。

**修改过程中：**  
+ 监控修改进度。
+ 等待“可用”状态后再继续。

**修改后的步骤：**  
+ 恢复所有先前停止的任务。
+ 确认任务运行正常。

# 重启复制实例
<a name="CHAP_ReplicationInstance.Rebooting"></a>

您可以重启 AWS DMS 复制实例以重新启动复制引擎。重启会导致复制实例的短暂中断，在此期间此实例状态会设置为**重启中**。如果 AWS DMS 实例配置为多可用区，则可以通过故障转移进行重启。重新启动完成后会创建一个 AWS DMS 事件。

如果您的 AWS DMS 实例是多可用区部署，则可以在重启时强制按计划从一个 AWS 可用区转移到另一个可用区。当您强制对 AWS DMS 实例进行计划内故障转移时，会先 AWS DMS 关闭当前实例上的活动连接，然后自动切换到另一个可用区域中的备用实例。使用计划内故障转移重新启动可以帮助您模拟 AWS DMS 实例的计划内故障转移事件，例如扩展复制实例类别时。

**注意**  
当重新启动强制执行从一个可用区到另一个可用区的失效转移后，可用区更改可能要过几分钟才会反映出来。这种延迟出现在对 AWS 管理控制台 AWS CLI 和 AWS DMS API 的调用中。

如果重启时正在复制实例上运行迁移任务，则不会发生数据丢失，但任务会停止，任务状态将更改为错误状态。

如果迁移任务中的表处于批量加载（完全加载阶段）并且尚未启动，它们就会进入错误状态。但当时已完成的表仍处于完成状态。在完全加载阶段重启时，我们建议您执行以下任一步骤。
+ 从任务中移除处于完成状态的表，然后对剩余表重启该任务。
+ 为处于错误状态和待处理状态的表创建一个新任务。

如果迁移任务中的表位于持续复制阶段，则任务会在重启完成后立即继续。

如果 AWS DMS 复制实例的状态不是 “**可用**” 状态，则无法重启该实例。您的 AWS DMS 实例可能由于多种原因而不可用，例如之前请求的修改或维护窗口操作。重启 AWS DMS 复制实例所需的时间通常很短（不到 5 分钟）。

## 使用控制台重启复制实例 AWS
<a name="CHAP_ReplicationInstance.Rebooting.CON"></a>

要重启复制实例，请使用 AWS 控制台。

**使用 AWS 控制台重启复制实例**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2/)/上打开 AWS DMS 控制台。

1. 在导航窗格中，选择**复制实例**。

1. 选择要重启的复制实例。

1. 选择**重启**。此时显示**重启复制实例**对话框。

1. 如果复制实例已配置为多可用区部署，并且需要失效转移到另一个 AWS 可用区，请选中**通过计划内失效转移重启？**对应的复选框。

1. 选择**重启**。

## 使用 CLI 重启复制实例
<a name="CHAP_ReplicationInstance.Rebooting.CLI"></a>

要重启复制实例，请使用带有以下参数的 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/dms/reboot-replication-instance.html](https://docs.aws.amazon.com/cli/latest/reference/dms/reboot-replication-instance.html)命令：
+ `--replication-instance-arn`

**Example 示例：简单重启**  
以下 AWS CLI 示例重启复制实例。  

```
aws dms reboot-replication-instance \
--replication-instance-arn arn of my rep instance
```

**Example 示例：简单的通过故障转移重启**  
以下 AWS CLI 示例通过故障转移重启复制实例。  

```
aws dms reboot-replication-instance \
--replication-instance-arn arn of my rep instance \
--force-planned-failover
```

## 使用 API 重启复制实例
<a name="CHAP_ReplicationInstance.Rebooting.API"></a>

要重启复制实例，请使用带有以下参数的 AWS DMS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html)操作：
+ `ReplicationInstanceArn = arn of my rep instance`

**Example 示例：简单重启**  
以下代码示例重启复制实例。  

```
 1. https://dms.us-west-2.amazonaws.com/
 2. ?Action=RebootReplicationInstance
 3. &DBInstanceArn=arn of my rep instance
 4. &SignatureMethod=HmacSHA256
 5. &SignatureVersion=4
 6. &Version=2014-09-01
 7. &X-Amz-Algorithm=AWS4-HMAC-SHA256
 8. &X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request
 9. &X-Amz-Date=20140425T192732Z
10. &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
11. &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3
```

**Example 示例：简单的通过故障转移重启**  
以下代码示例重新启动复制实例并故障转移到另一个 AWS 可用区。  

```
 1. https://dms.us-west-2.amazonaws.com/
 2. ?Action=RebootReplicationInstance
 3. &DBInstanceArn=arn of my rep instance
 4. &ForcePlannedFailover=true
 5. &SignatureMethod=HmacSHA256
 6. &SignatureVersion=4
 7. &Version=2014-09-01
 8. &X-Amz-Algorithm=AWS4-HMAC-SHA256
 9. &X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request
10. &X-Amz-Date=20140425T192732Z
11. &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
12. &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3
```

# 删除复制实例
<a name="CHAP_ReplicationInstance.Deleting"></a>

使用完 AWS DMS 复制实例后，您可以将其删除。如果您有迁移任务在使用该复制实例，则必须先停止并删除任务，然后才能删除该复制实例。

如果您关闭 AWS 账户，则与您的账户关联的所有 AWS DMS 资源和配置将在两天后删除。这些资源包括所有复制实例、源和目标终端节点配置、复制任务和 SSL 证书。如果两天后您决定 AWS DMS 再次使用，则可以重新创建所需的资源。

如果您的复制实例符合所有删除条件，并且在较长一段时间内保持 `DELETING` 状态，请联系支持人员排查问题。

## 使用 AWS 控制台删除复制实例
<a name="CHAP_ReplicationInstance.Deleting.CON"></a>

要删除复制实例，请使用 AWS 控制台。

**使用 AWS 控制台删除复制实例**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2/)/上打开 AWS DMS 控制台。

1. 在导航窗格中，选择**复制实例**。

1. 选择要删除的复制实例。

1. 选择**删除**。

1. 在对话框中，选择**删除**。

## 使用 CLI 删除复制实例
<a name="CHAP_ReplicationInstance.Deleting.CLI"></a>

要删除复制实例，请使用带有以下参数的 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/dms/delete-replication-instance.html](https://docs.aws.amazon.com/cli/latest/reference/dms/delete-replication-instance.html)命令：
+ `--replication-instance-arn`

**Example 删除操作示例**  
以下 AWS CLI 示例删除了一个复制实例。  

```
aws dms delete-replication-instance \
--replication-instance-arn arn of my rep instance
```

## 使用 API 删除复制实例
<a name="CHAP_ReplicationInstance.Deleting.API"></a>

要删除复制实例，请使用带有以下参数的 AWS DMS API [https://docs.aws.amazon.com/dms/latest/APIReference/API_DeleteReplicationInstance.html](https://docs.aws.amazon.com/dms/latest/APIReference/API_DeleteReplicationInstance.html)操作：
+ `ReplicationInstanceArn = arn of my rep instance`

**Example 删除操作示例**  
以下代码示例将删除复制实例。  

```
 1. https://dms.us-west-2.amazonaws.com/
 2. ?Action=DeleteReplicationInstance
 3. &DBInstanceArn=arn of my rep instance
 4. &SignatureMethod=HmacSHA256
 5. &SignatureVersion=4
 6. &Version=2014-09-01
 7. &X-Amz-Algorithm=AWS4-HMAC-SHA256
 8. &X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request
 9. &X-Amz-Date=20140425T192732Z
10. &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
11. &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3
```

# 使用 AWS DMS 维护窗口
<a name="CHAP_ReplicationInstance.MaintenanceWindow"></a>

每个 AWS DMS 复制实例都有一个每周维护窗口，在此期间会应用任何可用的系统更改。您可以通过维护时段控制何时进行修改和软件修补。

如果 AWS DMS 确定需要在给定的一周内进行维护，则维护将在您在创建复制实例时选择的 30 分钟维护时段内进行。 AWS DMS 在 30 分钟的维护窗口内完成大部分维护。但是，对于较大的更改可能需要更长时间。

## 维护对现有迁移任务的影响
<a name="CHAP_ReplicationInstance.MaintenanceWindow.Effect"></a>

在实例上运行 AWS DMS 迁移任务时，应用补丁时会发生以下事件：
+ 如果迁移任务中的表处于复制持续更改阶段（CDC），则 AWS DMS 会将该任务暂停一段时间，并在应用修补程序后恢复运行。在应用修补程序后，将从中断的位置继续进行迁移。
+ 如果 AWS DMS 在迁移**现有数据或迁移现有数据****并复制正在进行的更改任务中迁移**表，则在应用补丁期间，DMS 会停止并重新启动所有处于满负荷阶段的表的迁移。在应用修补程序时，DMS 还会停止所有处于 CDC 阶段的表，并随后恢复。

## 使用维护时段设置
<a name="CHAP_ReplicationInstance.MaintenanceWindow.Changing"></a>

您可以使用 AWS 管理控制台、或 AWS DMS API 更改维护时段的时间范围。 AWS CLI

### 使用控制台更改维护时段设置
<a name="CHAP_ReplicationInstance.AdjustingTheMaintenanceWindow.CON"></a>

您可以使用 AWS 管理控制台更改维护时段时间范围。

**使用控制台更改首选的维护时段**

1.  登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2/)/上打开 AWS DMS 控制台。

1. 在导航窗格中，选择**复制实例**。

1. 选择要修改的复制实例，然后选择**修改**。

1. 展开**维护**选项卡，然后为您的维护时段选择一个日期和时间。

1. 选择**立即应用更改**。

1.  选择**修改**。

### 使用 CLI 更改维护时段设置
<a name="CHAP_ReplicationInstanceAdjustingTheMaintenanceWindow.CLI"></a>

要调整首选维护时段，请使用带有以下参数的 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)命令。
+ `--replication-instance-identifier`
+ `--preferred-maintenance-window`

**Example**  
以下 AWS CLI 示例将维护时段设置为星期二凌晨 4:00 — 4:30。(UTC)。  

```
aws dms modify-replication-instance \
--replication-instance-identifier myrepinstance \
--preferred-maintenance-window Tue:04:00-Tue:04:30
```

### 使用 API 更改维护时段设置
<a name="CHAP_ReplicationInstanceAdjustingTheMaintenanceWindow.API"></a>

要调整首选维护时段，请使用带有以下参数的 AWS DMS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html)操作。
+ `ReplicationInstanceIdentifier = myrepinstance`
+ `PreferredMaintenanceWindow = Tue:04:00-Tue:04:30`

**Example**  
以下代码示例将维护时段设置为周二的凌晨 4:00–4:30 (UTC)。  

```
 1. https://dms.us-west-2.amazonaws.com/
 2. ?Action=ModifyReplicationInstance
 3. &DBInstanceIdentifier=myrepinstance
 4. &PreferredMaintenanceWindow=Tue:04:00-Tue:04:30
 5. &SignatureMethod=HmacSHA256
 6. &SignatureVersion=4
 7. &Version=2014-09-01
 8. &X-Amz-Algorithm=AWS4-HMAC-SHA256
 9. &X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request
10. &X-Amz-Date=20140425T192732Z
11. &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
12. &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3
```