AWS Database Migration Service
用户指南 (版本 API Version 2016-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 Amazon Elasticsearch Service 集群作为 AWS Database Migration Service 目标

您可以使用 AWS DMS 将数据迁移到 Amazon Elasticsearch Service (Amazon ES)。Amazon ES 是一种托管服务,可以让您轻松部署、操作和扩展 Elasticsearch 集群。

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

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

您必须使用 AWS Database Migration Service 引擎版本 3.1.2 或更高版本将数据迁移到 Amazon Elasticsearch Service。

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

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

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

此外,还应在 Elasticsearch 集群上配置索引设置,并密切关注分片和副本数量。

从关系数据库表迁移到 Amazon ES 索引

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

AWS DMS 支持以下 Elasticsearch 标量数据类型:

  • Boolean

  • Date

  • Float

  • Int

  • String

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

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

将 Amazon Elasticsearch Service 作为 AWS Database Migration Service 目标的先决条件

在开始使用 Elasticsearch 数据库作为 AWS DMS 目标前,请确保您创建了 AWS Identity and Access Management (IAM) 角色。此角色应该允许 AWS DMS 访问目标终端节点的 Elasticsearch 索引。以下示例角色策略中显示了所需的最低访问权限集合。

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

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

{ "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 替换为 AWS 区域标识符、account-id 替换为您的 AWS 账户 ID,domain-name 替换为您的 Amazon Elasticsearch Service 域的名称。例如,arn:aws:es:us-west-2:123456789012:domain/my-es-domain

将 Elasticsearch 作为 AWS DMS 目标时的额外连接属性

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

下表列出了将 Elasticsearch 实例用作 AWS DMS 源时可用的额外连接属性。

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

fullLoadErrorPercentage

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

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

errorRetryDuration

大于 0 的正整数。

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

将 Amazon Elasticsearch Service 作为 AWS Database Migration Service 目标时的限制

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

  • AWS DMS 仅支持复制包含非复合主键的表。源表的主键必须由单个列组成。

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

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

    "_id": "D359F8B537F1888BC71FE20B3D79EAE6674BE7ACA9B645B0279C7015F6FF19FD"

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

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

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

Amazon Elasticsearch Service 的目标数据类型

AWS DMS 从异构数据库迁移数据时,此服务将数据类型从源数据库映射到称为 AWS DMS 数据类型的中间数据类型。然后,此服务将中间数据类型映射到目标数据类型。下表列出了各种 AWS DMS 数据类型及其映射到 Elasticsearch 中的数据类型。

AWS DMS 数据类型 Elasticsearch 数据类型

Boolean

boolean

日期

string

时间

date

时间戳

date

INT4

integer

Real4

float

UINT4

integer

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