

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

# 减少分区中的副本数量
<a name="decrease-replica-count"></a>

您可以减少 Valkey 或 Redis OSS（已启用集群模式）分片中的副本数量，或 Valkey 或 Redis OSS（已禁用集群模式）复制组中的副本数量：
+ 对于 Valkey 或 Redis OSS（已禁用集群模式），如果启用了多可用区，则可以将副本数量减少到 1 个；如果未启用，则可以将副本数量减少到 0。
+ 对于 Valkey 或 Redis OSS（已启用集群模式），您可以将副本数量减少到 0。但是，如果您的主节点发生故障，则无法故障转移到副本。

您可以使用 AWS 管理控制台、AWS CLI 或 ElastiCache API 来减少节点组（分区）或复制组中的副本数量。

**Topics**
+ [使用 AWS 管理控制台](#decrease-replica-count-con)
+ [使用 AWS CLI](#decrease-replica-count-cli)
+ [使用 ElastiCache API](#decrease-replica-count-api)

## 使用 AWS 管理控制台
<a name="decrease-replica-count-con"></a>

以下过程使用控制台减少 Valkey 或 Redis OSS（已启用集群模式）复制组中的副本数量。

**减少 Valkey 或 Redis OSS 分片中的副本数量**

1. 登录 AWS 管理控制台 并打开 ElastiCache 控制台（[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)）。

1. 在导航窗格中，选择 **Valkey** 或 **Redis OSS**，然后选择要从其中删除副本的复制组的名称。

1. 选中要从其中删除副本的每个分片对应的框。

1. 选择 **Delete replicas (删除副本)**。

1. 完成 **Delete Replicas from Shards (从分片中删除副本)** 页面：

   1. 对于 **New number of replicas/shard (新副本/分片数量)**，输入您希望选定的分片应具有的副本数量。此数字必须大于或等于 1。我们建议每个分片使用至少两个副本作为有效的最小值。

   1. 选择 **Delete (删除)** 以删除副本，或选择 **Cancel (取消)** 以取消该操作。

**重要**  
如果您未指定要删除的副本节点，ElastiCache for Redis OSS 会自动选择副本节点来进行删除。在此过程中，ElastiCache for Redis OSS 会尝试为您的复制组保留多可用区架构，然后保留具有最小复制滞后的副本以及主节点。
无法删除复制组中的主节点。如果指定主节点进行删除，此操作会失败并显示指示已选中主节点进行删除的错误事件。

## 使用 AWS CLI
<a name="decrease-replica-count-cli"></a>

要减少 Valkey 或 Redis OSS 分片中的副本数量，请使用带有以下参数的 `decrease-replica-count` 命令：
+ `--replication-group-id` – 必需。确定要在其中减少副本数量的复制组。
+ `--apply-immediately` 或 `--no-apply-immediately` – 必需。指定是立即减少副本数量（`--apply-immediately`）还是在下一维护时段减少副本数量（`--no-apply-immediately`）。当前不支持 `--no-apply-immediately`。
+ `--new-replica-count` – 可选。指定希望的副本节点数。`--new-replica-count` 的值必须为小于节点组中的当前副本数量的有效值。有关允许的最小值，请参阅[减少分区中的副本数量](#decrease-replica-count)。如果 `--new-replica-count` 的值不满足此要求，则调用失败。
+ `--replicas-to-remove` – 可选。包含指定要删除的副本节点的节点 ID 的列表。
+ `--replica-configuration` – 可选。允许您单独地为每个节点组设置副本和可用区的数量。对您希望单独配置其中每个节点组的 Valkey 或 Redis OSS（已启用集群模式）组使用此参数。

  `--replica-configuration` 具有三位可选成员：
  + `NodeGroupId` – 您要配置的节点组的四位数 ID。对于 Valkey 或 Redis OSS（已禁用集群模式）复制组，分片 ID 始终为 `0001`。若要查找 Valkey 或 Redis OSS（已启用集群模式）节点组（分片）ID，请参阅 [查找分区的 ID](Shards.md#shard-find-id)。
  + `NewReplicaCount` – 指定希望的副本节点数的可选参数。`NewReplicaCount` 的值必须为小于节点组中的当前副本数量的有效值。有关允许的最小值，请参阅[减少分区中的副本数量](#decrease-replica-count)。如果 `NewReplicaCount` 的值不满足此要求，则调用失败。
  + `PreferredAvailabilityZones` – `PreferredAvailabilityZone` 字符串的列表，指定复制组的节点所在的可用区。`PreferredAvailabilityZone` 值的数字必须等于 `NewReplicaCount` 的值再加上 1 以形成主节点。如果忽略 `--replica-configuration` 的此成员，ElastiCache for Redis OSS 会为每个新副本选择可用区。

**重要**  
您必须包含且只能包含 `--new-replica-count`、`--replicas-to-remove` 或 `--replica-configuration` 参数之一。

**Example**  
以下示例使用 `--new-replica-count` 将复制组 `sample-repl-group` 中的副本数量减少为 1 个。在完成此示例后，每个节点组中将有一个副本。无论是具有单个节点组的 Valkey 或 Redis OSS（已禁用集群模式）复制组，还是具多个节点组的 Valkey 或 Redis OSS（已禁用集群模式）复制组，此数字都适用。  
对于 Linux、macOS 或 Unix：  

```
aws elasticache decrease-replica-count
    --replication-group-id sample-repl-group \
    --new-replica-count 1 \
    --apply-immediately
```
对于 Windows：  

```
aws elasticache decrease-replica-count ^
    --replication-group-id sample-repl-group ^
    --new-replica-count 1 ^
    --apply-immediately
```
以下示例通过从节点组中删除两个指定的副本（`sample-repl-group` 和 `0001`）来减少复制 `0003` 中的副本数量。  
对于 Linux、macOS 或 Unix：  

```
aws elasticache decrease-replica-count \
    --replication-group-id sample-repl-group \
    --replicas-to-remove 0001,0003 \
    --apply-immediately
```
对于 Windows：  

```
aws elasticache decrease-replica-count ^
    --replication-group-id sample-repl-group ^
    --replicas-to-remove 0001,0003 \
    --apply-immediately
```
以下示例使用 `--replica-configuration` 将复制组 `sample-repl-group` 中的副本数量减少为两个指定节点组指定的值。假定存在多个节点组，则这是一个 Valkey 或 Redis OSS（已启用集群模式）复制组。指定可选 `PreferredAvailabilityZones` 时，所列可用区的数量必须等于 `NewReplicaCount` 的值再加上 1。此方法适用于由 `NodeGroupId` 标识的组的主节点。  
对于 Linux、macOS 或 Unix：  

```
aws elasticache decrease-replica-count \
    --replication-group-id sample-repl-group \
    --replica-configuration \
        NodeGroupId=0001,NewReplicaCount=1,PreferredAvailabilityZones=us-east-1a,us-east-1c \
        NodeGroupId=0003,NewReplicaCount=2,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c \
    --apply-immediately
```
对于 Windows：  

```
aws elasticache decrease-replica-count ^
    --replication-group-id sample-repl-group ^
    --replica-configuration ^
        NodeGroupId=0001,NewReplicaCount=2,PreferredAvailabilityZones=us-east-1a,us-east-1c ^
        NodeGroupId=0003,NewReplicaCount=3,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c \
    --apply-immediately
```

有关使用 CLI 减少副本数量的更多信息，请参阅 *Amazon ElastiCache 命令行参考*中的 [decrease-replica-count](https://docs.aws.amazon.com/cli/latest/reference/elasticache/decrease-replica-count.html)。

## 使用 ElastiCache API
<a name="decrease-replica-count-api"></a>

要减少 Valkey 或 Redis OSS 分片中的副本数量，请使用带有以下参数的 `DecreaseReplicaCount` 操作：
+ `ReplicationGroupId` – 必需。确定要在其中减少副本数量的复制组。
+ `ApplyImmediately` – 必需。指定是立即减少副本数量（`ApplyImmediately=True`）还是在下一维护时段减少副本数量（`ApplyImmediately=False`）。当前不支持 `ApplyImmediately=False`。
+ `NewReplicaCount` – 可选。指定希望的副本节点数。`NewReplicaCount` 的值必须为小于节点组中的当前副本数量的有效值。有关允许的最小值，请参阅[减少分区中的副本数量](#decrease-replica-count)。如果 `--new-replica-count` 的值不满足此要求，则调用失败。
+ `ReplicasToRemove` – 可选。包含指定要删除的副本节点的节点 ID 的列表。
+ `ReplicaConfiguration` – 可选。包含节点组列表，这些节点组允许您单独地为每个节点组设置副本和可用区的数量。对您希望单独配置其中每个节点组的 Valkey 或 Redis OSS（已启用集群模式）组使用此参数。

  `ReplicaConfiguraion` 具有三位可选成员：
  + `NodeGroupId` – 您要配置的节点组的四位数 ID。对于 Valkey 或 Redis OSS（已禁用集群模式）复制组，节点组 ID 始终为 `0001`。若要查找 Valkey 或 Redis OSS（已启用集群模式）节点组（分片）ID，请参阅 [查找分区的 ID](Shards.md#shard-find-id)。
  + `NewReplicaCount` – 您希望在此操作结束时此节点组中所具有的副本数量。如果启用了多可用区，则此值必须小于当前副本数量（最少为 1 个）；如果未启用具有自动故障转移功能的多可用区，则此值为 0。如果此值大于或等于节点组中的当前副本数量，则调用失败并返回异常。
  + `PreferredAvailabilityZones` – `PreferredAvailabilityZone` 字符串的列表，指定复制组的节点所在的可用区。`PreferredAvailabilityZone` 值的数字必须等于 `NewReplicaCount` 的值再加上 1 以形成主节点。如果忽略 `ReplicaConfiguration` 的此成员，ElastiCache for Redis OSS 会为每个新副本选择可用区。

**重要**  
您必须包含且只能包含 `NewReplicaCount`、`ReplicasToRemove` 或 `ReplicaConfiguration` 参数之一。

**Example**  
以下示例使用 `NewReplicaCount` 将复制组 `sample-repl-group` 中的副本数量减少为 1 个。在完成此示例后，每个节点组中将有一个副本。无论是具有单个节点组的 Valkey 或 Redis OSS（已禁用集群模式）复制组，还是具多个节点组的 Valkey 或 Redis OSS（已禁用集群模式）复制组，此数字都适用。  

```
https://elasticache.us-west-2.amazonaws.com/
      ?Action=DecreaseReplicaCount
      &ApplyImmediately=True
      &NewReplicaCount=1
      &ReplicationGroupId=sample-repl-group
      &Version=2015-02-02
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20150202T192317Z
      &X-Amz-Credential=<credential>
```
以下示例通过从节点组中删除两个指定的副本（`sample-repl-group` 和 `0001`）来减少复制 `0003` 中的副本数量。  

```
https://elasticache.us-west-2.amazonaws.com/
      ?Action=DecreaseReplicaCount
      &ApplyImmediately=True
      &ReplicasToRemove.ReplicaToRemove.1=0001
      &ReplicasToRemove.ReplicaToRemove.2=0003
      &ReplicationGroupId=sample-repl-group
      &Version=2015-02-02
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20150202T192317Z
      &X-Amz-Credential=<credential>
```
以下示例使用 `ReplicaConfiguration` 将复制组 `sample-repl-group` 中的副本数量减少为两个指定节点组指定的值。假定存在多个节点组，则这是一个 Valkey 或 Redis OSS（已启用集群模式）复制组。指定可选 `PreferredAvailabilityZones` 时，所列可用区的数量必须等于 `NewReplicaCount` 的值再加上 1。此方法适用于由 `NodeGroupId` 标识的组的主节点。  

```
https://elasticache.us-west-2.amazonaws.com/
      ?Action=DecreaseReplicaCount
      &ApplyImmediately=True
      &ReplicaConfiguration.ConfigureShard.1.NodeGroupId=0001
      &ReplicaConfiguration.ConfigureShard.1.NewReplicaCount=1
      &ReplicaConfiguration.ConfigureShard.1.PreferredAvailabilityZones.PreferredAvailabilityZone.1=us-east-1a
      &ReplicaConfiguration.ConfigureShard.1.PreferredAvailabilityZones.PreferredAvailabilityZone.2=us-east-1c
      &ReplicaConfiguration.ConfigureShard.2.NodeGroupId=0003
      &ReplicaConfiguration.ConfigureShard.2.NewReplicaCount=2
      &ReplicaConfiguration.ConfigureShard.2.PreferredAvailabilityZones.PreferredAvailabilityZone.1=us-east-1a
      &ReplicaConfiguration.ConfigureShard.2.PreferredAvailabilityZones.PreferredAvailabilityZone.2=us-east-1b
      &ReplicaConfiguration.ConfigureShard.2.PreferredAvailabilityZones.PreferredAvailabilityZone.4=us-east-1c
      &ReplicationGroupId=sample-repl-group
      &Version=2015-02-02
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20150202T192317Z
      &X-Amz-Credential=<credential>
```

有关使用 API 减少副本数量的更多信息，请参阅 *Amazon ElastiCache API 参考*中的 [DecreaseReplicaCount](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DecreaseReplicaCount.html)。