本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
MemoryDB 的在线重新分片和分片重新平衡
通过对 Memory Db 使用在线重新分片和分片重新平衡,您可以在无需停机的情况下动态扩展 Memory DB。此方法意味着,即使在进行扩展或重新平衡的过程中,您的集群也可以继续为请求提供服务。
您可执行以下操作:
-
扩展— 通过向 MemyDB 集群添加分片来增加读写容量。
如果您向集群添加一个或多个分片,则每个新分片中的节点数量与最小的现有分片中的节点数量相同。
-
扩展— 通过删除 Memory 集群中的分片降低读写容量,从而降低成本。
目前,以下限制适用于 MemyDB 在线重新分片:
-
槽或密钥空间和大型项目存在以下限制:
如果分片中的任何密钥包含一个大型项,在横向扩展或重新平衡时关键字不会迁移到新分片。此功能会导致分片不平衡。
如果某个分片中的任何密钥包含大型项目 (序列化后大于 256MB 的项目),则在缩减时不会删除该分片。此功能可导致某些分片无法删除。
-
在横向扩展时,任何新分片中的节点数量等于现有分片中的节点数量。
有关更多信息,请参阅最佳实践:在线集群大小调整。
您可以使用水平扩展或重新平衡 MemyDB 集群。Amazon Web Services Management Console,Amazon CLI,以及 MemoryDB API。
通过在线重新分区功能添加分区
您可以使用将分片添加到 MemyDB 集群中。Amazon Web Services Management Console、Amazon CLI,或 MemoryDB API。
您可以使用Amazon Web Services Management Console将一个或多个分片添加到 MemyDB 集群中。以下步骤描述了这个过程。
-
登录到Amazon Web Services Management Console然后在以下位置打开 MemoryDB of Redis 控制台https://console.aws.amazon.com/memorydb/
. -
从集群列表中,选择要从中添加分片的集群的名称。
在分片和节点选项卡上,选择添加/删除分片
-
In分片数量新,输入所需分片的数量。
-
选择确认保留更改或Cancel丢弃。
以下过程介绍了如何通过使用添加分片的方法重新配置 Memory Db 集群中的分片。Amazon CLI.
在update-cluster中使用以下参数:
参数
-
--cluster-name– 必需。指定在哪个集群(集群)上执行分片重新配置操作。 -
--shard-configuration– 必需。允许您设置分片数量。-
ShardCount— 设置此属性以指定所需分片的数量。
-
以下示例修改集群中的分片数。my-cluster到 2.
对于 Linux、macOS 或 Unix:
aws memorydb update-cluster \ --cluster-name my-cluster \ --shard-configuration \ ShardCount=2
对于 Windows:
aws memorydb update-cluster ^ --cluster-name my-cluster ^ --shard-configuration ^ ShardCount=2
它返回以下 JSON 响应:
{ "Cluster": { "Name": "my-cluster", "Status": "updating", "NumberOfShards": 2, "AvailabilityMode": "MultiAZ", "ClusterEndpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 }, "NodeType": "db.r6g.large", "EngineVersion": "6.2", "EnginePatchVersion": "6.2.4", "ParameterGroupName": "default.memorydb-redis6", "ParameterGroupStatus": "in-sync", "SubnetGroupName": "my-sg", "TLSEnabled": true, "ARN":"arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster", "SnapshotRetentionLimit": 0, "MaintenanceWindow": "wed:03:00-wed:04:00", "SnapshotWindow": "04:30-05:30", "AutoMinorVersionUpgrade": true } }
要在更新集群的状态从更改后,查看更新集群的详细信息更新到可用,请使用以下命令:
对于 Linux、macOS 或 Unix:
aws memorydb describe-clusters \ --cluster-name my-cluster --show-shard-details
对于 Windows:
aws memorydb describe-clusters ^ --cluster-name my-cluster --show-shard-details
它将返回下面的 JSON 响应:
{ "Clusters": [ { "Name": "my-cluster", "Status": "available", "NumberOfShards": 2, "Shards": [ { "Name": "0001", "Status": "available", "Slots": "0-8191", "Nodes": [ { "Name": "my-cluster-0001-001", "Status": "available", "AvailabilityZone": "us-east-1a", "CreateTime": "2021-08-21T20:22:12.405000-07:00", "Endpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } }, { "Name": "my-cluster-0001-002", "Status": "available", "AvailabilityZone": "us-east-1b", "CreateTime": "2021-08-21T20:22:12.405000-07:00", "Endpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } } ], "NumberOfNodes": 2 }, { "Name": "0002", "Status": "available", "Slots": "8192-16383", "Nodes": [ { "Name": "my-cluster-0002-001", "Status": "available", "AvailabilityZone": "us-east-1b", "CreateTime": "2021-08-22T14:26:18.693000-07:00", "Endpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } }, { "Name": "my-cluster-0002-002", "Status": "available", "AvailabilityZone": "us-east-1a", "CreateTime": "2021-08-22T14:26:18.765000-07:00", "Endpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } } ], "NumberOfNodes": 2 } ], "ClusterEndpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 }, "NodeType": "db.r6g.large", "EngineVersion": "6.2", "EnginePatchVersion": "6.2.4", "ParameterGroupName": "default.memorydb-redis6", "ParameterGroupStatus": "in-sync", "SubnetGroupName": "my-sg", "TLSEnabled": true, "ARN":"arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster", "SnapshotRetentionLimit": 0, "MaintenanceWindow": "wed:03:00-wed:04:00", "SnapshotWindow": "04:30-05:30", "ACLName": "my-acl", "AutoMinorVersionUpgrade": true } ] }
有关更多信息,请参阅 。更新集群中的Amazon CLI命令参考。
您可以通过使用 Memory DB API 在线重新配置 Memory 集群中的分片。UpdateClusteroperation.
在UpdateCluster中使用以下参数:
参数
-
ClusterName– 必需。指定在哪个集群上执行分片重新配置操作。 -
ShardConfiguration– 必需。允许您设置分片数量。-
ShardCount— 设置此属性以指定所需分片的数量。
-
有关更多信息,请参阅 。UpdateCluster.
通过在线重新分区功能删除分区
您可以使用从 MemyDB 集群中删除分片Amazon Web Services Management Console、Amazon CLI,或 MemoryDB API。
以下过程介绍了如何通过使用删除分片的方法重新配置 Memory Db 集群中的分片。Amazon Web Services Management Console.
在从集群中删除分片之前,Memory DB 可确保所有数据将适合其余分片。如果数据适合,分片将根据要求从集群中删除分片。如果数据不适合剩余分片,则过程将终止,并且集群的分片配置将保留为与发出请求之前相同。
您可以使用Amazon Web Services Management Console以从 MemyDB 集群中删除一个或多个分片。您无法删除集群中的所有分片。而是必须删除集群。有关更多信息,请参阅第 4 步:删除集群。以下过程介绍删除一个或多个分片的过程。
-
登录到Amazon Web Services Management Console然后在以下位置打开 MemoryDB of Redis 控制台https://console.aws.amazon.com/memorydb/
. -
从集群列表中,选择要从中删除分片的集群的名称。
在分片和节点选项卡上,选择添加/删除分片
-
In分片数量新中,输入你想要的分片数量(至少有 1 个)。
-
选择确认保留更改或Cancel丢弃。
以下过程介绍了如何通过使用删除分片的方法重新配置 Memory Db 集群中的分片。Amazon CLI.
在从集群中删除分片之前,Memory DB 可确保所有数据将适合其余分片。如果数据将适合,分片将根据要求从集群中删除,并将其密钥空间映射到其余分片。如果数据不适合剩余分片,则过程将终止,并且集群的分片配置将保留为与发出请求之前相同。
您可以使用Amazon CLI以从 MemyDB 集群中删除一个或多个分片。您无法删除集群中的所有分片。而是必须删除集群。有关更多信息,请参阅第 4 步:删除集群。
在update-cluster中使用以下参数:
参数
-
--cluster-name– 必需。指定在哪个集群(集群)上执行分片重新配置操作。 -
--shard-configuration– 必需。允许您使用设置分片的数量。ShardCount属性:ShardCount— 设置此属性以指定所需分片的数量。
以下示例修改集群中的分片数。my-cluster到 2.
对于 Linux、macOS 或 Unix:
aws memorydb update-cluster \ --cluster-name my-cluster \ --shard-configuration \ ShardCount=2
对于 Windows:
aws memorydb update-cluster ^ --cluster-name my-cluster ^ --shard-configuration ^ ShardCount=2
它返回以下 JSON 响应:
{ "Cluster": { "Name": "my-cluster", "Status": "updating", "NumberOfShards": 2, "AvailabilityMode": "MultiAZ", "ClusterEndpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 }, "NodeType": "db.r6g.large", "EngineVersion": "6.2", "EnginePatchVersion": "6.2.4", "ParameterGroupName": "default.memorydb-redis6", "ParameterGroupStatus": "in-sync", "SubnetGroupName": "my-sg", "TLSEnabled": true, "ARN":"arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster", "SnapshotRetentionLimit": 0, "MaintenanceWindow": "wed:03:00-wed:04:00", "SnapshotWindow": "04:30-05:30", "AutoMinorVersionUpgrade": true } }
要在更新集群的状态从更改后,查看更新集群的详细信息更新到可用,请使用以下命令:
对于 Linux、macOS 或 Unix:
aws memorydb describe-clusters \ --cluster-name my-cluster --show-shard-details
对于 Windows:
aws memorydb describe-clusters ^ --cluster-name my-cluster --show-shard-details
它将返回下面的 JSON 响应:
{ "Clusters": [ { "Name": "my-cluster", "Status": "available", "NumberOfShards": 2, "Shards": [ { "Name": "0001", "Status": "available", "Slots": "0-8191", "Nodes": [ { "Name": "my-cluster-0001-001", "Status": "available", "AvailabilityZone": "us-east-1a", "CreateTime": "2021-08-21T20:22:12.405000-07:00", "Endpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } }, { "Name": "my-cluster-0001-002", "Status": "available", "AvailabilityZone": "us-east-1b", "CreateTime": "2021-08-21T20:22:12.405000-07:00", "Endpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } } ], "NumberOfNodes": 2 }, { "Name": "0002", "Status": "available", "Slots": "8192-16383", "Nodes": [ { "Name": "my-cluster-0002-001", "Status": "available", "AvailabilityZone": "us-east-1b", "CreateTime": "2021-08-22T14:26:18.693000-07:00", "Endpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } }, { "Name": "my-cluster-0002-002", "Status": "available", "AvailabilityZone": "us-east-1a", "CreateTime": "2021-08-22T14:26:18.765000-07:00", "Endpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } } ], "NumberOfNodes": 2 } ], "ClusterEndpoint": { "Address":"clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 }, "NodeType": "db.r6g.large", "EngineVersion": "6.2", "EnginePatchVersion": "6.2.4", "ParameterGroupName": "default.memorydb-redis6", "ParameterGroupStatus": "in-sync", "SubnetGroupName": "my-sg", "TLSEnabled": true, "ARN":"arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster", "SnapshotRetentionLimit": 0, "MaintenanceWindow": "wed:03:00-wed:04:00", "SnapshotWindow": "04:30-05:30", "ACLName": "my-acl", "AutoMinorVersionUpgrade": true } ] }
有关更多信息,请参阅 。更新集群中的Amazon CLI命令参考。
您可以通过使用 Memory DB API 在线重新配置 Memory 集群中的分片。UpdateClusteroperation.
以下过程介绍了如何通过使用 Memory DB API 删除分片的方法重新配置 Memory 集群中的分片。
在从集群中删除分片之前,Memory DB 可确保所有数据将适合其余分片。如果数据将适合,分片将根据要求从集群中删除,并将其密钥空间映射到其余分片。如果数据不适合剩余分片,则过程将终止,并且集群的分片配置将保留为与发出请求之前相同。
您可以使用 MemyDB API 从 MemyDB 集群中删除一个或多个分片。您无法删除集群中的所有分片。而是必须删除集群。有关更多信息,请参阅第 4 步:删除集群。
在UpdateCluster中使用以下参数:
参数
-
ClusterName– 必需。指定在哪个集群(集群)上执行分片重新配置操作。 -
ShardConfiguration– 必需。允许您使用设置分片的数量。ShardCount属性:ShardCount— 设置此属性以指定所需分片的数量。