将 Amazon OpenSearch Service 集群作为的目标Amazon Database Migration Service - Amazon Database Migration Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

将 Amazon OpenSearch Service 集群作为的目标Amazon Database Migration Service

您可以使用Amazon DMS将数据迁移到亚马逊 OpenSearch 服务(OpenSearch 服务)。OpenSearch Service 是一种托管服务,它让用户能够轻松地部署、操作和扩展 OpenSearch 服务群集。

在 OpenSearch 服务中,您使用索引和文档。索引是一个文档集合,文档是一个包含标量值、数组和其他对象的 JSON 对象。Elasticsearch 提供了基于 JSON 的查询语言,以便您可以查询索引中的数据并检索对应的文档。

何时Amazon DMS为 OpenSearch Service 的目标终端节点创建索引,它会为源终端节点的每个表创建一个索引。创建 OpenSearch 服务索引的开销取决于多个因素。这些因素包括所创建的索引数量、这些索引中的数据总量,以及 Elasticsearch 为每个文档存储的少量元数据。

使用适合您的迁移范围的计算和存储资源配置 OpenSearch Service 集群。建议您根据要使用的复制任务考虑以下因素:

  • 对于完全数据加载,请考虑您要迁移的数据总量以及传输速度。

  • 对于复制持续更改,请考虑更新频率,以及您的端到端延迟要求。

此外,还应在 OpenSearch 集群上配置索引设置,并密切关注文档计数。

多线程完全加载任务设置

为了帮助提高速度传输,Amazon DMS支持 OpenSearch 服务目标集群的多线程完全加载。Amazon DMS支持此多线程处理,并使用包含下列内容的任务设置:

  • MaxFullLoadSubTasks— 使用此选项指示要并行加载的表的最大数目。DMS 使用专用的子任务将各个表加载到其对应的 OpenSearch Service 目标索引。默认值为 8;最大值为 49。

  • ParallelLoadThreads— 使用此选项指定将Amazon DMS使用来将每个表加载到其 OpenSearch 服务目标索引。开放搜索服务目标的最大值为 32。您可以请求提高此最大值限制。

    注意

    如果您不更改 ParallelLoadThreads 的默认值 (0),Amazon DMS 一次传输一个记录。此方法会在您的 Open搜索服务集群上施加过多的负载。确保您将此选项设置为 1 或更高。

  • ParallelLoadBufferSize— 使用此选项指定在缓冲区(并行加载线程将数据加载到 OpenSearch Service 目标时使用)中存储的最大记录数。默认值是 50。最大值为 1,000。将此设置与 ParallelLoadThreads 一起使用;仅在有多个线程时ParallelLoadBufferSize 才有效。

有关 DMS 如何使用多线程处理加载 OpenSearch Service 集群的更多信息,请参阅Amazon博客帖子针对的扩展 Amazon Elasticsearch ServiceAmazon Database Migration Service迁移.

多线程 CDC 加载任务设置

您可以提高 OpenSearch 服务目标集群的更改数据捕获 (CDC) 的性能,使用任务设置来修改PutRecordsAPI 调用。为此,您可以使用 ParallelApply* 任务设置来指定并发线程的数量、每个线程的队列数以及要存储在缓冲区中的记录数。例如,假设您要执行 CDC 加载并且要并行应用 32 个线程。您还希望对于每个线程访问 64 个队列,每个缓冲区存储 50 条记录。

注意

Support 使用ParallelApply*任务设置到亚马逊 OpenSearch 服务目标终端节点,请参阅Amazon DMS版本 3.4.0 及更高版本。

要提高 CDC 性能,请 Amazon DMS 支持以下任务设置:

  • ParallelApplyThreads— 指定并行线程的数量Amazon DMS在 CDC 加载期间使用将数据记录推送到 OpenSearch Service 目标终端节点。默认值为零 (0),最大值为 32。

  • ParallelApplyBufferSize— 指定在 CDC 加载期间要在每个缓冲区队列中存储的供并发线程推送到 OpenSearch Service 目标终端节点的最大记录数。默认值为 100,最大值为 1,000。当 ParallelApplyThreads 指定多个线程时,请使用此选项。

  • ParallelApplyQueuesPerThread— 指定每个线程访问以将数据记录从队列中取出并在 CDC 期间为 OpenSearch 服务终端节点生成批处理负载的队列数。

使用 ParallelApply* 任务设置时, partition-key-type 默认值是表的 primary-key,而不是 schema-name.table-name

从关系数据库表迁移到 OpenSearch 服务索引

Amazon DMS支持将数据迁移到 Open搜索服务的标量数据类型。从 Oracle 或 MySQL 等关系数据库迁移到 OpenSearch 服务时,您可能希望重构存储此数据的方式。

Amazon DMS支持以下 OpenSearch 服务标量数据类型:

  • Boolean

  • 日期

  • Float

  • Int

  • 字符串

Amazon DMS 将 Date 类型的数据转换为 String 类型。您可以指定自定义映射来解释这些日期。

Amazon DMS 不支持迁移 LOB 数据类型。

将 Amazon Open搜索服务作为目标的先决条件Amazon Database Migration Service

在开始使用 OpenSearch 服务数据库作为目标之前Amazon DMS,请确保创建Amazon Identity and Access Management(IAM) 角色。这个角色应该让Amazon DMS访问目标终端节点的 OpenSearch 服务索引。以下 IAM 策略中显示了所需的最小访问权限集合。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

您在迁移到 OpenSearch Service 时使用的角色必须具有以下权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpDelete", "es:ESHttpGet", "es:ESHttpHead", "es:ESHttpPost", "es:ESHttpPut" ], "Resource": "arn:aws:es:region:account-id:domain/domain-name/*" } ] }

在上述示例中,将region使用Amazon区域标识符account-id使用您的Amazon账户 ID,以及domain-name替换为您的亚马逊 OpenSearch 服务域名。例如,arn:aws:es:us-west-2:123456789012:domain/my-es-domain

将 OpenSearch 服务作为目标时的额外连接属性Amazon DMS

当您设置 OpenSearch Service 目标终端节点时,您可以指定额外的连接属性。额外的连接属性是使用键值对指定的并以分号分隔。

下表介绍了将 OpenSearch 服务实例用作Amazon DMS源。

属性名称 有效值 默认值和描述

fullLoadErrorPercentage

一个大于 0 但不大于 100 的正整数。

10 – 对于完全加载任务,此属性确定任务失败之前允许的错误数阈值。例如,假设源终端节点有 1,500 行且此参数设置为 10。那么,如果在写入到目标终端节点时 Amazon DMS 遇到超过 150 个错误(行数的 10%),任务将失败。

errorRetryDuration

大于 0 的正整数。

300 – 如果目标终端节点出现错误,Amazon DMS 将重试的秒数。否则,任务将失败。

将 Amazon Open搜索服务作为目标的限制Amazon Database Migration Service

将 Amazon OpenSearch Service 作为目标时存在以下限制:

  • OpenSearch Service 使用动态映射(自动猜测)来确定用于已迁移数据的数据类型。

  • OpenSearch Service 存储具有唯一 ID 的每个文档。以下是示例 ID。

    "_id": "D359F8B537F1888BC71FE20B3D79EAE6674BE7ACA9B645B0279C7015F6FF19FD"

    每个文档 ID 为 64 字节长,因此请将其视为一项存储要求。例如,如果您将 100,000 行从Amazon DMS源,生成的 OpenSearch Service 索引需要存储额外的 6,400,000 字节。

  • 使用 OpenSearch Service,无法对主键属性进行更新。在将持续复制与更改数据捕获 (CDC) 一起使用时,该限制是非常重要的,因为这可能会导致在目标中包含不需要的数据。在 CDC 模式下,主键映射到 SHA256 值,长度为 32 个字节。这些字符串将转换为人类可读的 64 字节字符串,并用作 OpenSearch Service 文档 ID。

  • 如果Amazon DMS遇到无法迁移的项目,它会将错误消息写入 Amazon CloudWatch Logs。这一行为不同于其他 Amazon DMS 目标终端节点将错误写入例外表的行为。

  • Amazon DMS不支持连接到通过主用户和密码启用了细粒度访问控制的 Amazon ES 群集。

Amazon OpenSearch 服务的目标数据类型

Amazon DMS 从异构数据库迁移数据时,此服务将数据类型从源数据库映射到称为 Amazon DMS 数据类型的中间数据类型。然后,此服务将中间数据类型映射到目标数据类型。下表显示了每个Amazon DMS数据类型及其映射到 OpenSearch 服务中的数据类型。

Amazon DMS 数据类型 开放搜索服务数据类型

Boolean

布尔值

日期

字符串

时间

date

时间戳

date

INT4

integer

Real4

float

UINT4

integer

有关 Amazon DMS 数据类型的其他信息,请参阅的数据类型AmazonDatabase Migration Service