使用 Redis OSS 作为目标 Amazon Database Migration Service - Amazon 数据库迁移服务
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请参阅 R edis 文档OSS

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

  • 亚马逊 ElastiCache (RedisOSS)作为目标数据存储。 ElastiCache (RedisOSS) 可与您的 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 是键值无SQL数据存储,因此当您的源是关系数据库时,使用的 Redis OSS 键命名约定是 schema-name.table-name.primary-key。在 Redis 中OSS,键和值不得包含特殊字符%。否则,将DMS跳过记录。

注意

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

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

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

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

  • 启用多可用区。

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

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

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

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

使用 Redis OSS 作为目标时,存在以下限制:

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

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

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

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

  • 不支持完整LOB模式。

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

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

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

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

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

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

  • 下载可用于验证SSL连接的证书包。

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

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

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

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

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

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

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

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

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

    ... "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以验证服务器的证书并建立加密连接。

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

    身份验证类型

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

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

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

    复制实例

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

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

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

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

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

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

使用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 OSS 集群,并且位于您的集群中。VPC

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

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

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

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

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

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

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