本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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连接的证书包。
-
指定目标端点,如下所述。
-
创建一个任务或一组任务来定义要使用的表和复制过程。有关更多信息,请参阅 创建任务。
-
将数据从源数据库迁移到目标集群。
您可以通过以下两种方式之一开始数据库迁移:
-
您可以选择 Amazon DMS 控制台并在其中执行每个步骤。
-
你可以使用 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为目标
要创建或修改目标终端节点,您可以使用控制台或CreateEndpoint
或ModifyEndpoint
API操作。
对于控制台中的 Redis OSS 目标,请在创建终端节点或修改终端节点 Amazon DMS 控制台页面上指定 En dpoint 特定的设置。
使用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 (RedisOSS) 作为目标时,不支持私有 CA。 -
AuthType
—(必需)表示连接到 Redis OSS 时要执行的身份验证类型。有效值包括none
、auth-token
和auth-role
。该
auth-token
选项需要”AuthPassword
“提供,而auth-role
选项需要”AuthUserName
" 和 "AuthPassword
“提供。