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

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

使用 Redis 作为目标Amazon Database Migration Service

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

使用Amazon DMS,您可以将数据从任何支持的源数据库迁移到目标 Redis 数据存储,而停机时间最小。有关 Redis 的其他信息,Redis 文档.

除了本地 Redis 之外,Amazon Database Migration Service支持以下版本:

  • Amazon ElastiCache for Redis将作为目标数据存储。Redis 版 ElastiCache 可与您的 Redis 客户端协作,并使用开放的 Redis 数据格式存储数据。

  • Amazon 内存数据库 Redis将作为目标数据存储。MemoryDB 与 Redis 兼容,使您能够使用目前使用的所有 Redis 数据结构、API 和命令构建应用程序。

有关使用 Redis 作为目标的其他信息Amazon DMS,请参阅以下部分:

将 Redis 集群作为目标的先决条件Amazon DMS

DMS 支持在独立配置中的本地 Redis 目标,或者作为 Redis 群集支持数据自动存储分片跨多节点。分片是将数据分割成更小的区块的过程,称为分片,分布在多个服务器或节点上。实际上,分片是包含总数据集的子集的数据分区,并为整体工作负载的一部分提供服务。

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

注意

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

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

  • 您的集群有一个或多个分片。

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

  • 启用多可用区(可用区)。

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

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

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

将 Redis 作为目标的限制Amazon Database Migration Service

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

  • 由于 Redis 是一个键值无 SQL 数据存储,因此在源是关系数据库时使用的 Redis 键命名约定是schema-name.table-name.primary-key.

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

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

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

  • 不支持完整 LOB 模式。

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

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

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

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

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

  • 找到您的集群的 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

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

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

    如果你使用 MemoryDB for Redis 作为目标,请使用以下命令Amazon CLI命令为 Redis 集群提供终端节点地址。

    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 域Amazon访问指定的 S3 存储桶及其提供的 rds-bundle.pem 文件所需的区域。

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

该终端节点适用于已运行的 Redis 目标。

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

    对于该选项 请执行该操作

    终端节点类型

    选择目标终端节点类型。

    终端节点标识符

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

    目标引擎

    选择Redis作为要连接此终端节点的数据库引擎的类型。

    集群名称

    输入 Redis 集群的 DNS 名称。

    端口

    输入 Redis 集群的端口号。

    SSL 安全协议

    选择纯文本要么SSL 加密.

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

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

    对于本地 Redis,DMS 支持公共和私有证书颁发机构 (CA)。对于 Redis 版的 ElastiCache,DMS 仅支持公共 CA。

    验证类型

    选择连接到 Redis 时要执行的身份验证类型。选项包括验证角色, 和身份验证令牌.

    如果选择身份验证角色,请提供GREATE username密码验证.

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

    复制实例

    [可选]仅当您打算测试连接时,请选择之前在创建复制实例页.

完为终端节点提供所有信息后,Amazon DMS创建 Redis 目标终端节点以便在数据库迁移期间使用。

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

将 Redis 的终端节点设置指定为目标

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

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

使用时CreateEndpointModifyEndpoint指定 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 集群,并且位于同一 VPC 中。

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

  • SslSecurityProtocol—(可选)有效值包括plaintextssl-encryption. 默认为 ssl-encryption

    这些区域有:plaintext选项不为终端节点和数据库之间的流量提供传输层安全性 (TLS) 加密。

    使用ssl-encryption以建立加密的连接。ssl-encryption不需要 SSL 证书颁发机构 (CA) ARN 来验证服务器的证书,但可以选择使用SslCaCertificateArn设置。如果没有给出证书颁发机构 ARN,DMS 将使用亚马逊根 CA。

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

  • AuthType—(必填)指示连接到 Redis 时要执行的身份验证类型。有效值包括 noneauth-tokenauth-role

    这些区域有:auth-token选项需要一个”身份密码“被提供,而auth-role选项需要”Auth 用户名" 和 "身份密码“被提供。