使用 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 数据格式来存储您的数据。

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

有关将 Redis 作为目标的更多信息Amazon DMS,请参阅以下章节:

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

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

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

注意

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

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

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

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

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

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

  • 在开始初始迁移任务之前,请确保目标 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" } ...

    如果您使用 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-组合 ca-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 时要执行的身份验证类型。选项包括:身份验证角色, 和身份验证令牌.

    如果选择 “身份验证” 角色,请提供身份验证身份验证.

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

    复制实例

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

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

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

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

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

对于Amazon DMS控制台,指定终端特定的设置创建终端节点或者修改终端节点控制台页面。

使用CreateEndpointModifyEndpointAPI 操作,请指定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选项需要”验证用户名" 和 "验证密码“提供。