本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Redis OSS 是一个开源的内存数据结构存储,用作数据库、缓存和消息代理。在内存中管理数据可能导致读取或写入操作花费不到一毫秒的时间,每秒可执行数亿次操作。作为内存数据存储,Redis OSS 支持需要亚毫秒响应时间的苛刻要求应用程序。
使用 AWS DMS,您可以将数据从任何支持的源数据库迁移到目标 Redis OSS 数据存储,并且可以更大限度地减少停机时间。有关 Redis OSS 的更多信息,请参阅 Redis OSS 文档
除本地 Redis OSS 之外,AWS Database Migration Service 还支持以下内容:
-
Amazon ElastiCache(Redis OSS)
作为目标数据存储。ElastiCache(Redis OSS)可与您的 Redis OSS 客户端配合使用,并使用开放的 Redis OSS 数据格式来存储数据。 -
Amazon MemoryDB
作为目标数据存储。MemoryDB 与 Redis OSS 兼容,使您能够使用当前在用的所有 Redis OSS 数据结构、API 和命令来构建应用程序。
有关将 Redis OSS 作为 AWS DMS 目标的其他信息,请参阅以下章节:
主题
将 Redis OSS 集群作为 AWS 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 或更高版本创建启用集群模式的目标数据存储的更多信息,请参阅《Amazon ElastiCache(Redis OSS)用户指南》中的入门。
在开始数据库迁移之前,请使用以下条件启动 Redis OSS 集群。
-
集群拥有一个或多个分片。
-
如果您使用 ElastiCache(Redis OSS)目标,请确保您的集群不使用基于 IAM 角色的访问控制,而是使用 Redis OSS Auth 对用户进行身份验证。
-
启用多可用区。
-
确保集群具有足够的可用内存以容纳要从数据库迁移的数据。
-
在开始初始迁移任务之前,请确保您的目标 Redis OSS 集群中已清除所有数据。
在创建集群配置之前,应该确定数据迁移的安全要求。无论目标复制组的加密配置如何,DMS 都支持迁移到目标复制组。但是,只有在创建集群配置时才能启用或禁用加密。
将 Redis 作为 AWS Database Migration Service 目标的限制
将 Redis OSS 作为目标时存在以下限制:
-
由于 Redis OSS 是键值 no-sql 数据存储,因此当您的源是关系数据库时,使用的 Redis OSS 键命名约定是
schema-name.table-name.primary-key
。 -
在 Redis OSS 中,键值不能包含特殊字符
%
。否则,DMS 会跳过记录。 -
DMS 不会迁移包含
%
字符的行。 -
DMS 不会迁移字段名称中包含
%
字符的字段。 -
不支持完整 LOB 模式。
-
使用 ElastiCache(Redis OSS)作为目标时,不支持私有证书颁发机构(CA)。
将数据从关系或非关系数据库迁移到 Redis OSS 目标
您可以将数据从任何源 SQL 或 NoSQL 数据存储直接迁移到 Redis OSS 目标。设置和开始到 Redis OSS 目标的迁移类似于使用 DMS 控制台或 API 进行的任何完全加载和更改数据捕获迁移。要将数据库迁移到 Redis OSS 目标,请执行以下操作。
-
创建复制实例以执行迁移的所有过程。有关更多信息,请参阅 创建复制实例。
-
指定源端点。有关更多信息,请参阅 创建源和目标终端节点。
-
找到集群的 DNS 名称和端口号。
-
下载可用来验证 SSL 连接的证书捆绑包。
-
指定目标端点,如下所述。
-
创建一个任务或一组任务来定义要使用的表和复制过程。有关更多信息,请参阅 创建任务。
-
将数据从源数据库迁移到目标集群。
您可以通过以下两种方式之一开始数据库迁移:
-
您可以选择 AWS DMS 控制台并在其中执行每个步骤。
-
您可以使用 AWS Command Line Interface(AWS CLI)。有关使用适用于 AWS DMS 的 CLI 的更多信息,请参阅适用于 AWS DMS 的 AWS CLI。
找到集群的 DNS 名称和端口号
-
使用以下 AWS 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 作为目标,请使用以下 AWS 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
在您的 AWS 所在区域中填写访问指定 S3 存储桶所需的 Amazon S3 域及其提供的 rds-combined-ca-bundle.pem 文件。
使用 AWS 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),DMS 仅支持公有 CA。
身份验证类型 选择连接到 Redis OSS 目标时要执行的身份验证类型。选项包括无、身份验证角色和身份验证令牌。
如果选择身份验证角色,请提供身份验证用户名和身份验证密码。
如果选择身份验证令牌,则仅提供身份验证密码。
复制实例 [可选] 仅在您想要测试连接时,才选择先前在创建复制实例页面上输入的复制实例的名称。
提供端点的所有信息后,AWS DMS 会创建您的 Redis OSS 目标端点以供数据库迁移期间使用。
有关创建迁移任务和开始数据库迁移的信息,请参阅创建任务。
指定 Redis OSS 作为目标时的端点设置
要创建或修改目标终端节点,您可以使用控制台,也可以使用 CreateEndpoint
或 ModifyEndpoint
API 操作。
对于 Redis OSS 目标,在 AWS DMS 控制台中的创建端点或修改端点控制台页面上指定特定于端点的设置。
使用 CreateEndpoint
和 ModifyEndpoint
API 操作时,请为 RedisSettings
选项指定请求参数。以下示例说明如何使用 AWS 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
”。