MemoryDB 的在线重新分片和分片重新平衡 - Amazon MemoryDB for Redis
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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 集群中。以下步骤描述了这个过程。

  1. 登录到Amazon Web Services Management Console然后在以下位置打开 MemoryDB of Redis 控制台https://console.aws.amazon.com/memorydb/.

  2. 从集群列表中,选择要从中添加分片的集群的名称。

  3. 分片和节点选项卡上,选择添加/删除分片

  4. In分片数量新,输入所需分片的数量。

  5. 选择确认保留更改或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 步:删除集群。以下过程介绍删除一个或多个分片的过程。

  1. 登录到Amazon Web Services Management Console然后在以下位置打开 MemoryDB of Redis 控制台https://console.aws.amazon.com/memorydb/.

  2. 从集群列表中,选择要从中删除分片的集群的名称。

  3. 分片和节点选项卡上,选择添加/删除分片

  4. In分片数量新中,输入你想要的分片数量(至少有 1 个)。

  5. 选择确认保留更改或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— 设置此属性以指定所需分片的数量。