本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
您可以使用将数据迁移 AWS DMS 到亚马逊 OpenSearch 服务(OpenSearch 服务)。 OpenSearch 服务是一项托管服务,可以轻松部署、操作和扩展 OpenSearch 服务集群。
在 S OpenSearch ervice 中,您可以使用索引和文档。索引是文档的集合,文档是包含标量值、数组和其他对象的 JSON 对象。 OpenSearch 提供了基于 JSON 的查询语言,因此您可以查询索引中的数据并检索相应的文档。
为 S OpenSearch ervice 的目标终端节点 AWS DMS 创建索引时,它会为源终端节点中的每个表创建一个索引。创建 OpenSearch 服务索引的成本取决于多个因素。这些是创建的索引数量、这些索引中的数据总量以及为每个文档 OpenSearch 存储的少量元数据。
为您的 OpenSearch 服务集群配置适合迁移范围的计算和存储资源。建议您根据要使用的复制任务考虑以下因素:
-
对于完全数据加载,请考虑您要迁移的数据总量以及传输速度。
-
要复制正在进行的更改,请考虑更新频率和 end-to-end延迟要求。
此外,在 OpenSearch 集群上配置索引设置,密切注意文档数量。
多线程完全加载任务设置
为了帮助提高传输速度, AWS DMS 支持对 OpenSearch 服务目标集群进行多线程满载。 AWS DMS 支持这种多线程,其任务设置包括以下内容:
-
MaxFullLoadSubTasks
– 使用此选项指示要并行加载的表的最大数目。DMS 使用专用子任务将每个表加载到其对应的 OpenSearch 服务目标索引中。默认值为 8;最大值为 49。 -
ParallelLoadThreads
— 使用此选项指定用于将每个表加载到其 OpenSearch 服务目标索引的线程数。 AWS DMS OpenSearch 服务目标的最大值为 32。您可以请求提高此最大值限制。注意
如果您不更改
ParallelLoadThreads
的默认值 (0), AWS DMS 一次传输一个记录。这种方法会给您的 OpenSearch 服务集群带来不必要的负担。确保您将此选项设置为 1 或更高。 -
ParallelLoadBufferSize
— 使用此选项指定要存储在缓冲区中的最大记录数,并行加载线程使用这些缓冲区将数据加载到 OpenSearch 服务目标。默认值是 50。最大值为 1000。将此设置与ParallelLoadThreads
一起使用;仅在有多个线程时ParallelLoadBufferSize
才有效。
有关 DMS 如何使用多线程加载 OpenSearch 服务集群的更多信息,请参阅 AWS 博客文章 Scale Amazon S OpenSearch er
多线程 CDC 加载任务设置
您可以使用任务设置来修改 PutRecords
API 调用的行为,从而提高 OpenSearch 服务目标集群的更改数据捕获 (CDC) 性能。为此,您可以使用 ParallelApply*
任务设置来指定并发线程的数量、每个线程的队列数以及要存储在缓冲区中的记录数。例如,假设您要执行 CDC 加载并且要并行应用 32 个线程。您还希望对于每个线程访问 64 个队列,每个缓冲区存储 50 条记录。
注意
3.4.0 及更高 AWS DMS 版本支持在 CDC 期间使用ParallelApply*
任务设置到亚马逊 OpenSearch 服务目标终端节点。
为了提高 CDC 性能, AWS DMS 支持以下任务设置:
-
ParallelApplyThreads
— 指定在 CDC 加载期间 AWS DMS 用于将数据记录推送到 OpenSearch 服务目标端点的并发线程数。默认值为零(0),最大值为 32。 -
ParallelApplyBufferSize
— 指定在每个缓冲队列中存储的最大记录数,以便并发线程在 CDC 加载期间推送到 OpenSearch 服务目标端点。默认值是 100,最大值是 1,000。当ParallelApplyThreads
指定多个线程时,请使用此选项。 -
ParallelApplyQueuesPerThread
— 指定每个线程访问的队列数,以便在 CDC 期间将数据记录从队列中提取数据记录并为 OpenSearch 服务端点生成批量加载。
使用 ParallelApply*
任务设置时,partition-key-type
默认值是表的 primary-key
,而不是 schema-name.table-name
。
从关系数据库表迁移到 OpenSearch 服务索引
AWS DMS 支持将数据迁移到 OpenSearch 服务的标量数据类型。从 Oracle 或 MySQL 等关系数据库迁移到 OpenSearch 服务时,您可能需要调整存储这些数据的方式。
AWS DMS 支持以下 OpenSearch 服务标量数据类型:
-
布尔值
-
日期
-
浮点型
-
Int
-
字符串
AWS DMS 将日期类型的数据转换为字符串类型。您可以指定自定义映射来解释这些日期。
AWS DMS 不支持 LOB 数据类型的迁移。
使用亚马逊 OpenSearch 服务作为目标的先决条件 AWS Database Migration Service
在开始使用 OpenSearch 服务数据库作为目标之前 AWS DMS,请务必创建一个 AWS Identity and Access Management (IAM) 角色。此角色应允许 AWS DMS 访问目标端点的 OpenSearch 服务索引。以下 IAM policy 中显示了所需的最小访问权限集合。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"Service": "dms.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
您用于迁移到 S OpenSearch ervice 的角色必须具有以下权限。
{ "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
/*" } ] }
在前面的示例中,
替换为 AWS 地区标识、region
您的 AWS 账户 ID 和account-id
您的亚马逊 OpenSearch 服务域名。例如,domain-name
arn:aws:es:us-west-2:123456789012:domain/my-es-domain
使用 OpenSearch 服务作为目标时的终端节点设置 AWS DMS
您可以使用端点设置来配置 OpenSearch 服务目标数据库,就像使用额外的连接属性一样。您可以在使用 AWS DMS 控制台创建目标端点时指定设置,或者使用中的create-endpoint
命令和 --elasticsearch-settings '{"
JSON 语法。AWS CLIEndpointSetting"
:
"value"
, ...
}'
下表显示了您可以将 OpenSearch 服务作为目标使用的终端节点设置。
属性名称 | 有效值 | 默认值和描述 |
---|---|---|
|
一个大于 0 但不大于 100 的正整数。 |
10 – 对于完全加载任务,此属性确定任务失败之前允许的错误数阈值。例如,假设源终端节点有 1,500 行且此参数设置为 10。如果在写入目标端点时 AWS DMS 遇到超过 150 个错误(占行数的 10%),则任务将失败。 |
|
大于 0 的正整数。 |
300-如果目标端点发生错误,则 AWS DMS 重试此数秒。否则,任务将失败。 |
使用亚马逊 OpenSearch 服务作为目标时的限制 AWS Database Migration Service
使用亚马逊 OpenSearch 服务作为目标时,存在以下限制:
-
OpenSearch 服务使用动态映射(auto guess)来确定用于迁移数据的数据类型。
-
OpenSearch 服务使用唯一的 ID 存储每个文档。以下是示例 ID。
"_id": "D359F8B537F1888BC71FE20B3D79EAE6674BE7ACA9B645B0279C7015F6FF19FD"
每个文档 ID 为 64 字节长,因此请将其视为一项存储要求。例如,如果您从 AWS DMS 源迁移 100,000 行,则生成的 OpenSearch 服务索引需要额外存储 6,400,000 字节。
-
使用 S OpenSearch ervice,您无法更新主键属性。在将持续复制与更改数据捕获(CDC)一起使用时,该限制是非常重要的,因为这可能会导致在目标中包含不需要的数据。在 CDC 模式下,主键映射到长度为 32 字节的 SHA256 值。它们被转换为人类可读的 64 字节字符串,并用作 OpenSearch 服务文档。 IDs
-
如果 AWS DMS 遇到任何无法迁移的项目,它会将错误消息写入 Amazon CloudWatch Logs。此行为不同于其他 AWS DMS 目标端点的行为,后者将错误写入异常表。
-
AWS DMS 不支持连接使用主用户和密码启用了精细访问控制的 Amazon ES 集群。
-
AWS DMS 不支持无服务器 OpenSearch 服务。
-
OpenSearch 服务不支持将数据写入预先存在的索引。
Amazon OpenSearch 服务的目标数据类型
AWS DMS 迁移来自异构数据库的数据时,该服务会将源数据库中的数据类型映射到称为 AWS DMS 数据类型的中间数据类型。然后,此服务将中间数据类型映射到目标数据类型。下表显示了每种 AWS DMS 数据类型及其在 S OpenSearch ervice 中映射到的数据类型。
AWS DMS 数据类型 | OpenSearch 服务数据类型 |
---|---|
布尔值 |
布尔值 |
日期 |
字符串 |
时间 |
date |
时间戳 |
date |
INT4 |
整数 |
Real4 |
float |
UINT4 |
整数 |
有关 AWS DMS 数据类型的更多信息,请参见Database Migration Servic AWS e 的数据类型。