Amazon DMS 无服务器组件 - Amazon 数据库迁移服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon DMS 无服务器组件

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

下图显示了 Amazon DMS 无服务器复制的状态转换。

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

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

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

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

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

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

  • 成功预置所有资源后的复制状态为复制开始。在这种状态下, Amazon DMS Serverless 开始复制数据。复制的阶段包括以下几个阶段:

    • 满载:在此阶段,DMS 将复制源数据存储库,就像复制开始时一样。

    • CDC(初始):在此阶段,DMS 会复制在满载阶段对源数据存储所做的更改。仅当StopTaskCachedChangesNotApplied任务设置为时,DMS 才会运行此阶段。false

    • CDC(进行中):在最初的 CDC 阶段之后,DMS 会在源数据库上复制所发生的更改。只有在StopTaskCachedChangesApplied任务设置为 CDC 初始阶段之后,DMS 才会继续运行复制。false

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

  • 您停止的复制进入已停止状态。在以下情况下,您可以重新启动已停止的复制:

    • 您无法重新启动 DMS 已取消配置的复制。

    • 您可以使用操作重新启动已停止的仅限 CDC 或满载复制以及 CDC 复制。StartReplication您无法使用控制台重新启动已停止的复制。

    • 您无法重启使用 PostgreSQL 作为引擎的已停止复制。

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

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

支持的引擎版本

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

  • Microsoft SQL Server

  • PostgreSQL 兼容数据库

  • MySQL 兼容数据库

  • MariaDB

  • Oracle

  • IBM Db2

Amazon 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

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

  • 设置新的 Amazon Identity and Access Management (IAM) 策略和 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 标准版支持的端点类型的子集。
    目标数据库端点 选择账户中的现有端点。请注意, Amazon DMS Serverless 仅支持 Amazon DMS 标准版支持的端点类型的子集。
    复制类型 根据您的要求选择复制类型:
    • 满载:仅 Amazon DMS 迁移现有数据。

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

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

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

    表映射部分中,设置表映射以定义选择和筛选所要复制的数据的规则。在指定映射之前,请确保查看有关源数据库和目标数据库之间的数据类型映射的文档部分。有关源数据库和目标数据库的数据类型映射的信息,请参阅使用 Amazon DMS 端点主题中源和目标端点类型的 “数据类型” 部分。

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

    选项 操作

    VPC

    选择现有 VPC。

    子网组

    选择现有子网组。

    VPC 安全组

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

    Amazon KMS 密钥

    选择适当的 KMS 密钥。有关 KMS 密钥的信息,请参阅 Amazon Key Management Service API 参考中的创建密钥

    部署

    保留原样。

    可用区

    保留原样。

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

    留空可使用默认值 1 DCU。

    最大 DMS 容量单位(DCU)

    选择 16 个 DCU

    保留维护设置不变。

  4. 选择创建复制

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

修改 Amazon DMS 无服务器复制

要修改您的复制配置,请使用 modify-replication-config 操作。您只能修改处于CREATEDSTOPPED、或FAILED状态的 Amazon DMS 复制配置。有关该modify-replication-config操作的信息,请参阅 Amazon Database Migration Service API 参考中的 ModifyReplicationConfig

要修改无服务器复制配置,请使用 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 对象中的字段包括以下内容:

选项 描述

MinCapacity单位

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

MaxCapacity单位

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

KmsKey我是

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

ReplicationSubnetGroupId

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

VpcSecurityGroupIds

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

PreferredMaintenance窗口

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

MultiAZ

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

了解无服务器中的 Amazon DMS 自动扩展

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

  • MinCapacityUnits

  • MaxCapacityUnits

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

注意

在满载过程中,无服务器复制无法自动缩小规模。

在无服务器中 Amazon DMS 调整自动缩放

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

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

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

监控 Amazon DMS 无服务器复制

Amazon 提供了多种用于监控您的 Amazon DMS 无服务器复制和响应潜在事件的工具:

Amazon DMS 无服务器复制指标

无服务器复制监控包括以下统计数据的 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 是否:

  • 目标中没有主键或索引

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

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

疾病预防控制中心ThroughputBandwidth目标 KB/秒

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

疾病预防控制中心ThroughputRows来源 行/秒

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

疾病预防控制中心ThroughputRows目标 行/秒

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

FullLoadThroughputBandwidth目标 KB/秒

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

FullLoadThroughputRows目标 行/秒

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

Amazon DMS 无服务器复制日志

在 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'}

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

提高了 Oracle 到 Amazon Redshift 的满负荷迁移的吞吐量

Amazon DMS 显著提高了从 Oracle 到 Amazon Redshift 的满负荷迁移的吞吐量性能。DMS 会自动为表映射中没有该custom parallel-load选项的表启用此功能。对于具有自定义并行加载选项的表,DMS serverless 会根据给定的表映射配置来分配表负载。要使用增强的吞吐量,请执行以下操作:

  • 提供不引用分区或边界的选择规则。例如,如果表映射中的表设置包含parallel-load,则 DMS Serverless 将不会使用增强吞吐量功能。有关更多信息,请参阅 选择规则和操作

  • MaxFileSize和设置WriteBufferSize为 64 MB。有关更多信息,请参阅 使用 Amazon Redshift 作为 Amazon DMS 的目标时的端点设置

  • 对于包含稀疏数据的数据存储,true对于包含密集数据的数据存储,我们建议将设置CompressCsvFilesfalse为。

  • 将以下任务设置设置为0

    • ParallelLoadThreads

    • ParallelLoadQueuesPerThread

    • ParallelApplyThreads

    • ParallelApplyQueuesPerThread

    • ParallelLoadBufferSize

  • 设置为MaxFullLoadSubTasks49以支持并行数据迁移。

  • LOB mode 设置为 inline。有关更多信息,请参阅 在任务中为源数据库设置 LOB 支持 Amazon DMS

Amazon DMS 不为以下复制提供增强的吞吐量性能: