本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为了管理执行复制所需的资源, AWS DMS Serverless 具有精细的状态,可以显示服务采取的不同内部操作。启动复制时, AWS DMS Serverless 会根据以下复制状态计算容量负载,预置计算出的容量,然后开始数据复制。
下图显示了 AWS DMS 无服务器复制的状态转换。

在您开始复制后,第一个状态是正在初始化。在此状态下将初始化所有必需的参数。
紧随其后的状态包括正在准备元数据资源、正在测试连接和正在获取元数据。在这些状态下, AWS DMS Serverless 会连接到您的源数据库以获取预测所需容量所需的信息。
当复制状态为 “测试连接” 时, AWS DMS Serverless 会验证与源数据库和目标数据库的连接是否已成功建立。
正在测试连接之后的复制状态为正在获取元数据。在这里, AWS DMS 检索计算容量所需的信息。
AWS DMS 检索到必要信息后,下一个状态为 “计算容量”。此时,系统计算执行复制所需的底层资源的大小。
在正在计算容量之后,状态转换为正在预置容量。当复制处于这种状态时, AWS DMS Serverless 会初始化底层计算资源。
成功预置所有资源后的复制状态为复制开始。在此状态下, AWS DMS Serverless 开始复制数据。复制过程包括以下几个阶段:
完全加载:在此阶段,DMS 会复制源数据存储,就像复制开始时那样。
CDC(初始):在此阶段,DMS 会复制在“完全加载”阶段对源数据存储所做的更改。仅当
StopTaskCachedChangesNotApplied
任务设置为false
时,DMS 才会运行此阶段。CDC(持续):在初始 CDC 阶段之后,DMS 会复制源数据库上发生的更改。仅当
StopTaskCachedChangesApplied
任务设置为false
时,DMS 才会在 CDC 初始阶段之后继续运行复制。
最终状态为正在运行。在正在运行状态下,数据复制正在进行中。
您停止的复制进入已停止状态。您可以在以下情况下重新启动已停止的复制:
您不能重新启动 DMS 已经取消预置的复制。
您可以使用操作重新启动已停止的仅限 CDC 或满载复制以及 CDC 复制。StartReplication您无法使用控制台重新启动已停止的复制。
您无法重新启动使用 PostgreSQL 作为引擎的已停止的复制。
本主题包含下列部分:
对于 AWS DMS 无服务器, AWS DMS 控制台的左侧导航面板有一个新选项,即无服务器复制。对于无服务器复制,您可以指定复制,而不是指定复制实例类型或任务来定义复制。此外,您可以指定希望 DMS 为复制配置的最大和最小 DMS 容量单位 (DCUs)。一个 DCU 是 2GB 的内存。 AWS DMS 为您的复制当前使用的每个 DCU 向您的账户收费。有关 AWS DMS 定价的信息,请参阅 AWS Database Migration Service 定价
AWS DMS 然后根据您的表映射和预测的工作负载大小自动配置复制资源。此容量单位是在您指定的最小和最大容量单位值范围内的值。
支持的终端节点
使用 AWS DMS Serverless,您无需选择和管理引擎版本,因为该服务会处理该设置。 AWS DMS 无服务器支持以下来源:
-
MongoDB
-
Amazon DocumentDB (with MongoDB compatibility)
-
Microsoft SQL Server
-
PostgreSQL 兼容数据库
-
MySQL 兼容数据库
-
MariaDB
-
Oracle
-
Amazon S3
-
IBM Db2
AWS DMS 无服务器支持以下目标:
-
Microsoft SQL Server
-
PostgreSQL
-
MySQL 兼容数据库
-
Oracle
-
Amazon S3
-
Amazon Redshift
-
Amazon DynamoDB
-
Amazon Kinesis Data Streams
-
Amazon Managed Streaming for Apache Kafka
-
亚马逊 OpenSearch 服务
-
Amazon DocumentDB(与 MongoDB 兼容)
-
Amazon Neptune
作为 AWS DMS Serverless 的一部分,您可以访问控制台命令,这些命令允许您创建、配置、启动和管理 AWS DMS 无服务器复制。要使用控制台的无服务器复制部分运行这些命令,您需要执行以下操作之一:
设置新的 AWS Identity and Access Management (IAM) 策略和 IAM 角色以附加该策略。
使用 AWS CloudFormation 模板提供所需的访问权限。
AWS DMS Serverless 需要您的账户中存在服务关联角色 (SLR)。 AWS DMS 管理此角色的创建和使用。有关确保您拥有所需 SLR 的更多信息,请参阅AWS DMS Serverless 的服务相关角色。
创建无服务器复制
要在两个现有 AWS DMS 端点之间创建无服务器复制,请执行以下操作。有关创建 AWS DMS 终端节点的信息,请参阅创建源和目标终端节点。
创建无服务器复制
登录 AWS Management Console 并在 https://console.aws.amazon.com/dms/v2
/上打开 AWS DMS 控制台。 -
在导航窗格上,选择无服务器复制,然后选择创建复制。
-
在创建复制页面上,指定您的无服务器复制配置:
选项 操作 名称
输入用于标识复制的名称,例如 DMS-replication
。描述性 Amazon 资源名称(ARN)– 可选 您可以使用此可选参数对复制进行描述。 源数据库端点 选择账户中的现有端点。请注意, AWS DMS Serverless 仅支持 AWS DMS 标准版支持的端点类型的子集。 目标数据库端点 选择账户中的现有端点。请注意, AWS DMS Serverless 仅支持 AWS DMS 标准版支持的端点类型的子集。 复制类型 根据您的要求选择复制类型: 满载:仅 AWS DMS 迁移现有数据。
满载和更改数据捕获 (CDC): AWS DMS 迁移现有数据和复制期间发生的更改。
更改数据捕获 (CDC): AWS DMS 仅迁移开始复制后发生的更改。
在设置部分中,设置复制所需的设置。
在表映射部分中,设置表映射以定义选择和筛选所要复制的数据的规则。在指定映射之前,请确保查看有关源数据库和目标数据库之间的数据类型映射的文档部分。有关源数据库和目标数据库的数据类型映射的信息,请参阅 使用 AWS DMS 端点主题中源和目标端点类型的“数据类型”部分。
在计算设置部分中,设置以下设置。有关 Compute Config 设置的信息,请参阅 Compute Config。
选项 操作 VPC
选择现有 VPC。 子网组
选择现有子网组。 VPC 安全组
选择默认值(如果尚未选择)。 AWS KMS 密钥
请选择合适的 KMS 密钥。有关 KMS 密钥的信息,请参阅《AWS Key Management Service API 参考》中的创建密钥。 部署
保留原样。 可用区
保留原样。 最小 DMS 容量单位(DCU)–(可选)
留空可使用默认值 1 DCU。 最大 DMS 容量单位(DCU)
选择 16 个 DCU。 保留维护设置不变。
选择创建复制。
AWS DMS 创建无服务器复制来执行迁移。
修改 AWS DMS 无服务器复制
要修改您的复制配置,请使用 modify-replication-config
操作。您只能修改处于CREATED
STOPPED
、或FAILED
状态的 AWS DMS 复制配置。有关modify-replication-config
操作的信息,请参阅 AWS Database Migration Service API 参考ModifyReplicationConfig中的。
要修改无服务器复制配置,请使用 AWS Management Console
登录 AWS Management Console 并在 https://console.aws.amazon.com/dms/v2
/上打开 AWS DMS 控制台。 在导航窗格中,选择无服务器复制。
-
选择您要修改的复制。下表描述了根据复制的当前状态,您可以进行的修改。
设置 描述 允许的状态 名称
您可以更改复制的名称。输入复制的名称,其中包含 8 到 16 个可打印 ASCII 字符(不含 /、" 和 @)。该名称在所选择 AWS 区域中对于您的账户应唯一。您可以选择在名称中添加一些细节,例如包括您正在执行的 AWS 区域和任务,例如:
west2-mysql2mysql-config1
。ReplicationState
为CREATED
、STOPPED
或FAILED
。源数据库端点
选择一个新的现有源端点作为复制的源。
ReplicationState
为CREATED
,当ProvisionState
是null
时为FAILED
。目标数据库端点
选择一个新的现有目标端点作为复制的目标。
ReplicationState
为CREATED
,当ProvisionState
是null
时为FAILED
。复制类型
您可以修改无服务器复制的类型。
ReplicationState
为CREATED
,当ProvisionState
是null
时为FAILED
。复制设置
您可以修改复制设置,包括目标表准备模式、复制中是否包含 LOB 列、最大 LOB 大小、验证和日志记录。有关更多信息,请参阅 Task settings(任务设置)。
ReplicationState
为CREATED
、STOPPED
或FAILED
。表映射
您可以修改无服务器复制的表映射设置,包括选择规则和转换规则。有关更多信息,请参阅 表映射。
ReplicationState
为CREATED
、STOPPED
或FAILED
。Compute Config
您可以修改无服务器复制的 Compute Config 设置,包括网络设置、扩展设置和维护设置。有关 Compute Config 设置的信息,请参阅 Compute Config。
当
ReplicationState
为CREATED
、STOPPED
或FAILED
时,您可以修改以下扩展、维护和网络设置:MinCapacityUnits
MaxCapacityUnits
MultiAZ
PreferredMaintenanceWindow
VpcSecurityGroupIds
在
ReplicationState
为CREATED
或者为FAILED
(当ProvisionState
是null
时)时,您可以修改以下网络和安全设置:AvailabilityZone
DnsNameServers
KmsKeyId
ReplicationSubnetGroupId
Compute Config
您可以使用 Compute Config 参数或控制台部分配置复制预置。Compute Config 对象中的字段包括以下内容:
选项 | 描述 |
---|---|
MinCapacityUnits |
这是要配置的 DMS 容量单位 (DCU) 的最小数量。 AWS DMS 这也是自动缩放可以缩减到的最小 DCU。 |
MaxCapacityUnits |
这是 AWS DMS 可以预置的最大 DMS 容量单位(DCU),具体取决于对您复制的容量预测。这也是自动缩放可以纵向扩展到的最大 DCU。 |
KmsKeyId |
选择要用于加密复制存储和连接信息的加密密钥。如果您选择(默认)aws/dms,则 AWS DMS 使用与您的账户关联的默认 KMS 密钥和。 AWS 区域将显示说明和您的账号以及密钥的 ARN。有关使用加密密钥的更多信息,请参阅设置加密密钥并指定 AWS KMS 权限。在本教程中,选择(默认)aws/dms。 |
ReplicationSubnetGroupId |
在选定 VPC 中要在其中创建复制的复制子网组。如果源数据库位于 VPC 中,请选择包含源数据库的子网组作为复制的位置。有关复制子网组的更多信息,请参阅 创建复制子组。 |
VpcSecurityGroupIds |
在 VPC 中创建复制实例。如果源数据库位于 VPC 中,请选择一个 VPC 安全组,该安全组提供对数据库所在的数据库实例的访问权限。 |
PreferredMaintenanceWindow |
此参数定义每周可以进行系统维护的时间范围,采用通用协调时间(UTC)。默认值是从每个 8 小时的时间段中随机选择一个 30 分钟的窗口 AWS 区域,发生在一周中的随机某一天。 |
MultiAZ |
设置此可选参数可在另一个可用区中创建复制的备用副本以支持失效转移。如果您打算使用更改数据捕获(CDC)或持续复制,建议您启用该选项。 |
了解无服务器中的 AWS DMS 自动扩展
在您配置复制并使其处于RUNNING
状态后,该 AWS DMS 服务将管理底层资源的容量以适应不断变化的工作负载。此管理功能根据以下复制设置扩展复制资源:
MinCapacityUnits
MaxCapacityUnits
在超过利用率阈值上限一段时间后,复制会纵向扩展;当容量利用率在较长一段时间内低于容量利用率阈值下限时,复制会纵向缩减。
注意
在完全加载过程中,Serverless 复制无法自动缩减。
在无服务器中 AWS DMS 调整自动缩放
要调整您的复制自动缩放参数,我们建议您将设置MaxCapacityUnits
为最大值,然后让 AWS DMS 管理资源的配置。建议您选择最大的 DCU 最大容量设置来适应事务量的峰值,以便从自动扩缩中获得最大的好处。如果您的复制持续使用最大 DCU,则定价计算器会显示每月的最大成本。最大 DCU 并不代表实际成本,因为您只需为使用的容量付费。
如果您的复制未在满负荷状态下使用其资源,则 AWS DMS 会逐渐取消资源配置以节省成本。但是,由于预置和取消预置资源需要时间,因此我们建议您将 MinCapacityUnits
设置为能够应对预计复制工作负载中会出现的任何突然峰值的值。这样可以防止您的复制资源不足,同时 AWS DMS 为更高的工作负载级别配置资源。
如果复制资源的预置不足,最大容量设置太低,无法满足数据需求,或者最小容量太低,无法处理复制工作负载突然激增,则您的 CapacityUtilization
指标可能会始终保持在最大值。这可能会导致您的复制失败。如果由于资源配置不足而导致复制失败,则会在复制日志中 AWS DMS 创建一个 out-of-memory事件。如果 out-of-memory这种情况是由于复制工作负载突然激增而发生的,则复制将自动扩展并重新启动。
监控 AWS DMS 无服务器复制
AWS 提供了多种用于监控 AWS DMS 无服务器复制和响应潜在事件的工具:
AWS DMS 无服务器复制指标
无服务器复制监控包括以下统计数据的 Amazon CloudWatch 指标。这些统计数据按每个无服务器复制进行分组。
指标 |
单位 |
描述 |
---|---|---|
CapacityUtilization | 百分比 |
无服务器复制使用的内存百分比 |
CDCIncoming改动 | 百分比 |
a 上等待应用于目标 point-in-time的更改事件总数。请注意,这与源终端节点的事务更改速率指标不同。此指标的数字过大 AWS DMS 通常表示无法及时应用捕获的更改,从而导致目标延迟过高。 |
CDCLatency来源 | 秒 |
从源端点捕获的最后一个事件与 AWS DMS 实例的当前系统时间戳之间的间隔,以秒为单位。 CDCLatency来源表示源实例和复制实例之间的延迟。High S CDCLatency ource 表示从源捕获更改的过程被延迟。要确定正在进行的复制过程中的延迟,您可以将此指标与 Targe CDCLatency t 一起查看。如果 CDCLatency源和 CDCLatency目标均为高,请先调查 CDCLatency源。 CDCLatency如果源和复制之间没有复制延迟,则源可以为 0。 CDCLatency当复制尝试读取源事务日志中的下一个事件并且与上次从源读取时相比没有新事件时,源也可能变为零。发生这种情况时,复制会将 CDCLatency源重置为 0。 |
CDCLatency目标 | 秒 |
在目标上等待提交的第一个事件时间戳与 AWS DMS 实例的当前系统时间戳之间的间隔(秒)。目标延迟是复制实例服务器时间,与转发到目标组件的最早未经确认的事件 ID 时间之间的差异。换句话说,目标延迟是复制实例的时间戳,与已应用但未经 TRG 端点确认的最早事件之间的时间戳之差(99%)。当 CDCLatency Target 为高时,表示将更改事件应用于目标的过程已延迟。要确定正在进行的复制过程中的延迟,您可以将此指标与 S CDCLatency ource 一起查看。如果 CDCLatency Target 为高但 CDCLatency源不高,请调查是否:
|
CDCThroughputBandwidthTarget | KB/秒 |
目标的传出数据传输速率,以每秒 KB 数为单位。 CDCThroughput带宽记录采样点上传输的传出数据。如果未找到网络流量,则该值为零。由于 CDC 不发布长时间运行的事务,可能不会记录网络流量。 |
CDCThroughputRowsSource | 行/秒 |
源的传入更改速率,以每秒行数为单位。 |
CDCThroughputRowsTarget | 行/秒 |
目标的传出更改速率,以每秒行数为单位。 |
FullLoadThroughputBandwidthTarget | KB/秒 |
目标在满负载情况下的传出数据传输速率,以每秒 KB 数为单位。 |
FullLoadThroughputRowsTarget | 行/秒 |
目标上的完全加载的传出更改,以行/秒为单位。 |
AWS DMS 无服务器复制日志
在 AWS DMS 迁移过程中 CloudWatch ,您可以使用 Amazon 记录复制信息。您可以在选择复制设置时启用日志记录。
无服务器复制会将状态日志上传到您的 CloudWatch 帐户,以提高对复制进度的可见性并帮助进行故障排除。
AWS DMS 将无服务器链接的日志上传到带有前缀的专用日志组。dms-serverless-replication-
在此日志组中,有一个名为的 <your replication config resource ID>
dms-serverless-replication-orchestrator-
日志流。此日志流报告您的复制的复制状态,并显示一条相关消息,提供有关其在此阶段所做工作的更多详细信息。有关日志条目的示例,请参阅下文的 无服务器复制日志示例。<your replication config resource ID>
注意
AWS DMS 在运行复制之前,不会创建日志组或流。 AWS DMS 如果您只创建复制,则不会创建日志组或流。
要查看所运行复制的日志,请按照下列步骤操作:
-
打开 AWS DMS 控制台,然后从导航窗格中选择无服务器复制。将出现无服务器复制对话框。
-
转到配置部分,然后在“常规”列中选择查看无服务器日志。 CloudWatch 日志组打开。
-
找到 “迁移任务日志” 部分,然后选择 “查看 CloudWatch 日志”。
如果复制失败,则 AWS DMS 会创建一个复制状态为的日志条目failed
,并显示一条描述失败原因的消息。作为排除复制失败故障的第一步,您应该检查 CloudWatch 日志。
注意
与 AWS DMS Classic 一样,您可以选择对数据迁移本身的进度(即底层复制任务发出的日志)启用更精细的日志记录。您可以在复制设置中,通过将 Logging
字段中的 EnableLogging
设置为true
来启用这些日志,如以下 JSON 示例所示:
{
"Logging": {
"EnableLogging": true
}
}
如果您启用这些日志,它们将仅在无服务器复制的 running
阶段开始出现。它们将与之前的日志流出现在同一个日志组中,但会出现在新的日志流 dms-serverless-serv-res-id-
下。有关如何解释无服务器复制日志的信息,请参阅以下章节。{unique identifier}
无服务器复制日志示例
本节包括用于无服务器复制的日志条目示例。
示例:复制开始
运行无服务器复制时, AWS DMS 会创建一个类似于以下内容的日志条目:
{'replication_state':'initializing', 'message': 'Initializing the replication workflow.'}
示例:复制失败
如果复制的其中一个端点配置不正确,则 AWS DMS 会创建一个类似于以下内容的日志条目:
{'replication_state':'failed', 'message': 'Test connection failed for endpoint X.', 'failure_message': 'X'}
如果在出现故障后,您在日志中看到此消息,请确保指定的端点运行正常且配置正确。
提高了 Oracle 到 Amazon Redshift 的完全加载迁移的吞吐量
AWS DMS 显著提高了从 Oracle 到 Amazon Redshift 的满负荷迁移的吞吐量性能。DMS 会自动为表映射中没有 custom parallel-load
选项的表启用此特征。对于具有自定义并行加载选项的表,DMS Serverless 会根据给定的表映射配置来分配表负载。要使用增强的吞吐量,请执行以下操作:
提供不引用分区或边界的选择规则。例如,如果表映射中的表设置包含
parallel-load
,则 DMS Serverless 将不会使用增强的吞吐量特征。有关更多信息,请参阅 选择规则和操作。将
MaxFileSize
和WriteBufferSize
设置为 64 MB。有关更多信息,请参阅 使用 Amazon Redshift 作为目标时的终端节点设置 AWS DMS。对于包含稀疏数据的数据存储,建议将
CompressCsvFiles
设置为true
;对于包含密集数据的数据存储,则设置为false
。将以下任务设置设为
0
:ParallelLoadThreads
ParallelLoadQueuesPerThread
ParallelApplyThreads
ParallelApplyQueuesPerThread
ParallelLoadBufferSize
将
MaxFullLoadSubTasks
设置为49
以支持并行数据迁移。将
LOB mode
设置为inline
。有关更多信息,请参阅 在 AWS DMS 任务中设置对源数据库的LOB支持。
AWS DMS 不为以下复制提供增强的吞吐量性能:
使用并行加载对表进行复制。有关更多信息,请参阅 对所选表、视图和集合使用并行加载。
使用数据转换规则进行复制。
使用筛选规则进行复制。
使用
change-data-type
转换规则进行复制。