

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

# 了解 MemoryDB 复制
<a name="replication"></a>

MemoryDB 通过数据在最多 500 个分片中进行分区来实现复制。

集群中的每个分片都包含一个读/写主节点和最多 5 个只读副本节点。每个主节点每秒可以承受最多 100 Mb。您可以创建具有更多分片和更少副本的集群，每个集群最多可包含 500 个节点。此集群配置的范围可以从 500 个分片和 0 个副本到 100 个分片和 4 个副本，这是允许的最大副本数。

# 一致性
<a name="consistency"></a>

在 MemoryDB 中，主节点具有强一致性。在返回给客户端之前，成功的写入操作会长期存储在分布式多可用区事务日志中。对主节点执行的读取操作始终返回最新的数据，这些数据反映了来自所有先前成功的写入操作的影响。在主失效转移全程保持强一致性。

在 MemoryDB 中，副本节点具有最终一致性。从副本读取操作（使用 `READONLY` 命令）并非总能反映来自最近成功的写入操作的影响，其中延迟指标已发布到 CloudWatch 上。但是，从单个副本执行的读取操作的顺序是一致的。成功的写入操作对每个副本节点的生效顺序与在主节点上执行的写入操作的顺序相同。

## 在集群中的复制
<a name="replication.redis.groups.cluster"></a>

 分片中的每个只读副本都保留分片主节点中数据的一份副本。可通过事务日志使用异步复制机制使只读副本与主集群同步。应用程序可以从集群中的任何节点进行读取。应用程序只能对主节点进行写入。只读副本可增强读取可扩展性。由于 MemoryDB 将数据存储在持久事务日志中，因此不存在数据丢失的风险。数据分配在 MemoryDB 集群中的分片上。

应用程序使用 MemoryDB 集群的*集群端点*来连接该集群中的节点。有关更多信息，请参阅 [查找连接端点](endpoints.md)。

MemoryDB 集群具有区域性，只能包含来自同一个区域的节点。要增强容错能力，您必须在该区域内的多个可用区中预配置主副本和只读副本。

强烈建议所有 MemoryDB 集群都使用提供多可用区的复制。有关更多信息，请参阅 [利用多可用区最大限度地减少 MemoryDB 停机时间](autofailover.md)。

# 利用多可用区最大限度地减少 MemoryDB 停机时间
<a name="autofailover"></a>

有许多情况下，MemoryDB 可能需要替换主节点；这些情况包括特定类型的计划维护以及主节点或可用区出现故障的意外事件。

节点故障的响应取决于哪个节点出现故障。但是，在所有情况下，MemoryDB 都确保在节点更换或失效转移期间不会出现任何数据的丢失。例如，如果副本出现故障，则会替换故障节点，并同步事务日志中的数据。如果主节点出现故障，则会触发失效转移到一致副本，从而确保失效转移期间不会发生任何数据的丢失。现在，写入数据通过新主节点提供。随即替换旧主节点，并从事务日志同步。

如果主节点在单节点分片（没有副本）上失效，则在替换主节点并同步事务日志之前，MemoryDB 将停止接受写入。

节点替换会导致集群出现停机时间，但如果多可用区处于活动状态，则会最大限度缩短停机时间。主节点的角色会自动将故障转移到其中一个副本。MemoryDB 会透明地处理这一点，因此无需创建和预置新的主节点。此故障转移和副本提升可确保您在提升完成后立即继续写入新的主节点。

如果由于维护更新或服务更新而启动了计划的节点替换，请注意，在集群处理传入的写请求时，完成计划的节点替换。

MemoryDB 集群上的多可用区提高容错能力。在集群的主节点出于任何原因变得无法连接或发生故障时，此情况尤其如此。MemoryDB 集群上的多可用区要求每个分片具有多个节点，并且可以自动启用。

**Topics**
+ [故障情形及多可用区响应](#autofailover.scenarios)
+ [测试自动失效转移](#auto-failover-test)

## 故障情形及多可用区响应
<a name="autofailover.scenarios"></a>

如果多可用区处于活动状态，则失效的主节点将失效转移到可用副本。副本自动与事务日志同步并变为主节点，这比创建并重新预配置新的主节点快得多。提升过程通常只需几秒钟的时间，然后您可以再次对集群进行写入。

在多可用区处于活动状态时，MemoryDB 将持续监控主节点的状态。如果主节点发生故障，则根据故障的类型执行以下操作之一。

**Topics**
+ [仅主节点出现故障时的故障情形](#autofailover.scenarios.primaryonly)
+ [当主节点和一些副本发生故障时的故障情形](#autofailover.scenarios.primaryandeplicas)
+ [整个集群出现故障时的故障情形](#autofailover.scenarios.allfail)

### 仅主节点出现故障时的故障情形
<a name="autofailover.scenarios.primaryonly"></a>

如果只有主节点失效，则副本将自动变为主节点。然后，将在与发生故障的主节点相同的可用区域中创建和预置替换只读副本。

仅当主节点出现故障时，MemoryDB 多可用区才执行以下操作：

1. 发生故障的主节点脱机。

1.  up-to-date副本会自动变为主副本。

   一旦失效转移过程完成（通常只需几秒钟的时间），写入操作就会恢复。

1. 启动和预配置替代副本。

   将在可用区（发生故障的主节点的位置）启动替换副本，以便维护节点的分配。

1. 副本与事务日志同步。

有关查找集群的终端节点的信息，请参阅以下主题：
+ [查找 MemoryDB 集群的端点（MemoryDB API）](endpoints.md#endpoints.find.api.clusters)

 

### 当主节点和一些副本发生故障时的故障情形
<a name="autofailover.scenarios.primaryandeplicas"></a>

如果主群集和至少一个副本出现故障，则 up-to-date副本将升级为主群集。并在与故障节点相同的可用区中创建新副本。

在主节点和一些副本发生故障时，MemoryDB 多可用区执行以下操作：

1. 发生故障的主节点和发生故障的副本脱机。

1. 可用副本将变为主节点。

   一旦失效转移过程完成（通常只需几秒钟的时间），写入操作就会恢复。

1. 创建和预调配替换副本。

   将在可用区（发生故障的节点的位置）创建替换副本，以便维护节点的分配。

1. 所有节点都与事务日志同步。

有关查找集群的终端节点的信息，请参阅以下主题：
+ [查找 MemoryDB 集群的端点（AWS CLI）](endpoints.md#endpoints.find.cli)
+ [查找 MemoryDB 集群的端点（MemoryDB API）](endpoints.md#endpoints.find.api.clusters)

 

### 整个集群出现故障时的故障情形
<a name="autofailover.scenarios.allfail"></a>

如果整个集群全部发生故障，则在与原始节点相同的可用区中重新创建所有节点并预配置。

在此场景中，不会发生数据的丢失，原因在于数据保留在事务日志中。

当整个集群发生故障时，MemoryDB 多可用区将执行以下操作：

1. 发生故障的主节点和副本脱机。

1. 已创建并配置替换主节点，并与事务日志同步。

1. 创建和预置替换副本，并与事务日志同步。

   将在可用区（发生故障的节点的位置）创建替换，以便维护节点的分配。

有关查找集群的终端节点的信息，请参阅以下主题：
+ [查找 MemoryDB 集群的端点（AWS CLI）](endpoints.md#endpoints.find.cli)
+ [查找 MemoryDB 集群的端点（MemoryDB API）](endpoints.md#endpoints.find.api.clusters)

## 测试自动失效转移
<a name="auto-failover-test"></a>

您可以使用 MemoryDB 控制台、 AWS CLI和 MemoryDB API 测试自动失效转移。

在测试时，请注意以下内容：
+ 在任意 24 小时期间，此操作最多可以使用五次。
+ 如果在不同集群的分片上调用此操作，您可以让调用同时进行。
+ 在某些情况下，您可能会在同一 MemoryDB 集群中的不同分片上多次调用此操作。在这种情况下，必须先完成第一个节点替换，然后再进行后续调用。
+ 要确定节点替换是否已完成，请使用 MemoryDB 控制台 AWS CLI、或 MemoryDB API 检查事件。查找下列与 `FailoverShard` 相关的事件，此处按事件的可能发生顺序列出：

  1. 集群消息：`FailoverShard API called for shard <shard-id>`

  1. 集群消息：`Failover from primary node <primary-node-id> to replica node <node-id> completed`

  1. 集群消息：`Recovering nodes <node-id>`

  1. 集群消息：`Finished recovery for nodes <node-id>`

  有关更多信息，请参阅下列内容：
  + [DescribeEvents](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEvents.html)在 *MemoryDB API 参考*中
+ 此 API 旨在测试发生 MemoryDB 故障转移时您的应用程序的行为。它不是用于启动故障转移以解决集群问题的操作工具。此外，在某些情况下，例如大规模运营事件， AWS 可能会阻止此 API。

**Topics**
+ [使用测试自动故障转移 AWS 管理控制台](#auto-failover-test-con)
+ [使用测试自动故障转移 AWS CLI](#auto-failover-test-cli)
+ [使用 MemoryDB API 测试自动失效转移](#failovershard-test-api)

### 使用测试自动故障转移 AWS 管理控制台
<a name="auto-failover-test-con"></a>

使用以下过程测试通过控制台进行自动故障转移。

****

1. 登录 AWS 管理控制台 并打开 MemoryDB 控制台，网址为。[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)

1. 选择要测试的集群左侧的单选按钮。此集群必须至少有一个副本节点。

1. 在 **Details** 区域中，确认此集群已启用多可用区。如果集群未启用多可用区，则选择其他集群或者修改此集群以启用多可用区。有关更多信息，请参阅 [修改 MemoryDB 集群](clusters.modify.md)。

1. 选择集群的名称。

1. 在**分片和节点**页面上，对于要测试失效转移的分片，选择分片的名称。

1. 在节点上，选择**失效转移主节点**。

1. 选择 **Continue** 可对主节点进行故障转移，选择 **Cancel** 可取消操作，不对主节点进行故障转移。

   故障转移过程中，控制台继续将节点状态显示为*可用*。要跟踪您的故障转移测试进度，请从控制台导航窗格选择 **Events**。在 **Events** 选项卡上，观察指示故障转移已开始（`FailoverShard API called`）和已完成（`Recovery completed`）的事件。

 

### 使用测试自动故障转移 AWS CLI
<a name="auto-failover-test-cli"></a>

您可以使用 failover-shard AWS CLI 操作在任何启用多可用区的集群上测试自动[故障转移](https://docs.aws.amazon.com/cli/latest/reference/memorydb/failover-shard.html)。

**参数**
+ `--cluster-name` – 必需。要测试的集群。
+ `--shard-name` – 必需。要在其上测试自动故障转移的分片的名称。在 24 小时滚动期间您最多可以测试 5 个分片。

以下示例使用调`failover-shard`用 MemoryDB 集群`0001`中的分片。 AWS CLI `my-cluster`

对于 Linux、macOS 或 Unix：

```
aws memorydb failover-shard \
   --cluster-name my-cluster \
   --shard-name 0001
```

对于 Windows：

```
aws memorydb failover-shard ^
   --cluster-name my-cluster ^
   --shard-name 0001
```

要跟踪故障转移的进度，请使用 AWS CLI `describe-events`操作。

返回以下 JSON 响应：

```
{
    "Events": [
        {
            "SourceName": "my-cluster",
            "SourceType": "cluster",
            "Message": "Failover to replica node my-cluster-0001-002 completed",
            "Date": "2021-08-22T12:39:37.568000-07:00"
        },
        {
            "SourceName": "my-cluster",
            "SourceType": "cluster",
            "Message": "Starting failover for shard 0001",
            "Date": "2021-08-22T12:39:10.173000-07:00"
        }
    ]
}
```

有关更多信息，请参阅下列内容：
+ [失效转移分片](https://docs.aws.amazon.com/cli/latest/reference/memorydb/failover-shard.html)
+ [describe-events](https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-events.html)

 

### 使用 MemoryDB API 测试自动失效转移
<a name="failovershard-test-api"></a>

以下示例调用 集群 `memorydb00` 中的分片 `0003` 上的 `FailoverShard`。

**Example 测试自动失效转移**  

```
https://memory-db.us-east-1.amazonaws.com/
    ?Action=FailoverShard
    &ShardName=0003
    &ClusterName=memorydb00
    &Version=2021-01-01
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20210801T192317Z
    &X-Amz-Credential=<credential>
```

要跟踪失效转移的进度，请使用 MemoryDB `DescribeEvents` API 操作。

有关更多信息，请参阅下列内容：
+ [FailoverShard](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_FailoverShard.html) 
+ [DescribeEvents](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEvents.html) 

# 更改副本数量
<a name="update-replica-count"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 MemoryDB API 动态地增加或减少您的 MemoryDB 集群中的只读副本数量。所有分片的副本数量必须相同。

## 增加集群中的副本数量
<a name="increase-replica-count"></a>

您可以将一个 MemoryDB 集群中每个分片的副本数量最多增加到 5 个。可使用 AWS 管理控制台、AWS CLI 或 MemoryDB API 完成此操作。

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

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

要增加 MemoryDB 集群（控制台）中的副本数量，请参阅 [从集群中添加/移除节点](clusters.deletenode.md)。

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

要增加 MemoryDB 集群中的副本数量，请使用带有以下参数的 `update-cluster` 命令：
+ `--cluster-name` – 必需。确定要在其中增加副本数量的集群。
+ `--replica-configuration` – 必需。允许设置副本数量。若要增加副本数量，请将 `ReplicaCount` 属性设置为您希望在此操作结束时在此分片中所具有的副本数量。

**Example**  
以下示例将集群 `my-cluster` 中的副本数量增加到 2 个。  
对于 Linux、macOS 或 Unix：  

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --replica-configuration \
        ReplicaCount=2
```
对于 Windows：  

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --replica-configuration ^
        ReplicaCount=2
```

返回以下 JSON 响应：

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "updating",
        "NumberOfShards": 1,
        "ClusterEndpoint": {
            "Address": "clustercfg.my-cluster.xxxxx.memorydb.us-east-1.amazonaws.com",
            "Port": 6379
        },
        "NodeType": "db.r6g.large",
        "EngineVersion": "6.2",
        "EnginePatchVersion": "6.2.6",
        "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",
        "DataTiering": "false",
        "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": 1,
            "Shards": [
                {
                    "Name": "0001",
                    "Status": "available",
                    "Slots": "0-16383",
                    "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
                            }
                        },
                        {
                            "Name": "my-cluster-0001-003",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1a",
                            "CreateTime": "2021-08-22T12:59:31.844000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        }
                    ],
                    "NumberOfNodes": 3
                }
            ],
            "ClusterEndpoint": {
                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                "Port": 6379
            },
            "NodeType": "db.r6g.large",
            "EngineVersion": "6.2",
            "EnginePatchVersion": "6.2.6",
            "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",
            "DataTiering": "false",
            "AutoMinorVersionUpgrade": true
        }
    ]
}
```

有关使用 CLI 增加副本数量的更多信息，请参阅* AWS CLI 命令参考*中的 [update-cluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)。

### 使用 MemoryDB API
<a name="increase-replica-count-api"></a>

要增加 MemoryDB 分片中的副本数量，请使用带有以下参数的 `UpdateCluster` 操作：
+ `ClusterName` – 必需。确定要在其中增加副本数量的集群。
+ `ReplicaConfiguration` – 必需。允许设置副本数量。若要增加副本数量，请将 `ReplicaCount` 属性设置为您希望在此操作结束时在此分片中所具有的副本数量。

**Example**  
以下示例将集群 `sample-cluster` 中的副本数量增加到 3 个。在完成此示例后，每个分片中将有 3 个副本。无论是带单个分片的 MemoryDB 集群还是带多个分片的 MemoryDB 集群，此数字都适用。  

```
https://memory-db.us-east-1.amazonaws.com/
      ?Action=UpdateCluster      
      &ReplicaConfiguration.ReplicaCount=3
      &ClusterName=sample-cluster
      &Version=2021-01-01
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20210802T192317Z
      &X-Amz-Credential=<credential>
```

有关使用 API 增加副本数量的更多信息，请参阅 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)。

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

您可以减少 MemoryDB 集群中的副本数量。您可以将副本数量减少为 0，但如果主节点出现故障，则无法失效转移到副本。

您可以使用 AWS 管理控制台、AWS CLI 或 MemoryDB API 来减少集群中的副本数量。

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

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

要减少 MemoryDB 集群（控制台）中的副本数量，请参阅 [从集群中添加/移除节点](clusters.deletenode.md)。

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

要减少 MemoryDB 集群中的副本数量，请使用带有以下参数的 `update-cluster` 命令：
+ `--cluster-name` – 必需。确定要在其中减少副本数量的集群。
+ `--replica-configuration` – 必需。

  `ReplicaCount` – 设置此属性指定想要的副本节点数量。

**Example**  
以下示例使用 `--replica-configuration` 将集群 `my-cluster` 中的副本数量减少为指定值。  
对于 Linux、macOS 或 Unix：  

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --replica-configuration \
        ReplicaCount=1
```
对于 Windows：  

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --replica-configuration ^
        ReplicaCount=1 ^
```

返回以下 JSON 响应：

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "updating",
        "NumberOfShards": 1,
        "ClusterEndpoint": {
            "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
            "Port": 6379
        },
        "NodeType": "db.r6g.large",
        "EngineVersion": "6.2",
        "EnginePatchVersion": "6.2.6",
        "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",
        "DataTiering": "false",
        "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": 1,
            "Shards": [
                {
                    "Name": "0001",
                    "Status": "available",
                    "Slots": "0-16383",
                    "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
                }
            ],
            "ClusterEndpoint": {
                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                "Port": 6379
            },
            "NodeType": "db.r6g.large",
            "EngineVersion": "6.2",
            "EnginePatchVersion": "6.2.6",
            "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",
            "DataTiering": "false",
            "AutoMinorVersionUpgrade": true
        }
    ]
}
```

有关使用 CLI 减少副本数量的更多信息，请参阅* AWS CLI 命令参考*中的 [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)。

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

要减少 MemoryDB 集群中的副本数量，请使用带有以下参数的 `UpdateCluster` 操作：
+ `ClusterName` – 必需。确定要在其中减少副本数量的集群。
+ `ReplicaConfiguration` – 必需。允许设置副本数量。

  `ReplicaCount` – 设置此属性指定想要的副本节点数量。

**Example**  
以下示例使用 `ReplicaCount` 将集群 `sample-cluster` 中的副本数量减少为 1 个。在完成此示例后，每个分片中将有一个副本。无论是带单个分片的 MemoryDB 集群还是带多个分片的 MemoryDB 集群，此数字都适用。  

```
https://memory-db.us-east-1.amazonaws.com/
      ?Action=UpdateCluster    
      &ReplicaConfiguration.ReplicaCount=1
      &ClusterName=sample-cluster
      &Version=2021-01-01
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20210802T192317Z
      &X-Amz-Credential=<credential>
```

有关使用 API 减少副本数量的更多信息，请参阅 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)。