

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 擴展
<a name="scaling"></a>

您的應用程式需要處理的資料量通常是動態的。它會隨著您的業務成長或遇到需求的一般波動而增加或緘少。如果您自行管理應用程式，則需要為需求峰值佈建足夠的硬體，這可能會很昂貴。透過使用 MemoryDB，您可以擴展以滿足目前需求，只需按使用量付費。

下列各項能幫助您找到用於您要執行之擴展動作的正確主題。


**擴展 MemoryDB**  

| Action | MemoryDB | 
| --- | --- | 
|  向外擴展  |  [MemoryDB 的線上重新分片](cluster-resharding-online.md)  | 
|  變更節點類型  |  [透過修改節點類型來進行線上垂直擴展](cluster-vertical-scaling.md)  | 
|  變更碎片數量  |  [擴展 MemoryDB 叢集](scaling-cluster.md)  | 

# 擴展 MemoryDB 叢集
<a name="scaling-cluster"></a>

隨著叢集的需求變更，您可以變更 MemoryDB 叢集中的碎片數量，以決定改善效能或降低成本。我們建議使用線上水平擴展來執行此動作，因為它可允許叢集在擴展程序期間繼續提供請求的服務。

您用來決定重新擴展叢集的可能條件包括下列：
+ **記憶體壓力：**

  如果叢集中的節點遭受記憶體壓力，您可以決定向外擴展，使得您有更多資源能更妥善地存放資料和提供請求的服務。

  您可以監控下列指標來判斷節點是否受到記憶體壓力：*FreeableMemory*、*SwapUsage* 和 *BytesUsedForMemoryDB*。
+ **CPU 或網路瓶頸：**

  如果延遲/傳輸量問題正困擾著您的叢集，您可能需要向外擴展來解決問題。

  您可以監控延遲和傳輸量層級，方法是監控下列指標：*CPUUtilization*、*NetworkBytesIn*、*NetworkBytesOut*、*CurrConnections* 和 *NewConnections*。
+ **您的叢集過度擴展：**

  對叢集的目前需求使得向內擴展不會傷害效能和減少成本。

  您可以監控叢集的使用情況，以判斷是否可以使用下列指標安全地縮減規模：*FreeableMemory*、*SwapUsage*、*BytesUsedForMemoryDB*、*CPUUtilization*、*NetworkBytesIn*、*NetworkBytesOut*、*CurrConnections* 和 *NewConnections*。

**擴展的效能影響**  
使用離線程序擴展時，您的叢集將有一大部分程序會離線，因此無法提供請求的服務。使用線上方法擴展時，因為擴展是運算密集的操作，效能會有一些下降，然後，您的叢集會繼續在整個擴展操作中提供請求的服務。您遭遇到的下降程度取決於您的一般 CPU 使用率和您的資料。

有兩種方式可以擴展您的 MemoryDB 叢集：水平和垂直擴展。
+ 水平擴展可讓您透過新增或移除碎片來變更叢集中的碎片數量。線上重新分片程序允許向內/向外擴展，同時間叢集仍可繼續服務傳入請求。
+ 垂直擴展 - 變更節點類型以調整叢集大小。線上垂直擴展允許向上/向下擴展，同時間叢集仍可繼續服務傳入請求。

如果您要透過向內擴展或向下擴展來減少叢集的大小和記憶體容量，請確保新組態有足夠的記憶體來容納您的資料和引擎額外負荷。

# MemoryDB 的離線重新分片
<a name="cluster-resharding-offline"></a>

您從離線碎片重新設定取得的主要優勢是，您可以執行的不只是從叢集新增或移除碎片。當您離線重新碎片時，除了變更叢集中的碎片數量之外，您還可以執行下列動作：
+ 變更叢集的節點類型。
+ 升級至較新的引擎版本。

**注意**  
啟用資料分層的叢集不支援離線重新分片。如需詳細資訊，請參閱 [資料分層](data-tiering.md)。

離線碎片重新組態的主要缺點是，您的叢集會離線開始進行程序的還原部分，並繼續直到您在應用程式中更新端點為止。叢集離線的時間長度會因叢集中資料量而不同。

**重新設定碎片 MemoryDB 叢集離線**

1. 建立現有 MemoryDB 叢集的手動快照。如需詳細資訊，請參閱[製作手動快照](snapshots-manual.md)。

1. 從快照還原以建立新的叢集。如需詳細資訊，請參閱[從快照還原](snapshots-restoring.md)。

1. 在應用程式中，將端點更新為新叢集的端點。如需詳細資訊，請參閱[尋找連線端點](endpoints.md)。

# MemoryDB 的線上重新分片
<a name="cluster-resharding-online"></a>

透過使用線上重新分片和搭配 MemoryDB，您可以動態擴展 MemoryDB，無需停機。此方法表示叢集可以繼續提供請求的服務 (甚至是在擴展或重新平衡進行中時)。

您可以執行下列動作：
+ **橫向擴展** – 透過將碎片新增至 MemoryDB 叢集來增加讀取和寫入容量。

  如果您將一或多個碎片新增至叢集，則每個新碎片中的節點數目與現有碎片中最小的節點數目相同。
+ **向內擴展** – 從 MemoryDB 叢集移除碎片，以減少讀取和寫入容量，進而降低成本。

目前，下列限制適用於 MemoryDB 線上重新分片：
+ 槽或金鑰空間和大型項目的限制為：

  如果碎片中的任何索引鍵包含大型項目，則該索引鍵在向外擴展 時不會遷移至新的碎片。此功能可能造成不平衡的碎片。

  如果碎片中的任何金鑰包含大型項目 (序列化後項目大於 256 MB)，在向內擴展時，不會刪除該碎片。此功能可能造成一些碎片不會遭到刪除。
+ 向外擴展時，任何新碎片中的節點數目等於現有碎片中的節點數目。

如需詳細資訊，請參閱[最佳實務：線上叢集大小調整](best-practices-online-resharding.md)。

您可以使用 AWS 管理主控台、 AWS CLI和 MemoryDB API 水平擴展 MemoryDB 叢集。

## 使用線上重新分片功能新增碎片
<a name="cluster-resharding-online-add"></a>

您可以使用 AWS 管理主控台 AWS CLI或 MemoryDB API，將碎片新增至 MemoryDB 叢集。

### 新增碎片 (主控台)
<a name="cluster-resharding-online-add-console"></a>

您可以使用 AWS 管理主控台 將一或多個碎片新增至 MemoryDB 叢集。下列程序描述該程序。

****

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/) 的 MemoryDB 主控台。

1. 從叢集清單中，選擇您要從中新增碎片的叢集名稱。

1. 在**碎片和節點**索引標籤下，選擇**新增/刪除碎片**

1. 在**新的碎片數量**中，輸入您想要的碎片數量。

1. 選擇**確認**以保留變更，或選擇**取消**以捨棄。

### 新增碎片 (AWS CLI)
<a name="cluster-resharding-online-add-cli"></a>

下列程序說明如何使用 新增碎片來重新設定 MemoryDB 叢集中的碎片 AWS CLI。

使用下列參數搭配 `update-cluster`。

**Parameters**
+ `--cluster-name` - 必要。指定要在哪個叢集 （叢集） 上執行碎片重新設定操作。
+ `--shard-configuration` - 必要。可讓您設定碎片的數量。
  + `ShardCount` – 設定此屬性以指定您想要的碎片數量。

**Example**  
下列範例會將叢集中的碎片數量修改`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.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": 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.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
        }
    ]
}
```

如需詳細資訊，請參閱《 AWS CLI 命令參考》中的 [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)。

### 新增碎片 (MemoryDB API)
<a name="cluster-resharding-online-add-api"></a>

您可以使用 MemoryDB API，透過 `UpdateCluster`操作，在線上重新設定 MemoryDB 叢集中的碎片。

使用下列參數搭配 `UpdateCluster`。

**Parameters**
+ `ClusterName` - 必要。指定要在哪個叢集上執行碎片重新設定操作。
+ `ShardConfiguration` - 必要。可讓您設定碎片的數量。
  + `ShardCount` – 設定此屬性以指定您想要的碎片數量。

如需詳細資訊，請參閱 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)。

## 使用線上重新分片移除碎片
<a name="cluster-resharding-online-remove"></a>

您可以使用 AWS 管理主控台 AWS CLI或 MemoryDB API，從 MemoryDB 叢集移除碎片。

### 移除碎片 (主控台)
<a name="cluster-resharding-online-remove-console"></a>

下列程序說明如何使用 移除碎片，以重新設定 MemoryDB 叢集中的碎片 AWS 管理主控台。

**重要**  
從叢集移除碎片之前，MemoryDB 會確保所有資料都符合其餘碎片。如果資料適合，碎片會依要求從叢集中刪除。如果資料不符合其餘碎片，則程序會終止，而叢集會保留與發出請求之前相同的碎片組態。

您可以使用 從 MemoryDB 叢集 AWS 管理主控台 中移除一或多個碎片。您無法移除叢集中的所有碎片。您必須刪除叢集。如需詳細資訊，請參閱[步驟 5：刪除叢集](getting-started.md#clusters.delete)。下列程序說明移除一或多個碎片的程序。

****

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/) 的 MemoryDB 主控台。

1. 從叢集清單中，選擇您要從中移除碎片的叢集名稱。

1. 在**碎片和節點**索引標籤下，選擇**新增/刪除碎片**

1. 在**新的碎片數量**中，輸入您想要的碎片數量 （最少 1 個）。

1. 選擇**確認**以保留變更，或選擇**取消**以捨棄。

### 移除碎片 (AWS CLI)
<a name="cluster-resharding-online-remove-cli"></a>

下列程序說明如何使用 移除碎片，以重新設定 MemoryDB 叢集中的碎片 AWS CLI。

**重要**  
從叢集移除碎片之前，MemoryDB 會確保所有資料都符合其餘碎片。如果資料適合，碎片會依要求從叢集中刪除，且其金鑰空間會映射至剩餘的碎片。如果資料不符合其餘碎片，則程序會終止，而叢集會保留與發出請求之前相同的碎片組態。

您可以使用 從 MemoryDB 叢集 AWS CLI 中移除一或多個碎片。您無法移除叢集中的所有碎片。您必須刪除叢集。如需詳細資訊，請參閱[步驟 5：刪除叢集](getting-started.md#clusters.delete)。

使用下列參數搭配 `update-cluster`。

**Parameters**
+ `--cluster-name` - 必要。指定要在哪個叢集 （叢集） 上執行碎片重新設定操作。
+ `--shard-configuration` - 必要。可讓您使用 `ShardCount` 屬性設定碎片數量：

  `ShardCount` – 設定此屬性以指定您想要的碎片數量。

**Example**  
下列範例會將叢集中的碎片數量修改`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.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": 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.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
        }
    ]
}
```

如需詳細資訊，請參閱《 AWS CLI 命令參考》中的 [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)。

### 移除碎片 (MemoryDB API)
<a name="cluster-resharding-online-remove-api"></a>

您可以使用 MemoryDB API，透過 `UpdateCluster`操作，在線上重新設定 MemoryDB 叢集中的碎片。

下列程序說明如何使用 MemoryDB API 移除碎片，以重新設定 MemoryDB 叢集中的碎片。

**重要**  
從叢集移除碎片之前，MemoryDB 會確保所有資料都符合其餘碎片。如果資料適合，碎片會依要求從叢集中刪除，且其金鑰空間會映射至剩餘的碎片。如果資料不符合其餘碎片，則程序會終止，而叢集會保留與發出請求之前相同的碎片組態。

您可以使用 MemoryDB API 從 MemoryDB 叢集中移除一或多個碎片。您無法移除叢集中的所有碎片。您必須刪除叢集。如需詳細資訊，請參閱[步驟 5：刪除叢集](getting-started.md#clusters.delete)。

使用下列參數搭配 `UpdateCluster`。

**Parameters**
+ `ClusterName` - 必要。指定要在哪個叢集 （叢集） 上執行碎片重新設定操作。
+ `ShardConfiguration` - 必要。可讓您使用 `ShardCount` 屬性設定碎片數量：

  `ShardCount` – 設定此屬性以指定您想要的碎片數量。

# 透過修改節點類型來進行線上垂直擴展
<a name="cluster-vertical-scaling"></a>

透過搭配 MemoryDB 使用線上垂直擴展，您可以在最短的停機時間下動態擴展叢集。這可讓您的叢集在擴展時提供請求。

**注意**  
不支援在資料分層叢集 (例如，使用 r6gd 節點類型的叢集) 與未使用資料分層叢集 (例如，使用 r6g 節點類型的叢集) 之間的擴展。如需詳細資訊，請參閱[資料分層](data-tiering.md)。

您可以執行下列動作：
+ **向上擴展** – 透過調整 MemoryDB 叢集的節點類型以使用較大的節點類型來增加讀取和寫入容量。

  MemoryDB 會動態調整叢集的大小，同時保持線上狀態並提供請求。
+ **縮減規模** - 將節點類型向下調整為使用較小的節點，減少讀取和寫入容量。同樣地，MemoryDB 會動態調整叢集的大小，同時保持線上狀態並處理請求。在這種情況下，您透過縮減節點來降低成本。

**注意**  
向上擴展和向下擴展程序牽涉到使用新選取的節點類型來建立叢集，並將新節點與先前的節點進行同步。若要確保順暢的向上/向下擴展流程，請執行以下操作：  
雖然垂直擴展程序的目標是保持全面上線，但此程序也需要在舊節點和新節點之間同步資料。建議您在預期資料流量最小的時間內啟動向上/向下擴展。
盡可能在預備環境中測試您的應用程式行為。

# 線上擴充規模
<a name="cluster-vertical-scaling-scaling-up"></a>

**Topics**
+ [向上擴展 MemoryDB 叢集 （主控台）](#cluster-vertical-scaling-console)
+ [向上擴展 MemoryDB 叢集 (AWS CLI)](#scaling.scaleUp.cli)
+ [向上擴展 MemoryDB 叢集 (MemoryDB API)](#verticalscaling.scaleup.api)

## 向上擴展 MemoryDB 叢集 （主控台）
<a name="cluster-vertical-scaling-console"></a>

下列程序說明如何使用 擴展 MemoryDB 叢集 AWS 管理主控台。在此過程中，您的 MemoryDB 叢集將繼續以最短的停機時間處理請求。

**擴展叢集 （主控台）**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/) 的 MemoryDB 主控台。

1. 從叢集的清單中，選擇叢集。

1. 選擇 **Actions (動作)**，然後選擇 **Modify (修改)**。

1. 在**修改叢集**對話方塊中：

   1. 從 **Node type (節點類型)** 清單選擇您要擴展的節點類型。若要向上擴展，請選取大於現有節點的節點類型。

1. 選擇**儲存變更**。

   叢集的狀態變更為*修改*。當狀態變更為 *available (可用)*，修改即已完成，並且您可以開始使用新叢集。

## 向上擴展 MemoryDB 叢集 (AWS CLI)
<a name="scaling.scaleUp.cli"></a>

下列程序說明如何使用 擴展 MemoryDB 叢集 AWS CLI。在此過程中，您的 MemoryDB 叢集將繼續以最短的停機時間處理請求。

**擴展 MemoryDB 叢集 (AWS CLI)**

1. 使用以下參數執行 `list-allowed-node-type-updates`命令， AWS CLI 決定您可以擴展到的節點類型。

   針對 Linux、macOS 或 Unix：

   ```
   aws memorydb list-allowed-node-type-updates \
   	    --cluster-name my-cluster-name
   ```

   針對 Windows：

   ```
   aws memorydb list-allowed-node-type-updates ^
   	    --cluster-name my-cluster-name
   ```

   上述命令的輸出看起來會類似這個 (JSON 格式)。

   ```
   {
   	    "ScaleUpNodeTypes": [
   	        "db.r6g.2xlarge", 
   	        "db.r6g.large"	        
   	    ],
   	    "ScaleDownNodeTypes": [
   	        "db.r6g.large"	        
   	    ], 
   }
   ```

   如需詳細資訊，請參閱《 *AWS CLI 參考*》中的 [list-allowed-node-type-updates](https://docs.aws.amazon.com/cli/latest/reference/memorydb/list-allowed-node-type-updates.html)。

1. 使用 AWS CLI `update-cluster` 命令和下列參數，修改叢集以擴展至新的較大節點類型。
   + `--cluster-name` – 您要擴展到的叢集名稱。
   + `--node-type` – 您要擴展叢集的新節點類型。此值必須是步驟 1 中 `list-allowed-node-type-updates` 命令傳回的其中一個節點類型。

   針對 Linux、macOS 或 Unix：

   ```
   aws memorydb update-cluster  \
   	--cluster-name my-cluster \
   	--node-type db.r6g.2xlarge
   ```

   針對 Windows：

   ```
   aws memorydb update-cluster ^
   	    --cluster-name my-cluster ^
   	    --node-type db.r6g.2xlarge ^
   ```

   如需詳細資訊，請參閱 [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)。

## 向上擴展 MemoryDB 叢集 (MemoryDB API)
<a name="verticalscaling.scaleup.api"></a>

下列程序會使用 MemoryDB API，將叢集從目前的節點類型擴展到新的、較大的節點類型。在此過程中，MemoryDB 會更新 DNS 項目，使其指向新節點。您可以擴展啟用自動容錯移轉的叢集，同時叢集會繼續保持線上狀態並處理傳入的請求。

擴展到較大的節點類型所需的時間會有所不同，具體取決於您的節點類型和目前叢集中的資料量。

**擴展 MemoryDB 叢集 (MemoryDB API)**

1. 使用 MemoryDB API `ListAllowedNodeTypeUpdates`動作搭配下列參數，決定您可以擴展到哪些節點類型。
   + `ClusterName` – 叢集的名稱。使用此參數來描述特定叢集，而不是所有叢集。

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

   如需詳細資訊，請參閱 *MemoryDB API 參考*中的 [ListAllowedNodeTypeUpdates](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_ListAllowedNodeTypeUpdates.html)。

1. 使用 `UpdateCluster` MemoryDB API 動作和下列參數，將您目前的叢集擴展到新的節點類型。
   + `ClusterName` – 叢集的名稱。
   + `NodeType` – 此叢集中新的、較大的節點類型。此值必須是步驟 1 中 `ListAllowedNodeTypeUpdates` 動作傳回的其中一個執行個體類型。

   ```
   https://memory-db.us-east-1.amazonaws.com/
   	   ?Action=UpdateCluster	  
   	   &NodeType=db.r6g.2xlarge
   	   &ClusterName=myCluster
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20210801T220302Z
   	   &Version=2021-01-01
   	   &X-Amz-Algorithm=Amazon4-HMAC-SHA256
   	   &X-Amz-Date=20210801T220302Z
   	   &X-Amz-SignedHeaders=Host
   	   &X-Amz-Expires=20210801T220302Z
   	   &X-Amz-Credential=<credential>
   	   &X-Amz-Signature=<signature>
   ```

   如需詳細資訊，請參閱 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)。

# 線上縮減規模
<a name="cluster-vertical-scaling-scaling-down"></a>

**Topics**
+ [向下擴展 MemoryDB 叢集 （主控台）](#cluster-vertical-scaling-down-console)
+ [向下擴展 MemoryDB 叢集 (AWS CLI)](#scaling.scaledown.cli)
+ [向下擴展 MemoryDB 叢集 (MemoryDB API)](#scaling.vertical.scaledown.api)

## 向下擴展 MemoryDB 叢集 （主控台）
<a name="cluster-vertical-scaling-down-console"></a>

下列程序說明如何使用 縮減 MemoryDB 叢集。 AWS 管理主控台在此過程中，您的 MemoryDB 叢集將繼續以最短的停機時間處理請求。

**縮減 MemoryDB 叢集的規模 （主控台）**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/) 的 MemoryDB 主控台。

1. 從叢集的清單中，選擇您偏好的叢集。

1. 選擇 **Actions (動作)**，然後選擇 **Modify (修改)**。

1. 在**修改叢集**對話方塊中：

   1. 從 **Node type (節點類型)** 清單選擇您要擴展的節點類型。若要向下擴展，請選取小於現有節點的節點類型。請注意，並非所有節點類型都可縮減規模。

1. 選擇**儲存變更**。

   叢集的狀態會變更為*修改*。當狀態變更為 *available (可用)*，修改即已完成，並且您可以開始使用新叢集。

## 向下擴展 MemoryDB 叢集 (AWS CLI)
<a name="scaling.scaledown.cli"></a>

下列程序說明如何使用 縮減 MemoryDB 叢集的規模 AWS CLI。在此過程中，您的 MemoryDB 叢集將繼續以最短的停機時間處理請求。

**縮減 MemoryDB 叢集 (AWS CLI)**

1. 使用下列參數執行 `list-allowed-node-type-updates`命令， AWS CLI 決定您可以縮減規模的節點類型。

   針對 Linux、macOS 或 Unix：

   ```
   aws memorydb list-allowed-node-type-updates \
   	    --cluster-name my-cluster-name
   ```

   針對 Windows：

   ```
   aws memorydb list-allowed-node-type-updates ^
   	    --cluster-name my-cluster-name
   ```

   上述命令的輸出看起來會類似這個 (JSON 格式)。

   ```
   {
   	    "ScaleUpNodeTypes": [
   	        "db.r6g.2xlarge", 
   	        "db.r6g.large"	        
   	    ],
   	    "ScaleDownNodeTypes": [
   	        "db.r6g.large"	        
   	    ], 
   }
   ```

   如需詳細資訊，請參閱 [list-allowed-node-type-updates](https://docs.aws.amazon.com/cli/latest/reference/memorydb/list-allowed-node-type-updates.html)。

1. 使用 `update-cluster`命令和下列參數，修改叢集以縮減至新的較小節點類型。
   + `--cluster-name` – 您要縮減規模的叢集名稱。
   + `--node-type` – 您要擴展叢集的新節點類型。此值必須是步驟 1 中 `list-allowed-node-type-updates` 命令傳回的其中一個節點類型。

   針對 Linux、macOS 或 Unix：

   ```
   aws memorydb update-cluster  \
   	    --cluster-name my-cluster \
   	    --node-type db.r6g.large
   ```

   針對 Windows：

   ```
   aws memorydb update-cluster ^
   	    --cluster-name my-cluster ^
   	    --node-type db.r6g.large
   ```

   如需詳細資訊，請參閱 [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)。

## 向下擴展 MemoryDB 叢集 (MemoryDB API)
<a name="scaling.vertical.scaledown.api"></a>

下列程序會使用 MemoryDB API，將叢集從目前的節點類型擴展到新的、較小的節點類型。在此過程中，您的 MemoryDB 叢集將繼續以最短的停機時間處理請求。

縮減為較小的節點類型所需的時間會有所不同，具體取決於您的節點類型和目前叢集中的資料量。

**向下擴展 (MemoryDB API)**

1. 使用 [ListAllowedNodeTypeUpdates](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_ListAllowedNodeTypeUpdates.html) API 搭配下列參數，決定您可以縮減規模的節點類型：
   + `ClusterName` – 叢集的名稱。使用此參數來描述特定叢集，而不是所有叢集。

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

1. 使用 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html) API 搭配下列參數，將您目前的叢集縮減為新的節點類型。
   + `ClusterName` – 叢集的名稱。
   + `NodeType` – 此叢集中新的較小節點類型。此值必須是步驟 1 中 `ListAllowedNodeTypeUpdates` 動作傳回的其中一個執行個體類型。

   ```
   https://memory-db.us-east-1.amazonaws.com/
   	   ?Action=UpdateCluster	   
   	   &NodeType=db.r6g.2xlarge
   	   &ClusterName=myReplGroup
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20210801T220302Z
   	   &Version=2021-01-01
   	   &X-Amz-Algorithm=Amazon4-HMAC-SHA256
   	   &X-Amz-Date=20210801T220302Z
   	   &X-Amz-SignedHeaders=Host
   	   &X-Amz-Expires=20210801T220302Z
   	   &X-Amz-Credential=<credential>
   	   &X-Amz-Signature=<signature>
   ```