Amazon DMS Serverless 组件 - Amazon Database Migration Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon DMS Serverless 组件

为了管理执行复制所需的资源,Amazon DMS Serverless 具有精细的状态,可以显示服务执行的不同内部操作。启动复制时,Amazon DMS Serverless 会根据以下复制状态计算容量负载,预置计算出的容量,然后开始数据复制。

下图演示了 Amazon DMS Serverless 复制中的状态转换。


                Amazon DMS Serverless 复制状态
  • 在您开始复制后,第一个状态是正在初始化。在此状态下将初始化所有必需的参数。

  • 紧随其后的状态包括正在准备元数据资源正在测试连接正在获取元数据。在这些状态下,Amazon DMS Serverless 会连接到您的源数据库以获取预测所需容量需要的信息。

    • 当复制状态为正在测试连接时,Amazon DMS Serverless 会验证是否成功建立了与源数据库和目标数据库的连接。

    • 正在测试连接之后的复制状态为正在获取元数据。此时,Amazon DMS 检索计算容量所需的信息。

    • 在 Amazon DMS 检索到必要信息后,下一个状态为正在计算容量。此时,系统计算执行复制所需的底层资源的大小。

  • 正在计算容量之后,状态转换为正在预置容量。当复制处于这种状态时,Amazon DMS Serverless 会初始化底层计算资源。

  • 成功预置所有资源后的复制状态为复制开始。在这种状态下,Amazon DMS Serverless 开始复制数据。

  • 最终状态为正在运行。在正在运行状态下,数据复制正在进行中。

对于 Amazon DMS Serverless,Amazon DMS 控制台的左侧导航面板有一个新选项,即无服务器复制。对于无服务器复制,您可以指定复制,而不是指定复制实例类型或任务来定义复制。此外,您可以指定希望 DMS 为复制预置的最大和最小 DMS 容量单位 (DCU)。一个 DCU 是 2GB 的 RAM。Amazon DMS 为复制当前使用的每个 DCU 向您的账户收费。有关 Amazon DMS 定价信息,请参阅 Amazon Database Migration Service 定价

然后,Amazon DMS 根据您的表映射和预测的工作负载大小,自动预置复制资源。此容量单位是在您指定的最小和最大容量单位值范围内的值。

支持的引擎版本

使用 Amazon DMS Serverless,您无需选择和管理引擎版本,因为服务会处理该设置。Amazon DMSServerless 支持以下源:

  • Microsoft SQL Server

  • PostgreSQL 兼容数据库

  • MySQL 兼容数据库

  • MariaDB

  • Oracle

  • IBM Db2

Amazon DMS Serverless 支持以下目标:

  • 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

作为 Amazon DMS Serverless 的一部分,您可以访问允许您创建、配置、启动和管理 Amazon DMS Serverless 复制的控制台命令。要使用控制台的无服务器复制部分运行这些命令,您需要执行以下操作之一:

  • 设置新的 Amazon Identity and Access Management (IAM) policy 和 IAM 角色以将其附加到该策略。

  • 使用 Amazon CloudFormation 模板提供所需的访问权限。

Amazon DMS Serverless 需要您的账户中存在服务相关角色 (SLR)。Amazon DMS 管理此角色的创建和使用。有关确保您拥有所需 SLR 的更多信息,请参阅Amazon DMS Serverless 的服务相关角色

创建无服务器复制

要在两个现有 Amazon DMS 端点之间创建无服务器复制,请执行以下操作。有关创建 Amazon DMS 端点的信息,请参阅创建源和目标终端节点

创建无服务器复制
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon DMS 控制台:https://console.aws.amazon.com/dms/v2/

  2. 在导航窗格上,选择无服务器复制,然后选择创建复制

  3. 创建复制页面上,指定您的无服务器复制配置:

    选项 操作

    名称

    输入用于标识复制的名称,例如 DMS-replication
    描述性 Amazon 资源名称 (ARN) – 可选 留空。
    源数据库端点 选择账户中的现有端点。请注意,Amazon DMS Serverless 仅支持 Amazon DMS Standard 支持的端点类型的子集。
    目标数据库端点 选择账户中的现有端点。请注意,Amazon DMS Serverless 仅支持 Amazon DMS Standard 支持的端点类型的子集。
    复制类型 根据您的要求选择复制类型:
    • 完全加载:Amazon DMS 仅迁移现有数据。

    • 完全加载和更改数据捕获 (CDC):Amazon DMS 迁移现有数据和复制期间发生的更改。

    • 更改数据捕获 (CDC):Amazon DMS 仅迁移开始复制后发生的更改。

    设置部分中,设置复制所需的设置。

    表映射部分中,设置表映射以定义选择和筛选所要复制的数据的规则。在指定映射之前,请确保查看有关源数据库和目标数据库之间的数据类型映射的文档部分。

    计算设置部分中,设置以下设置。有关 Compute Config 设置的信息,请参阅 Compute Config

    选项 操作

    VPC

    选择现有 VPC。

    子网组

    选择现有子网组。

    VPC 安全组

    选择默认值(如果尚未选择)。

    Amazon KMS 密钥

    保留(默认值)aws/dms 处于选中状态。

    部署

    保留原样。

    可用区

    保留原样。

    最小 DMS 容量单位 (DCU) –(可选)

    留空可使用默认值 1 DCU。

    最大 DMS 容量单位 (DCU)

    选择 16 个 DCU

    保留维护设置不变。

  4. 选择创建复制

Amazon DMS 创建无服务器复制来执行迁移。

修改 Amazon DMS Serverless 复制

要修改您的复制配置,请使用 modify-replication-config 操作。您只能修改处于 CREATEDSTOPPEDFAILED 状态的 Amazon DMS 复制配置。

使用 Amazon Web Services Management Console 修改无服务器复制配置
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon DMS 控制台:https://console.aws.amazon.com/dms/v2/

  2. 在导航窗格中,选择无服务器复制

  3. 选择您要修改的复制。下表描述了根据复制的当前状态,您可以进行的修改。

    设置 描述 允许的状态

    名称

    您可以更改复制的名称。输入复制的名称,其中包含 8 到 16 个可打印 ASCII 字符(不含 /、" 和 @)。该名称在所选择 Amazon 区域中对于您的账户应唯一。您可以选择向名称中添加一些详细信息,如包含 Amazon 区域和要执行的任务,例如 west2-mysql2mysql-config1

    ReplicationStateCREATEDSTOPPEDFAILED

    源数据库端点

    选择一个新的现有源端点作为复制的源。

    ReplicationStateCREATED,当 ProvisionStatenull 时为 FAILED

    目标数据库端点

    选择一个新的现有目标端点作为复制的目标。

    ReplicationStateCREATED,当 ProvisionStatenull 时为 FAILED

    复制类型

    您可以修改无服务器复制的类型。

    ReplicationStateCREATED,当 ProvisionStatenull 时为 FAILED

    复制设置

    您可以修改复制设置,包括目标表准备模式、复制中是否包含 LOB 列、最大 LOB 大小、验证和日志记录。有关更多信息,请参见 Task settings (任务设置)

    ReplicationStateCREATEDSTOPPEDFAILED

    表映射

    您可以修改无服务器复制的表映射设置,包括选择规则和转换规则。有关更多信息,请参见 表映射

    ReplicationStateCREATEDSTOPPEDFAILED

    Compute Config

    您可以修改无服务器复制的 Compute Config 设置,包括网络设置、扩展设置和维护设置。有关 Compute Config 设置的信息,请参阅 Compute Config

    • ReplicationStateCREATEDSTOPPEDFAILED 时,您可以修改以下扩展、维护和网络设置:

      • MinCapacityUnits

      • MaxCapacityUnits

      • MultiAZ

      • PreferredMaintenanceWindow

      • VpcSecurityGroupIds

    • ReplicationStateCREATED 或者为 FAILED(当 ProvisionStatenull 时)时,您可以修改以下网络和安全设置:

      • AvailabilityZone

      • DnsNameServers

      • KmsKeyId

      • ReplicationSubnetGroupId

Compute Config

您可以使用 Compute Config 参数或控制台部分配置复制预置。Compute Config 对象中的字段包括以下内容:

选项 描述

MinCapacityUnits

这是 Amazon DMS 要预置的 DMS 容量单位 (DCU) 的最小数量。这也是自动缩放可以缩减到的最小 DCU。

MaxCapacityUnits

这是 Amazon DMS 可以预置的最大 DMS 容量单位 (DCU),具体取决于对您复制的容量预测。这也是自动缩放可以纵向扩展到的最大 DCU。

KmsKeyId

选择要用于加密复制存储和连接信息的加密密钥。如果选择(默认值)aws/dms,则 Amazon DMS 会使用与您的账户和 Amazon Web Services 区域关联的默认 KMS 密钥。将显示说明和您的账号以及密钥的 ARN。有关使用加密密钥的更多信息,请参阅设置加密密钥和指定 Amazon KMS 权限。在本教程中,选择(默认)aws/dms

ReplicationSubnetGroupId

在选定 VPC 中要在其中创建复制的复制子网组。如果源数据库位于 VPC 中,请选择包含源数据库的子网组作为复制的位置。有关复制子网组的更多信息,请参阅 创建复制子组

VpcSecurityGroupIds

在 VPC 中创建复制实例。如果源数据库位于 VPC 中,请选择一个 VPC 安全组,该安全组提供对数据库所在的数据库实例的访问权限。

PreferredMaintenanceWindow

此参数定义每周可以进行系统维护的时间范围,采用通用协调时间 (UTC)。默认值为每个 Amazon Web Services 区域 8 小时的时间段中随机选择的 30 分钟时段(随机选取周中的某天进行)。

MultiA

设置此可选参数可在另一个可用区中创建复制的备用副本以支持失效转移。如果您打算使用更改数据捕获 (CDC) 或持续复制,建议您启用该选项。

了解 Amazon DMS Serverless 中的自动扩展

在您预置复制并且复制处于 RUNNING 状态后,Amazon DMS 服务将管理底层资源的容量以适应不断变化的工作负载。此管理功能根据以下复制设置扩展复制资源:

  • MinCapacityUnits

  • MaxCapacityUnits

在超过利用率阈值上限一段时间后,复制会纵向扩展;当容量利用率在较长一段时间内低于容量利用率阈值下限时,复制会纵向缩减。

调整 Amazon DMS Serverless 中的自动扩展

要调整您的复制自动扩缩参数,我们建议您将 MaxCapacityUnits 设置为最大值,然后让 Amazon DMS 管理资源的预置。建议您选择最大的 DCU 最大容量设置来适应事务量的峰值,以便从自动扩缩中获得最大的好处。如果您的复制持续使用最大 DCU,则定价计算器会显示每月的最大成本。最大 DCU 并不代表实际成本,因为您只需为使用的容量付费。

如果您的复制未使用资源的全部容量,则 Amazon DMS 会逐渐取消预置资源以节省成本。但是,由于预置和取消预置资源需要时间,因此我们建议您将 MinCapacityUnits 设置为能够应对预计复制工作负载中会出现的任何突然峰值的值。这样可以防止您的复制资源预置不足,而 Amazon DMS 会为更高的工作负载级别预置资源。

如果复制资源的预置不足,最大容量设置太低,无法满足数据需求,或者最小容量太低,无法处理复制工作负载突然激增,则您的 CapacityUtilization 指标可能会始终保持在最大值。这可能会导致您的复制失败。如果由于资源配置不足而导致复制失败,则会在复制日志中Amazon DMS创建一个 out-of-memory 事件。如果 out-of-memory 这种情况是由于复制工作负载突然激增而发生的,则复制将自动扩展并重新启动。

监控 Amazon DMS Serverless 复制

Amazon 提供了多种工具来监控 Amazon DMS Serverless 复制并对可能出现的事件做出响应:

Amazon DMS Serverless 复制指标

无服务器复制监控包括以下统计数据的 Amazon CloudWatch 指标。这些统计数据按每个无服务器复制进行分组。

指标

单位

描述

CapacityUtilization

百分比

无服务器复制使用的内存百分比

CDC IncomingChanges 百分比

a 上等待应用于目标 point-in-time 的更改事件总数。请注意,这与源终端节点的事务更改速率指标不同。对于该指标,较大的值通常表示 Amazon DMS 无法及时应用捕获的更改,从而导致较高的目标延迟。

CDC LatencySource

从源端点中捕获的最后一个事件与 Amazon DMS 实例的当前系统时间戳之间的间隔(秒)。CDC LatencySource 表示源实例和复制实例之间的延迟。CDC 过高LatencySource 意味着从源头捕获变化的过程会延迟。要确定正在进行的复制过程中的延迟,您可以与 CDC 一起查看此指标LatencyTarget。如果CDC LatencySource 和CDC都LatencyTarget 处于高位,请LatencySource先调查CDC。

当源和复制之间没有复制延迟时,CDC LatencySource 可以为 0。当复制尝试读取源事务日志中的下一个事件并且与上次从源读取时相比没有新事件时,CDC 也LatencySource可能变为零。发生这种情况时,复制会将 CDC 重置LatencySource 为 0。

CDC LatencyTarget

在目标上等待提交的第一个事件时间戳与 Amazon DMS 实例的当前系统时间戳之间的间隔(秒)。目标延迟是复制实例服务器时间,与转发到目标组件的最早未经确认的事件 ID 时间之间的差异。换句话说,目标延迟是复制实例的时间戳,与已应用但未经 TRG 端点确认的最早事件之间的时间戳之差 (99%)。当 CDC LatencyTarget 为高时,它表示将变更事件应用于目标的过程已延迟。要确定正在进行的复制过程中的延迟,您可以与 CDC 一起查看此指标LatencySource。如果 CDC 高但疾病预防控制中心LatencySource 不高,请调查LatencyTarget 是否:

  • 目标中没有主键或索引

  • 目标实例或复制实例中出现资源瓶颈

  • 复制和目标之间存在网络问题

CDC ThroughputBandwidthTarget KB/秒

目标的传出数据传输速率,以每秒 KB 数为单位。CDC ThroughputBandwidth 记录采样点传输的传出数据。如果未找到网络流量,则该值为零。由于 CDC 不发布长时间运行的事务,可能不会记录网络流量。

CDC ThroughputRowsSource 行/秒

源的传入更改速率,以每秒行数为单位。

CDC ThroughputRowsTarget 行/秒

目标的传出更改速率,以每秒行数为单位。

FullLoadThroughputBandwidthTarget KB/秒

目标在满负载情况下的传出数据传输速率,以每秒 KB 数为单位。

FullLoadThroughputRowsTarget 行/秒

目标上的完全加载的传出更改,以行/秒为单位。

Amazon DMS Serverless 复制日志

在Amazon DMS迁移过程中 CloudWatch ,您可以使用 Amazon 记录复制信息。您可以在选择复制设置时启用日志记录。

无服务器复制会将状态日志上传到您的 CloudWatch 帐户,以提高对复制进度的可见性并帮助进行故障排除。

Amazon DMS 将无服务器链接的日志上传到带有 dms-serverless-replication-<your replication config resource ID> 前缀的专用日志组。在此日志组中,有一个名为的 dms-serverless-replication-orchestrator-<your replication config resource ID> 日志流。此日志流报告您的复制的复制状态,并显示一条相关消息,提供有关其在此阶段所做工作的更多详细信息。有关日志条目的示例,请参阅下文的 无服务器复制日志示例

注意

在运行复制之前,Amazon DMS 不会创建日志组或流。如果您只创建复制,Amazon DMS 不会创建日志组或流。

要查看所运行复制的日志,请按照下列步骤操作:

  1. 打开 Amazon DMS 控制台,在导航窗格中选择无服务器复制。将出现无服务器复制对话框。

  2. 转到配置部分,然后在“常规”列中选择查看无服务器日志。 CloudWatch 日志组打开。

  3. 找到 “迁移任务日志” 部分,然后选择 “查看 CloudWatch 日志”。

如果复制失败,Amazon DMS 会创建一个复制状态为 failed 的日志条目,并显示一条描述失败原因的消息。作为排除复制失败故障的第一步,您应该检查 CloudWatch 日志。

注意

与 Amazon DMS Classic 一样,您可以选择对数据迁移本身的进度启用更精细的日志记录,也就是底层复制任务发出的日志。您可以在复制设置中,通过将 Logging 字段中的 EnableLogging 设置为true 来启用这些日志,如以下 JSON 示例所示:

{ "Logging": { "EnableLogging": true } }

如果您启用这些日志,它们将仅在无服务器复制的 running 阶段开始出现。它们将与之前的日志流出现在同一个日志组中,但会出现在新的日志流 dms-serverless-serv-res-id-{unique identifier} 下。有关如何解释无服务器复制日志的信息,请参阅以下章节。

无服务器复制日志示例

本节包括用于无服务器复制的日志条目示例。

示例:复制开始

运行无服务器复制时,Amazon DMS 将创建与下类似的日志条目:

{'replication_state':'initializing', 'message': 'Initializing the replication workflow.'}
示例:复制失败

如果复制中的端点之一配置不正确,则 Amazon DMS 会创建一个与以下类似的日志条目:

{'replication_state':'failed', 'message': 'Test connection failed for endpoint X.', 'failure_message': 'X'}

如果在出现故障后,您在日志中看到此消息,请确保指定的端点运行正常且配置正确。