View a markdown version of this page

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

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

使用 Redis OSS 作为目标 Amazon Database Migration Service

Redis OSS 是一个开源的内存数据结构存储,用作数据库、缓存和消息代理。在内存中管理数据可能导致读取或写入操作花费不到一毫秒的时间,每秒可执行数亿次操作。作为内存数据存储,Redis OSS 支持需要亚毫秒响应时间的苛刻要求应用程序。

使用 Amazon DMS,您可以将数据从任何支持的源数据库迁移到目标 Redis OSS 数据存储,最大限度地减少停机时间。有关 Redis OSS 的更多信息,请参阅 Redis OSS 文档。

除了本地 Redis OSS 之外,还 Amazon Database Migration Service 支持以下内容:

  • 亚马逊 ElastiCache (Redis OSS)作为目标数据存储。 ElastiCache (Redis OSS) 可与你的 Redis OSS 客户端配合使用,并使用开放的 Redis OSS 数据格式来存储你的数据。

  • Amazon MemoryDB 作为目标数据存储。MemoryDB 与 Redis OSS 兼容,使您能够使用当今使用的所有 Redis OSS 数据结构和命令来构建应用程序。 APIs

有关使用 Redis OSS 作为目标的更多信息 Amazon DMS,请参阅以下各节:

使用 Redis OSS 集群作为目标的先决条件 Amazon DMS

DMS 支持独立配置中的本地 Redis OSS 目标,也支持在多个节点之间自动分片 数据的 Redis OSS 集群。分片是将数据分成小块(称为分片)的过程,这些小块分布在多个服务器或节点上。实际上,分片是一个数据分区,它包含总数据集的子集,并作为总工作负载的一部分。

由于 Redis OSS 是键值 NoSQL 数据存储,因此当您的源是关系数据库时,使用的 Redis OSS 键命名约定是 schema-name.table-name.primary-key。在 Redis OSS 中,键和值不得包含特殊字符 %。否则,DMS 会跳过记录。

注意

如果您使用 ElastiCache (Redis OSS) 作为目标,DMS 仅支持启用集群模式的配置。有关使用 ElastiCache (Redis OSS) 6.x 或更高版本创建启用集群模式的目标数据存储的更多信息,请参阅亚马逊 ElastiCache (Redis OSS) 用户指南中的入门。

在开始数据库迁移之前,请使用以下条件启动 Redis OSS 集群。

  • 集群拥有一个或多个分片。

  • 如果您使用的是 ElastiCache (Redis OSS) 目标,请确保您的集群不使用基于 IAM 角色的访问控制。而是使用 Redis OSS Auth 对用户进行身份验证。

  • 启用多可用区。

  • 确保集群具有足够的可用内存以容纳要从数据库迁移的数据。

  • 在开始初始迁移任务之前,请确保您的目标 Redis OSS 集群中已清除所有数据。

在创建集群配置之前,应该确定数据迁移的安全要求。无论目标复制组的加密配置如何,DMS 都支持迁移到目标复制组。但是,只有在创建集群配置时才能启用或禁用加密。

使用 Redis 作为目标时的限制 Amazon Database Migration Service

将 Redis OSS 作为目标时存在以下限制:

  • 由于 Redis OSS 是键值 no-sql 数据存储,因此当您的源是关系数据库时,使用的 Redis OSS 键命名约定是 schema-name.table-name.primary-key。

  • 在 Redis OSS 中,键值不能包含特殊字符 %。否则,DMS 会跳过记录。

  • DMS 不会迁移包含 % 字符的行。

  • DMS 不会迁移字段名称中包含 % 字符的字段。

  • 不支持完整 LOB 模式。

  • 使用 (Redis OSS) 作为目标时,不支持私有证书颁发机构 ElastiCache (CA)。

  • Amazon DMS 使用 Redis 作为目标端点时,不支持包含嵌入式'\0'字符的源数据。包含嵌入'\0'字符的数据将在第一个'\0'字符处被截断。

将数据从关系或非关系数据库迁移到 Redis OSS 目标

您可以将数据从任何源 SQL 或 NoSQL 数据存储直接迁移到 Redis OSS 目标。设置和开始到 Redis OSS 目标的迁移类似于使用 DMS 控制台或 API 进行的任何完全加载和更改数据捕获迁移。要将数据库迁移到 Redis OSS 目标,请执行以下操作。

  • 创建复制实例以执行迁移的所有过程。有关更多信息,请参阅 创建复制实例。

  • 指定源端点。有关更多信息,请参阅 创建源和目标终端节点。

  • 找到集群的 DNS 名称和端口号。

  • 下载可用来验证 SSL 连接的证书捆绑包。

  • 指定目标端点,如下所述。

  • 创建一个任务或一组任务来定义要使用的表和复制过程。有关更多信息,请参阅 创建任务。

  • 将数据从源数据库迁移到目标集群。

您可以通过以下两种方式之一开始数据库迁移:

  1. 您可以选择 Amazon DMS 控制台并在其中执行每个步骤。

  2. 你可以使用 Amazon Command Line Interface (Amazon CLI)。有关将 CLI 与配合使用的更多信息 Amazon DMS,Amazon CLI 请参阅 Amazon DMS。

找到集群的 DNS 名称和端口号
  • 使用以下 Amazon CLI 命令为replication-group-id提供您的复制组的名称。

    aws elasticache describe-replication-groups --replication-group-id myreplgroup

    此处,输出在集群中主节点的 Address 属性中显示 DNS 名称,在 Port 属性中显示端口号。

    ... "ReadEndpoint": { "Port": 6379, "Address": "myreplgroup- 111.1abc1d.1111.uuu1.cache.example.com" } ...

    如果您使用 MemoryDB 作为目标,请使用以下 Amazon CLI 命令为您的 Redis OSS 集群提供端点地址。

    aws memorydb describe-clusters --clusterid clusterid
下载可用来验证 SSL 连接的证书捆绑包。
  • 在命令行输入以下 wget 命令。Wget 是一个免费的 GNU 命令行实用工具,用于从互联网下载文件。

    wget https://s3.aws-api-domain/rds-downloads/rds-combined-ca-bundle.pem

    在这里,aws-api-domain填写您 Amazon 所在地区访问指定的 S3 存储桶及其提供的 rds-combined-ca-bundle .pem 文件所需的 Amazon S3 域。

使用 Amazon DMS 控制台创建目标终端节点

此端点适用于已经在运行的 Redis OSS 目标。

  • 在控制台的导航窗格中,选择端点,然后选择创建端点。下表描述了设置。

    对于该选项 请执行该操作

    端点类型

    选择目标端点类型。

    终端节点标识符

    输入端点名称。例如,在名称中包含端点的类型,如 my-redis-target。

    目标引擎

    选择 Redis OSS 作为您希望此端点连接的数据库引擎类型。

    集群名称

    输入您的 Redis OSS 集群的 DNS 名称。

    端口:

    输入您的 Redis OSS 集群的端口号。

    SSL 安全协议

    选择纯文本或 SSL 加密。

    纯文本 – 该选项不为端点和数据库之间的流量提供传输层安全性协议(TLS)加密。

    SSL 加密 – 如果选择此选项,请输入 SSL 证书颁发机构(CA)证书 ARN 以验证服务器的证书并建立加密连接。

    对于本地 Redis OSS,DMS 同时支持公有和私有证书颁发机构(CA)。对于 ElastiCache (Redis OSS),分布式消息服务仅支持公有 CA。

    身份验证类型

    选择连接到 Redis OSS 目标时要执行的身份验证类型。选项包括无、身份验证角色和身份验证令牌。

    如果选择身份验证角色,请提供身份验证用户名和身份验证密码。

    如果选择身份验证令牌,则仅提供身份验证密码。

    复制实例

    [可选] 仅在您想要测试连接时,才选择先前在创建复制实例页面上输入的复制实例的名称。

提供端点的所有信息后, Amazon DMS 会创建您的 Redis OSS 目标端点以供数据库迁移期间使用。

有关创建迁移任务和开始数据库迁移的信息,请参阅创建任务。

指定 Redis OSS 作为目标时的端点设置

要创建或修改目标终端节点,您可以使用控制台,也可以使用 CreateEndpoint 或 ModifyEndpoint API 操作。

对于控制台中的 Redis OSS 目标,请在创建终端节点或修改终端节点 Amazon DMS 控制台页面上指定终端节点特定的设置。

使用 CreateEndpoint 和 ModifyEndpoint API 操作时,请为 RedisSettings 选项指定请求参数。以下示例说明如何使用 Amazon CLI执行此操作。

aws dms create-endpoint --endpoint-identifier my-redis-target --endpoint-type target --engine-name redis --redis-settings '{"ServerName":"sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com","Port":6379,"AuthType":"auth-token", "SslSecurityProtocol":"ssl-encryption", "AuthPassword":"notanactualpassword"}' { "Endpoint": { "EndpointIdentifier": "my-redis-target", "EndpointType": "TARGET", "EngineName": "redis", "EngineDisplayName": "Redis", "TransferFiles": false, "ReceiveTransferredFiles": false, "Status": "active", "KmsKeyId": "arn:aws:kms:us-east-1:999999999999:key/x-b188188x", "EndpointArn": "arn:aws:dms:us-east-1:555555555555:endpoint:ABCDEFGHIJKLMONOPQRSTUVWXYZ", "SslMode": "none", "RedisSettings": { "ServerName": "sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com", "Port": 6379, "SslSecurityProtocol": "ssl-encryption", "AuthType": "auth-token" } } }

--redis-settings 参数如下:

  • ServerName –(必填)类型为 string,指定数据将迁移到的 Redis OSS 集群,并且位于同一 VPC 中。

  • Port –(必填)类型为 number,用于访问端点的端口值。

  • SslSecurityProtocol –(可选)有效值包括 plaintext 和 ssl-encryption。默认值为 ssl-encryption。

    plaintext 选项不为端点和数据库之间的流量提供传输层安全性协议(TLS)加密。

    使用 ssl-encryption 建立加密连接。ssl-encryption 不需要 SSL 证书颁发机构(CA)ARN 来验证服务器的证书,但可以选择使用 SslCaCertificateArn 设置进行识别。如果没有为证书颁发机构提供 ARN,则 DMS 将使用 Amazon 根 CA。

    使用本地 Redis OSS 目标时,您可以使用 SslCaCertificateArn 将公有或私有证书颁发机构(CA)导入 DMS,并提供该 ARN 用于服务器身份验证。使用 ElastiCache (Redis OSS) 作为目标时,不支持私有 CA。

  • AuthType –(必填)指示连接到 Redis OSS 时要执行的身份验证类型。有效值包括 none、auth-token 和 auth-role。

    该auth-token选项需要提供 “AuthPassword”,而该auth-role选项则要求提供 AuthUserName “AuthPassword” 和 “”。