

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

# 管理叢集
<a name="clusters"></a>

大多數 MemoryDB 操作都會在叢集層級執行。您可以將叢集設定為含特定數量的節點和一個參數群組，以控制每個節點的屬性。叢集內的所有節點都設計為相同節點類型，並具備相同的參數和安全群組設定。

每個叢集都必須有一個叢集識別符。叢集識別符是客戶針對叢集提供的名稱。此識別符會在與 MemoryDB API 和 AWS CLI 命令互動時指定特定叢集。叢集識別符對於 AWS 區域中的該客戶必須是唯一的。

MemoryDB 叢集的設計是使用 Amazon EC2 執行個體存取。您只能在以 Amazon VPC 服務為基礎的虛擬私有雲端 (VPC) 中啟動 MemoryDB 叢集，但您可以從外部存取它 AWS。如需詳細資訊，請參閱[從外部存取 MemoryDB 資源 AWS](accessing-memorydb.md#access-from-outside-aws)。

# 資料分層
<a name="data-tiering"></a>

從 r6gd 系列使用節點類型的叢集，其資料會在記憶體和本機 SSD （固態硬碟） 儲存體之間分層。資料分層除了將資料存放在記憶體之外，還在每個叢集節點中使用低成本固態硬碟 (SSDs)，為 Valkey 和 Redis OSS 工作負載提供了新的價格效能選項。與其他節點類型類似，寫入 r6gd 節點的資料會長期存放在多可用區域交易日誌中。資料分層非常適合定期存取高達 20% 的整體資料集的工作負載，以及在存取 SSD 資料時可容忍額外延遲的應用程式。

在具有資料分層的叢集上，MemoryDB 會監控其存放的每個項目的上次存取時間。當可用記憶體 (DRAM) 用盡時，MemoryDB 會使用最近最少使用的 (LRU) 演算法，自動將不常存取的項目從記憶體移至 SSD。之後存取 SSD 上的資料時，MemoryDB 會自動並以非同步方式將其移回記憶體，再處理請求。如果您的工作負載只會定期存取其資料的子集，則資料分層是以符合成本效益的方式擴展容量的最佳方式。

請注意，使用資料分層時，金鑰本身一律會保留在記憶體中，而 LRU 則會控制記憶體與磁碟上值的位置。一般而言，建議在使用資料分層時，金鑰大小小於您值的大小。

資料分層專為盡量降低對應用程式工作負載的效能影響所設計。例如，假設 500 位元組字串值，與記憶體中資料的讀取請求相比，對於存放在 SSD 上的資料的讀取請求，您通常會預期額外的 450 微秒延遲。

使用最大的資料分層節點大小 (db.r6gd.8xlarge)，您可以在單一 500 個節點叢集中存放最多約 500 TBs （使用 1 個僅供讀取複本時為 250 TB)。對於資料分層，MemoryDB 保留每個節點 19% 的 (DRAM) 記憶體供非資料使用。資料分層與 MemoryDB 中支援的所有 Valkey 和 Redis OSS 命令和資料結構相容。不需要任何用戶端變更就能使用此功能。

**Topics**
+ [最佳實務](data-tiering-best-practices.md)
+ [資料分層限制](data-tiering-prerequisites.md)
+ [資料層分定價](data-tiering-pricing.md)
+ [資料分層監控](data-tiering-monitoring.md)
+ [使用資料分層](data-tiering-enabling.md)
+ [從快照將資料還原至叢集](data-tiering-enabling-snapshots.md)

# 最佳實務
<a name="data-tiering-best-practices"></a>

建議遵循下列最佳實務：
+ 資料分層非常適合定期存取高達 20% 的整體資料集的工作負載，以及在存取 SSD 資料時可容忍額外延遲的應用程式。
+ 使用資料分層節點上可用的 SSD 容量時，建議值的大小大於金鑰大小。值大小不能大於 128MB，否則不會移至磁碟。項目在 DRAM 和 SSD 之間移動時，金鑰將一律保留在記憶體中，而且只有值會移至 SSD 層。

# 資料分層限制
<a name="data-tiering-prerequisites"></a>

資料分層具有下列限制：
+ 使用的節點類型必須來自 r6gd 系列，該系列在下列區域可用：`us-east-2`、`us-east-1`、`us-west-2`、`us-west-1`、`eu-west-1`、`eu-west-3`、`eu-central-1`、`ap-northeast-1`、`ap-southeast-1`、`ap-southeast-2`、`ap-south-1`、`ca-central-1` 和 `sa-east-1`。
+ 除非 r6gd 叢集也使用 r6gd，否則您無法將 r6gd 叢集的快照還原至另一個叢集。
+ 您無法將快照匯出至 Amazon S3 以進行資料分層叢集。
+ 不支援無叉 (forkless) 儲存。
+ 不支援從資料分層叢集 (例如，使用 r6gd 節點類型的叢集) 擴展到未使用資料分層的叢集 (例如，使用 r6g 節點類型的叢集)。
+ 資料分層僅支援`volatile-lru`、`allkeys-lru` 和 `noeviction` 最大記憶體政策。
+ 大於 128 MiB 的項目不會移至固態硬碟。

# 資料層分定價
<a name="data-tiering-pricing"></a>

R6gd 節點的總容量是 R6g 節點 （記憶體 \$1 SSD) 的 5 倍，且相較於 R6g 節點 （僅限記憶體），可協助您在以最大使用率執行時節省超過 60% 的儲存成本。如需詳細資訊，請參閱 [MemoryDB 定價](https://aws.amazon.com/memorydb/pricing/)。

# 資料分層監控
<a name="data-tiering-monitoring"></a>

MemoryDB 提供專為監控使用資料分層之效能叢集而設計的指標。若要監控 DRAM 中項目與 SSD 的比率，您可以在 使用 `CurrItems` 指標[MemoryDB 的指標](metrics.memorydb.md)。您可以計算百分比為：`(CurrItems with Dimension: Tier = Memory * 100) / (CurrItems with no dimension filter)`。

 如果設定的移出政策允許，當記憶體中的項目百分比低於 5% 時，MemoryDB 會開始移出項目。在設定了移出政策的節點上，寫入操作將收到記憶體不足錯誤。

 當記憶體中的項目百分比低於 5% [擴展 MemoryDB 叢集](scaling-cluster.md)時，仍建議您考慮。如需詳細資訊，請參閱 使用*資料分層的 MemoryDB 叢集指標*[MemoryDB 的指標](metrics.memorydb.md)。

# 使用資料分層
<a name="data-tiering-enabling"></a>

## 使用 使用資料分層 AWS 管理主控台
<a name="data-tiering-enabling-console"></a>

建立叢集時，您可以從 r6gd 系列中選取節點類型來使用資料分層，例如 *db.r6gd.xlarge*。選取該節點類型會自動啟用資料分層。

如需有關建立叢集的詳細資訊，請參閱 [步驟 2：建立叢集](getting-started.md#getting-started.createcluster)。

## 使用 啟用資料分層 AWS CLI
<a name="data-tiering-enabling-cli"></a>

使用 建立叢集時 AWS CLI，您可以從 r6gd 系列選取節點類型，例如 *db.r6gd.xlarge，*並設定 `--data-tiering` 參數，以使用資料分層。

從 r6gd 系列中選取節點類型時，無法選擇退出資料分層。如果您設定 `--no-data-tiering` 參數，操作將會失敗。

若為 Linux、macOS 或 Unix：

```
aws memorydb create-cluster \
   --cluster-name my-cluster \
   --node-type db.r6gd.xlarge \
   --engine valkey  \
   --acl-name my-acl \
   --subnet-group my-sg \
   --data-tiering
```

針對 Windows：

```
aws memorydb create-cluster ^
   --cluster-name my-cluster ^
   --node-type db.r6gd.xlarge ^
   --engine valkey ^
   --acl-name my-acl ^
   --subnet-group my-sg
   --data-tiering
```

執行此操作之後，將會看到類似如下的回應：

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "creating",
        "NumberOfShards": 1,
        "AvailabilityMode": "MultiAZ",
        "ClusterEndpoint": {
            "Port": 6379
        },
        "NodeType": "db.r6gd.xlarge",
        "EngineVersion": "7.2",
        "EnginePatchVersion": "7.2.6",
        "Engine": "valkey"
        "ParameterGroupName": "default.memorydb-valkey7",
        "ParameterGroupStatus": "in-sync",
        "SubnetGroupName": "my-sg",
        "TLSEnabled": true,
        "ARN": "arn:aws:memorydb:us-east-1:xxxxxxxxxxxxxx:cluster/my-cluster",
        "SnapshotRetentionLimit": 0,
        "MaintenanceWindow": "wed:03:00-wed:04:00",
        "SnapshotWindow": "04:30-05:30",        
        "ACLName": "my-acl",
        "DataTiering":"true",
        "AutoMinorVersionUpgrade": true
    }
}
```

# 從快照將資料還原至叢集
<a name="data-tiering-enabling-snapshots"></a>

您可以使用 （主控台）、 (AWS CLI) 或 (MemoryDB API) 將快照還原至啟用資料分層的新叢集。當使用 r6gd 系列中的節點類型建立叢集時，會啟用資料分層。

## 將快照中的資料還原至已啟用資料分層的叢集 （主控台）
<a name="data-tiering-enabling-snapshots-console"></a>

若要將快照還原至已啟用資料分層的新叢集 （主控台），請遵循 中的步驟 [從快照還原 （主控台）](snapshots-restoring.md#snapshots-restoring-CON)

請注意，若要啟用資料分層，您需要從 r6gd 系列中選取節點類型。

## 將快照中的資料還原至已啟用資料分層的叢集 (AWS CLI)
<a name="data-tiering-enabling-snapshots-cli"></a>

使用 建立叢集時 AWS CLI，預設會使用資料分層，方法是從 r6gd 系列選取節點類型，例如 *db.r6gd.xlarge* 和設定 `--data-tiering` 參數。

從 r6gd 系列中選取節點類型時，無法選擇退出資料分層。如果您設定 `--no-data-tiering` 參數，操作將會失敗。

若為 Linux、macOS 或 Unix：

```
aws memorydb create-cluster \
   --cluster-name my-cluster \
   --node-type db.r6gd.xlarge \
   --engine valkey 
   --acl-name my-acl \
   --subnet-group my-sg \
   --data-tiering \
   --snapshot-name my-snapshot
```

針對 Windows：

```
aws memorydb create-cluster ^
   --cluster-name my-cluster ^
   --node-type db.r6gd.xlarge ^
   --engine valkey ^
   --acl-name my-acl ^
   --subnet-group my-sg ^
   --data-tiering ^
   --snapshot-name my-snapshot
```

執行此操作之後，將會看到類似如下的回應：

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "creating",
        "NumberOfShards": 1,
        "AvailabilityMode": "MultiAZ",
        "ClusterEndpoint": {
            "Port": 6379
        },
        "NodeType": "db.r6gd.xlarge",
        "EngineVersion": "7.2",
        "EnginePatchVersion": "7.2.6",
        "Engine": "valkey"
        "ParameterGroupName": "default.memorydb-valkey7",
        "ParameterGroupStatus": "in-sync",
        "SubnetGroupName": "my-sg",
        "TLSEnabled": true,
        "ARN": "arn:aws:memorydb:us-east-1:xxxxxxxxxxxxxx:cluster/my-cluster",
        "SnapshotRetentionLimit": 0,
        "MaintenanceWindow": "wed:03:00-wed:04:00",
        "SnapshotWindow": "04:30-05:30",
        "ACLName": "my-acl",       
        "DataTiering": "true"
}
```

# 準備叢集
<a name="clusters.prepare"></a>

您可以在下面找到使用 MemoryDB 主控台、 AWS CLI或 MemoryDB API 建立叢集的指示。

每當您建立叢集時，最好執行一些準備工作，這樣您就不需要立即升級或進行變更。

**Topics**
+ [判斷要求](cluster-create-determine-requirements.md)

# 判斷要求
<a name="cluster-create-determine-requirements"></a>

**準備**  
釐清下列問題的答案有助於提高叢集的建立流暢度：
+ 開始建立叢集之前，請務必在相同的 VPC 中建立子網路群組。或者，您可以使用提供的預設子網路群組。如需詳細資訊，請參閱[子網路和子網路群組](subnetgroups.md)。

  MemoryDB 旨在 AWS 使用 Amazon EC2 從 內部存取。不過，如果您在以 Amazon VPC 為基礎的 VPC 中啟動，您可以從外部提供存取權 AWS。如需詳細資訊，請參閱[從外部存取 MemoryDB 資源 AWS](accessing-memorydb.md#access-from-outside-aws)。
+ 您是否需要自訂任何參數值？

  如果需要，請建立自訂參數群組。如需詳細資訊，請參閱[建立參數群組](parametergroups.creating.md)。
+ 您需要建立 VPC 安全群組嗎？ 

  如需詳細資訊，請參閱 [VPC 中的安全性](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html)。
+ 您要如何實作容錯能力？

  如需詳細資訊，請參閱[減少故障](faulttolerance.md)。

**Topics**
+ [記憶體和處理器要求](#cluster-create-determine-requirements-memory)
+ [MemoryDB 叢集組態](#cluster-configuration)
+ [增強型 I/O 多工](#cluster-create-determine-requirements-multiplexing)
+ [擴展要求](#cluster-create-determine-requirements-scaling)
+ [存取要求](#cluster-create-determine-requirements-access)
+ [區域和可用區域](#cluster-create-determine-requirements-region)

## 記憶體和處理器要求
<a name="cluster-create-determine-requirements-memory"></a>

MemoryDB 的基本建置區塊是節點。節點是在碎片中設定以形成叢集。當您判斷要為叢集使用何種節點類型時，請一併考量叢集的節點組態和您要存放的資料量。

## MemoryDB 叢集組態
<a name="cluster-configuration"></a>

MemoryDB 叢集由 1 到 500 個碎片組成。MemoryDB 叢集中的資料會分割到叢集中的碎片。您的應用程式會使用稱為 端點的網路地址與 MemoryDB 叢集連線。除了節點端點之外，MemoryDB 叢集本身還有一個稱為*叢集端點的端點*。您的應用程式可以使用此端點來讀取或寫入叢集，從而決定要讀取或寫入哪個節點至 MemoryDB。

## 增強型 I/O 多工
<a name="cluster-create-determine-requirements-multiplexing"></a>

如果您執行的是 Valkey 或 Redis OSS 7.0 版或更新版本，您將透過增強型 I/O 多工功能獲得額外的加速，其中每個專用網路 IO 執行緒管道命令都會從多個用戶端傳入引擎，並利用可有效率地分批處理命令的能力。如需詳細資訊，請參閱[超快速效能](https://aws.amazon.com/memorydb/features/#Ultra-fast_performance)和 [支援的節點類型](nodes.supportedtypes.md)。

## 擴展要求
<a name="cluster-create-determine-requirements-scaling"></a>

所有叢集都可以擴展更大的節點類型。當您擴展 MemoryDB 叢集時，您可以線上執行，讓叢集保持可用狀態，也可以從快照植入新的叢集，並避免讓新的叢集啟動為空。

如需詳細資訊，請參閱本指南中的 [擴展](scaling.md)。

## 存取要求
<a name="cluster-create-determine-requirements-access"></a>

根據設計，可以從 Amazon EC2 執行個體存取 MemoryDB 叢集。MemoryDB 叢集的網路存取僅限於建立叢集的帳戶。因此，您必須先授權傳入叢集，才能從 Amazon EC2 執行個體存取叢集。如需詳細說明，請參閱本指南的[步驟3：授予叢集的存取權](getting-started.md#getting-started.authorizeaccess)。

## 區域和可用區域
<a name="cluster-create-determine-requirements-region"></a>

透過將 MemoryDB 叢集放置在靠近應用程式的 AWS 區域中，您可以減少延遲。如果您的叢集有多個節點，將節點安置在不同可用區域中可降低故障對叢集的影響。

如需詳細資訊，請參閱下列內容：
+ [選擇區域與可用區域](regionsandazs.md)
+ [減少故障](faulttolerance.md)

# 建立叢集
<a name="cluster.create"></a>

MemoryDB 提供三種方法來建立叢集。如需詳細資訊，請參閱[步驟 2：建立叢集](getting-started.md#getting-started.createcluster)。

# 檢視叢集的詳細資訊
<a name="clusters.viewdetails"></a>

您可以使用 MemoryDB 主控台或 AWS CLI MemoryDB API 檢視一或多個叢集的詳細資訊。

## 檢視 MemoryDB 叢集的詳細資訊 （主控台）
<a name="clusters.viewdetails.con"></a>

下列程序詳細說明如何使用 MemoryDB 主控台檢視 MemoryDB 叢集的詳細資訊。

****

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

1. 若要查看叢集的詳細資訊，請選擇叢集名稱左側的選項按鈕，然後選擇**檢視詳細資訊**。您也可以直接按一下叢集以檢視叢集詳細資訊頁面。

   **叢集詳細資訊**頁面會顯示叢集的詳細資訊，包括叢集端點。您可以使用**叢集**詳細資訊頁面中提供的多個索引標籤來檢視更多詳細資訊。

1. 選擇**碎片和節點**索引標籤，以查看叢集碎片的清單，以及每個碎片中的節點數量。

1. 若要檢視節點的特定資訊，請在下表中展開碎片。或者，您也可以使用搜尋方塊來搜尋碎片。

   這樣做會顯示每個節點的相關資訊，包括其可用區域、插槽/金鑰空間和狀態。

1. 選擇**指標**索引標籤來監控其各自的程序，例如 **CPU 使用率**和**引擎 CPU 使用率**。如需詳細資訊，請參閱[MemoryDB 的指標](metrics.memorydb.md)。

1. 選擇**網路和安全性**索引標籤，以查看子網路群組和安全群組的詳細資訊。

   1. 在**子網路群組**中，您可以看到子網路群組的名稱、子網路所屬 VPC 的連結，以及子網路群組的 Amazon Resource Name (ARN)。

   1. 在**安全群組**中，您可以看到安全群組 ID、名稱和描述。

1. 選擇**維護和快照**索引標籤，以查看快照設定的詳細資訊。

   1. 在**快照**中，您可以查看是否已啟用自動快照、快照保留期間和快照視窗。

   1. 在**快照**中，您會看到此叢集的任何快照清單，包括快照名稱、大小、碎片數量和狀態。

   如需詳細資訊，請參閱[快照和還原](snapshots.md)。

1. 選擇**維護和快照**索引標籤，以查看維護時段的詳細資訊，以及任何待定的 ACL、重新分片或服務更新。如需詳細資訊，請參閱[管理維護作業](maintenance-window.md)。

1. 選擇**服務更新**索引標籤，以查看適用於此叢集的任何服務更新的詳細資訊。如需詳細資訊，請參閱[MemoryDB 中的服務更新](service-updates.md)。

1. 選擇**標籤**索引標籤，以查看與此叢集相關聯之任何資源或成本分配標籤的詳細資訊。如需詳細資訊，請參閱[標記快照](snapshots-tagging.md)。

## 檢視叢集的詳細資訊 (AWS CLI)
<a name="clusters.viewdetails.cli"></a>

您可以使用 命令檢視叢集 AWS CLI `describe-clusters`的詳細資訊。如果省略 `--cluster-name` 參數，則會傳回多個叢集 (最多 `--max-results` 個) 的詳細資訊。如果包含 `--cluster-name` 參數，則會傳回指定叢集的詳細資訊。您可以使用 `--max-results` 參數限制傳回的記錄數量。

以下程式碼會列出 `my-cluster` 的詳細資訊。

```
aws memorydb describe-clusters --cluster-name my-cluster
```

以下程式碼清單會列出最多 25 個叢集的詳細資訊。

```
aws memorydb describe-clusters --max-results 25
```

**Example**  
針對 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",
            "Description": "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": 1629230643.961,
                            "Endpoint": {
                                "Address": "my-cluster-0001-001.my-cluster.abcdef.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        },
                        {
                            "Name": "my-cluster-0001-002",
                            "Status": "available",
                            "CreateTime": 1629230644.025,
       	       	       	    "Endpoint":	{
       	       	       	       	"Address": "my-cluster-0001-002.my-cluster.abcdef.memorydb.us-east-1.amazonaws.com",
       	       	       	       	"Port":	6379
       	       	       	    }
                        }
                    ],
                    "NumberOfNodes": 2
                }
            ],
            "ClusterEndpoint": {
                "Address": "clustercfg.my-cluster.abcdef.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": "default",
            "TLSEnabled": true,
            "ARN": "arn:aws:memorydb:us-east-1:000000000:cluster/my-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "sat:06:30-sat:07:30",
            "SnapshotWindow": "04:00-05:00",
            "ACLName": "open-access",
            "DataTiering": "false",
            "AutoMinorVersionUpgrade": true,            
        }
```

如需詳細資訊，請參閱 AWS CLI for MemoryDB 主題 [https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-clusters.html](https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-clusters.html)。

## 檢視叢集的詳細資訊 (MemoryDB API)
<a name="clusters.viewdetails.api"></a>

您可以使用 MemoryDB API `DescribeClusters`動作檢視叢集的詳細資訊。如果包含 `ClusterName` 參數，則會傳回指定叢集的詳細資訊。如果省略 `ClusterName` 參數，則會傳回最多 `MaxResults` 個叢集 (預設值為 100) 的詳細資訊。`MaxResults` 的值不可小於 20 或大於 100。

以下程式碼會列出 `my-cluster` 的詳細資訊。

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

以下程式碼清單會列出最多 25 個叢集的詳細資訊。

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

如需詳細資訊，請參閱 MemoryDB API 參考主題 [https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeClusters.html](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeClusters.html)。

# 修改 MemoryDB 叢集
<a name="clusters.modify"></a>

除了從叢集新增或移除節點之外，有時您可能需要對現有叢集進行其他變更，例如新增安全群組、變更維護時段或參數群組。

建議您將維護時段落在使用量最低的時段。您可能需要不時進行調整。

當您變更叢集的參數時，變更會立即套用至叢集。無論您是變更叢集的參數群組本身，還是叢集參數群組中的參數值，都是如此。

您也可以更新叢集的引擎版本。例如，您可以選取新的引擎次要版本，MemoryDB 會立即開始更新您的叢集。

## 使用 AWS 管理主控台
<a name="clusters.modifyclusters.viewdetails"></a>

**修改叢集**

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

1. 從右上角的清單中，選擇您要修改之叢集所在的 AWS 區域。

1. 從左側導覽前往**叢集**。從**叢集詳細資訊**中，使用選項按鈕選取叢集，然後移至**動作**，然後**修改**。

1. **修改**頁面隨即出現。

1. 在**修改**視窗中，進行您想要的修改。選項包括：
   + Description
   + 子網路群組
   + VPC 安全群組
   + Node type
**注意**  
如果叢集使用 r6gd 系列中的節點類型，則只能從該系列中選擇不同的節點大小。如果從 r6gd 系列中選擇節點類型，則將自動啟用資料分層。如需詳細資訊，請參閱[資料分層](data-tiering.md)。
   + Valkey 或 Redis OSS 版本相容性
   + 啟用自動快照
   + 快照保留期
   + 快照視窗
   + Maintenance window (維護時段)
   + SNS 通知的主題

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

您也可以前往**叢集詳細資訊**頁面，然後按一下**修改**以修改叢集。如果您想要修改叢集的特定區段，您可以前往**叢集詳細資訊**頁面中的個別索引標籤，然後按一下**修改**。

## 使用 AWS CLI
<a name="clusters.modify.cli"></a>

您可以使用 AWS CLI `update-cluster`操作修改現有的叢集。若要修改叢集的組態值，請指定叢集 ID、要變更的參數以及參數的新值。下方範例會變更名稱為 `my-cluster` 之叢集的維護時段，並立即套用變更。

針對 Linux、macOS 或 Unix：

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --preferred-maintenance-window sun:23:00-mon:02:00
```

針對 Windows：

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --preferred-maintenance-window sun:23:00-mon:02:00
```

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

## 使用 MemoryDB API
<a name="clusters.modify.api"></a>

您可以使用 MemoryDB API [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html) 操作來修改現有的叢集。若要修改叢集的組態值，請指定叢集 ID、要變更的參數以及參數的新值。下方範例會變更名稱為 `my-cluster` 之叢集的維護時段，並立即套用變更。

```
https://memory-db.us-east-1.amazonaws.com/
    ?Action=UpdateCluster
    &ClusterName=my-cluster
    &PreferredMaintenanceWindow=sun:23:00-mon:02:00
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20210801T220302Z
    &X-Amz-Algorithm=Amazon4-HMAC-SHA256
    &X-Amz-Date=20210802T220302Z
    &X-Amz-SignedHeaders=Host
    &X-Amz-Expires=20210801T220302Z
    &X-Amz-Credential=<credential>
    &X-Amz-Signature=<signature>
```

## 如何觸發從 Redis OSS 到 Valkey 的跨引擎升級
<a name="clusters.modifyclusters.cross-engine"></a>

您可以使用主控台、API 或 CLI，將現有的 Redis OSS 叢集升級至 Valkey 引擎。

如果您有使用預設參數群組的現有 Redis OSS 叢集，您可以使用 update-cluster API 指定新的引擎和引擎版本，以升級至 Valkey。

針對 Linux、macOS 或 Unix：

```
aws memorydb update-cluster \
   --cluster-name myCluster \
   --engine valkey \
   --engine-version 7.2
```

針對 Windows：

```
aws memorydb update-cluster ^
   --cluster-name myCluster ^
   --engine valkey ^
   --engine-version 7.2
```

如果您將自訂參數群組套用至想要升級的現有 Redis OSS 叢集，您也需要在請求中傳遞自訂的 Valkey 參數群組。輸入 Valkey 自訂參數群組必須與現有的 Redis OSS 自訂參數群組具有相同的 Redis OSS 靜態參數值。

針對 Linux、macOS 或 Unix：

```
aws memorydb update-cluster \
   --cluster-name myCluster \
   --engine valkey \
   --engine-version 7.2 \
   --parameter-group-name myParamGroup
```

針對 Windows：

```
aws memorydb update-cluster ^
   --cluster-name myCluster ^
   --engine valkey ^
   --engine-version 7.2 ^
   --parameter-group-name myParamGroup
```

# 從叢集新增/移除節點
<a name="clusters.deletenode"></a>

您可以使用 AWS 管理主控台 AWS CLI、 或 MemoryDB API，從叢集新增或移除節點。

## 使用 AWS 管理主控台
<a name="clusters.deletenodeclusters.viewdetails"></a>

****

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="clusters.deletenode.cli"></a>

1. 識別您要移除的節點名稱。如需詳細資訊，請參閱[檢視叢集的詳細資訊](clusters.viewdetails.md)。

1. 搭配使用 `update-cluster` CLI 操作與要移除的節點清單，如下列範例所示。

   若要使用命令列界面移除叢集中的節點，請搭配使用 `update-cluster` 命令與下列參數：
   + `--cluster-name` 您要從中移除節點的叢集 ID。
   + `--replica-configuration` – 可讓您設定複本數量：
     + `ReplicaCount` – 設定此屬性以指定您想要的複本節點數目。
   + `--region` 指定您要從中移除節點的叢集 AWS 區域。

   針對 Linux、macOS 或 Unix：

   ```
   aws memorydb update-cluster \
       --cluster-name my-cluster \
       --replica-configuration \
           ReplicaCount=1 \
       --region us-east-1
   ```

   針對 Windows：

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

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

## 使用 MemoryDB API
<a name="clusters.deletenode.api"></a>

若要使用 MemoryDB API 移除節點，請使用叢集名稱和要移除的節點清單呼叫 `UpdateCluster` API 操作，如下所示：
+ `ClusterName` 您要從中移除節點的叢集 ID。
+ `ReplicaConfiguration` – 可讓您設定複本數量：
  + `ReplicaCount` – 設定此屬性以指定您想要的複本節點數目。
+ `Region` 指定您要從中移除節點的叢集 AWS 區域。

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

# 存取您的叢集
<a name="accessing-memorydb"></a>

您的 MemoryDB 執行個體旨在透過 Amazon EC2 執行個體存取。

您可以從相同 Amazon VPC 中的 Amazon EC2 執行個體存取 MemoryDB 節點。或者，透過使用 VPC 對等互連，您可以從不同 Amazon VPC 中的 Amazon EC2 存取 MemoryDB 節點。

**Topics**
+ [授予對叢集的存取權](#grant-access)
+ [從外部存取 MemoryDB 資源 AWS](#access-from-outside-aws)

## 授予對叢集的存取權
<a name="grant-access"></a>

您只能從在相同 Amazon VPC 中執行的 Amazon EC2 執行個體連線到 MemoryDB 叢集。在此情況下，您需要授權透過網路輸入至叢集。

**授權從 Amazon VPC 安全群組透過網路輸入至叢集**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在左側導覽窗格中的網路**與安全**下，選擇**安全群組**。

1. 從安全群組的清單中，選擇要用於 Amazon VPC 的安全群組。除非您為 MemoryDB 使用建立安全群組，否則此安全群組將命名為*預設值*。

1. 選擇 **Inbound (傳入)** 標籤，然後執行下列動作：

   1. 選擇**編輯**。

   1. 選擇**新增規則**。

   1. 在 **Type (類型)** 欄中，選擇 **Custom TCP rule (自訂 TCP 規則)**。

   1. 在 **Port range (連接埠範圍)** 方塊中，輸入要用於叢集節點的連接埠號碼。此號碼必須與您啟動叢集時指定的號碼相同。Valkey 和 Redis OSS 的預設連接埠為 **6379**。

   1. 在**來源**方塊中，選擇具有連接埠範圍 (0.0.0.0/0) 的 **Anywhere**，以便您在 Amazon VPC 內啟動的任何 Amazon EC2 執行個體可以連線至 MemoryDB 節點。
**重要**  
將 MemoryDB 叢集開啟至 0.0.0.0/0 不會將叢集公開至網際網路，因為它沒有公有 IP 地址，因此無法從 VPC 外部存取。不過，預設安全群組可能會套用到客戶帳戶中的其他 Amazon EC2 執行個體，而這些執行個體可能有公有 IP 地址。如果他們正巧在預設連接埠上執行某些項目，就可能會意外公開該服務。因此，我們建議您建立僅供 MemoryDB 使用的 VPC 安全群組。如需詳細資訊，請參閱[自訂安全群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#creating-your-own-security-groups)。

   1. 選擇**儲存**。

當您在 Amazon VPC 中啟動 Amazon EC2 執行個體時，該執行個體將能夠連線到您的 MemoryDB 叢集。

## 從外部存取 MemoryDB 資源 AWS
<a name="access-from-outside-aws"></a>

MemoryDB 是一項服務，設計用於 VPC 內部。由於網際網路流量和安全性考量的延遲，因此不鼓勵外部存取。不過，如果需要外部存取 MemoryDB 以進行測試或開發，可以透過 VPN 完成。

使用 AWS Client VPN，您可以允許對 MemoryDB 節點進行外部存取，優點如下：
+ 有限存取核准的使用者或身分驗證金鑰；
+ VPN 用戶端與 AWS VPN 端點之間的加密流量；
+ 有限存取特定子網路或節點；
+ 輕鬆撤銷使用者的存取或身分驗證金鑰；
+ 稽核連線；

以下程序示範如何：

**Topics**
+ [建立憑證授權機構](#create-cert)
+ [設定 AWS 用戶端 VPN 元件](#configure-vpn-components)
+ [設定 VPN 用戶端](#configure-vpn-client)

### 建立憑證授權機構
<a name="create-cert"></a>

您可以使用不同的技術或工具來建立憑證授權單位 (CA)。我們建議由 [OpenVPN](https://openvpn.net/community-resources/openvpn-project/) 專案提供的 easy-rsa 公用程式。無論您選擇哪個選項，請確保金鑰安全無虞。下列程序會下載 easy-rsa 指令碼、建立憑證授權單位和金鑰來驗證第一個 VPN 用戶端：
+ 若要建立初始憑證，請開啟終端機並執行下列動作：
  + `git clone` [https://github.com/OpenVPN/easy-rsa](https://github.com/OpenVPN/easy-rsa)
  + `cd easy-rsa`
  + `./easyrsa3/easyrsa init-pki`
  + `./easyrsa3/easyrsa build-ca nopass`
  + `./easyrsa3/easyrsa build-server-full server nopass`
  + `./easyrsa3/easyrsa build-client-full client1.domain.tld nopass`

  包含憑證的 **pki** 子目錄將建立於 **easy-rsa** 下。
+ 將伺服器憑證提交至 AWS Certificate Manager (ACM)：
  + 在 ACM 主控台上，選取 **Certificate Manager**。
  + 選取 **Import certificate (匯入憑證)**。
  + 在 **Certificate body (憑證內文)** 欄位裡輸入 `easy-rsa/pki/issued/server.crt` 檔案中可用的公有金鑰憑證。
  + 在 **Certificate private key (憑證私有金鑰)** 欄位裡貼上 `easy-rsa/pki/private/server.key` 中可用的私有金鑰。請確定選取 `BEGIN AND END PRIVATE KEY` 之間的所有直線 (包括 `BEGIN` 和 `END` 直線)。
  + 在 **Certificate chain (憑證鏈)** 欄位中貼上 `easy-rsa/pki/ca.crt` 檔案中可用的 CA 公有金鑰。
  + 選取 **Review and import (檢閱和匯入)**。
  + 選取 **Import (匯入)**。

  若要使用 CLI AWS 將伺服器的憑證提交至 ACM，請執行下列命令： `aws acm import-certificate --certificate fileb://easy-rsa/pki/issued/server.crt --private-key file://easy-rsa/pki/private/server.key --certificate-chain file://easy-rsa/pki/ca.crt --region region`

  請注意憑證 ARN 以供日後使用。

### 設定 AWS 用戶端 VPN 元件
<a name="configure-vpn-components"></a>

**使用 AWS 主控台**

在 AWS 主控台上，選取**服務**，然後選取 **VPC**。

在 **Virtual Private Network (虛擬私有網路)** 下，選取 **Client VPN Endpoints (客戶端 VPN 端點)**，然後執行下列動作：

**設定 AWS Client VPN 元件**
+ 選取 **Create Client VPN Endpoint (建立客戶端 VPN 端點)**。
+ 指定下列選項：
  + **Client IPv4 CIDR (客戶端 IPv4 CIDR)**：使用具有至少 /22 範圍網路遮罩的私有網路。請確定選取的子網路不會與 VPC 網路的位址衝突。範例：10.0.0.0/22.
  + 在 **Server certificate ARN (伺服器憑證 ARN)** 中，選取先前匯入的憑證 ARN。
  + 選取 **Use mutual authentication (使用交互身分驗證)**。
  + 在 **Client certificate ARN (用戶端憑證 ARN)** 中，選取先前匯入之憑證的 ARN。
  + 選取 **Create Client VPN Endpoint (建立客戶端 VPN 端點)**。

**使用 AWS CLI**

執行以下命令：

`aws ec2 create-client-vpn-endpoint --client-cidr-block "10.0.0.0/22" --server-certificate-arn arn:aws:acm:us-east-1:012345678912:certificate/0123abcd-ab12-01a0-123a-123456abcdef --authentication-options Type=certificate-authentication,,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:us-east-1:012345678912:certificate/123abcd-ab12-01a0-123a-123456abcdef} --connection-log-options Enabled=false `

輸出範例：

`"ClientVpnEndpointId": "cvpn-endpoint-0123456789abcdefg", "Status": { "Code": "pending-associate" }, "DnsName": "cvpn-endpoint-0123456789abcdefg.prod.clientvpn.us-east-1.amazonaws.com" } `

**將目標網路與 VPN 端點建立關聯**
+ 選取新的 VPN 端點，然後選取 **Associations (關聯)** 標籤。
+ 選取 **Associations (關聯)** 並指定下列選項。
  + **VPC**：選取 MemoryDB 叢集的 VPC。
  + 選取其中一個 MemoryDB 叢集的網路。如有疑問，請檢閱 MemoryDB 儀表板上**子網路群組**中的網路。
  + 選取 **Associations (關聯)**。如有必要，請針對剩餘的網路重複這些步驟。

**使用 AWS CLI**

執行以下命令：

`aws ec2 associate-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --subnet-id subnet-0123456789abdcdef`

輸出範例：

`"Status": { "Code": "associating" }, "AssociationId": "cvpn-assoc-0123456789abdcdef" } `

**檢閱 VPN 安全性群組**

VPN 端點會自動採用 VPC 的預設安全群組。檢查傳入和傳出規則，並確認安全群組是否允許從 VPN 網路 （在 VPN 端點設定上定義） 到服務連接埠上 MemoryDB 網路的流量 （預設為 6379 for Redis)。

如果您需要變更指派給 VPN 端點的安全群組，請依照下列步驟進行：
+ 選取目前安全群組。
+ 選取 **Apply Security Group (套用安全群組)**。
+ 選取新的安全群組。

**使用 AWS CLI**

執行以下命令：

`aws ec2 apply-security-groups-to-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefga  --vpc-id vpc-0123456789abdcdef --security-group-ids sg-0123456789abdcdef`

輸出範例：

`"SecurityGroupIds": [ "sg-0123456789abdcdef" ] } `

**注意**  
MemoryDB 安全群組也需要允許來自 VPN 用戶端的流量。根據 VPC 網路，用戶端的位址將以 VPN 端點位址遮蔽。因此，在 MemoryDB 安全群組上建立傳入規則時，請考慮 VPC 網路 （而非 VPN 用戶端的網路）。

**授權目標網路的 VPN 存取**

在 **Authorization (授權)** 標籤上，選取 **Authorize Ingress (授權輸入)** 並指定下列項目：
+ 啟用存取的目的地網路：使用 0.0.0.0/0 以允許存取任何網路 （包括網際網路） 或限制 MemoryDB 網路/主機。
+ 在 **Grant access to: (授予存取：)** 下，選取 **Allow access to all users (允許存取所有使用者)**。
+ 選取 **Add Authorization Rules (新增授權規則)**。

**使用 AWS CLI**

執行以下命令：

`aws ec2 authorize-client-vpn-ingress --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --target-network-cidr 0.0.0.0/0 --authorize-all-groups`

輸出範例：

`{ "Status": { "Code": "authorizing" } }`

**允許從 VPN 用戶端存取網際網路**

如果您需要透過 VPN 瀏覽網際網路，則需要建立額外的路由。選取 **Route Table (路由表)** 標籤，然後選取 **Create Route (建立路由)**。
+ 路由目標：0.0.0.0/0
+ **Target VPC Subnet ID (目標 VPC 子網路 ID)**：選取其中一個可存取網際網路的相關子網路。
+ 選取 **Create Route (建立路由)**。

**使用 AWS CLI**

執行以下命令：

`aws ec2 create-client-vpn-route --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --destination-cidr-block 0.0.0.0/0 --target-vpc-subnet-id subnet-0123456789abdcdef`

輸出範例：

`{ "Status": { "Code": "creating" } } `

### 設定 VPN 用戶端
<a name="configure-vpn-client"></a>

在 AWS Client VPN 儀表板上，選取最近建立的 VPN 端點，然後選取**下載用戶端組態**。複製組態檔案，以及檔案 `easy-rsa/pki/issued/client1.domain.tld.crt` 和 `easy-rsa/pki/private/client1.domain.tld.key`。編輯組態檔案，並變更或新增下列參數：
+ 憑證：新增一個指向 `client1.domain.tld.crt` 檔案的參數憑證的新行。使用檔案的完整路徑。範例：`cert /home/user/.cert/client1.domain.tld.crt`
+ 憑證：金鑰：新增一個指向 `client1.domain.tld.key` 檔案的參數金鑰的新行。使用檔案的完整路徑。範例：`key /home/user/.cert/client1.domain.tld.key`

使用下列命令建立 VPN 連接：`sudo openvpn --config downloaded-client-config.ovpn`

**撤銷存取**

如果您需要讓來自特定客戶端金鑰的存取失效，則需要在 CA 中撤銷該金鑰。然後將撤銷清單提交至 AWS Client VPN。

用 easy-rsa 撤銷密鑰：
+ `cd easy-rsa`
+ `./easyrsa3/easyrsa revoke client1.domain.tld`
+ 輸入「是」以繼續，或輸入任何其他輸入以中止。

  `Continue with revocation: `yes` ... * `./easyrsa3/easyrsa gen-crl`
+ 已建立更新的 CRL。CRL 檔案：`/home/user/easy-rsa/pki/crl.pem`

將撤銷清單匯入 AWS Client VPN：
+ 在 上 AWS 管理主控台，選取**服務**，然後選取 **VPC**。
+ 選取 **Client VPN Endpoints (用戶端 VPN 端點)**。
+ 選取用戶端 VPN 端點，然後選取 **Actions (動作)** -> **Import Client Certificate CRL (匯入用戶端憑證 CRL)**。
+ 貼上 `crl.pem` 檔案的內容：

**使用 AWS CLI**

執行以下命令：

`aws ec2 import-client-vpn-client-certificate-revocation-list --certificate-revocation-list file://./easy-rsa/pki/crl.pem --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg `

輸出範例：

`Example output: { "Return": true } `

# 尋找連線端點
<a name="endpoints"></a>

您的應用程式會使用 端點連線至您的叢集。端點是叢集的唯一地址。使用叢集的*叢集端點*進行所有操作。

以下各節會引導您探索所需的端點。

## 尋找 MemoryDB 叢集的端點 (AWS 管理主控台)
<a name="endpoints.find.console"></a>

**尋找 MemoryDB 叢集的端點**

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

1. 從導覽窗格中選擇 **Clusters (叢集)**。

   叢集畫面會顯示叢集清單。選擇您要連線的叢集。

1. 若要尋找叢集的端點，請選擇叢集的名稱 （而非選項按鈕）。

1. **叢集端點**會顯示在**叢集詳細資訊**下。若要加以複製，請選擇端點左側的複製圖示。

## 尋找 MemoryDB 叢集的端點 (AWS CLI)
<a name="endpoints.find.cli"></a>

您可以使用 `describe-clusters`命令來探索叢集的端點。命令會傳回叢集的端點。

下列操作會擷取叢集 的端點，在此範例中以*範例*表示`mycluster`。

它會傳回下列 JSON 回應：

```
aws memorydb describe-clusters \
  --cluster-name mycluster
```

針對 Windows：

```
aws memorydb describe-clusters ^
   --cluster-name mycluster
```

```
{
    "Clusters": [
        {
            "Name": "my-cluster",
            "Status": "available",
            "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.4",
            "ParameterGroupName": "default.memorydb-redis6",
            "ParameterGroupStatus": "in-sync",
            "SubnetGroupName": "my-sg",
            "TLSEnabled": true,
            "ARN": "arn:aws:memorydb:us-east-1:zzzexamplearn:cluster/my-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "wed:03:00-wed:04:00",
            "SnapshotWindow": "04:30-05:30",
            "ACLName": "my-acl",
            "AutoMinorVersionUpgrade": true
        }
    ]
}
```

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

## 尋找 MemoryDB 叢集的端點 (MemoryDB API)
<a name="endpoints.find.api"></a>

您可以使用 MemoryDB API 來探索叢集的端點。

### 尋找 MemoryDB 叢集的端點 (MemoryDB API)
<a name="endpoints.find.api.clusters"></a>

您可以使用 MemoryDB API 來探索具有 `DescribeClusters`動作之叢集的端點。動作會傳回叢集的端點。

下列操作會擷取叢集 的叢集端點`mycluster`。

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

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

# 使用碎片
<a name="shards"></a>

碎片是 1 到 6 個節點的集合。您可以建立具有較高碎片數量和較低複本數量的叢集，每個叢集總計最多 500 個節點。此叢集組態的範圍可以從 500 個碎片和 0 個複本到 100 個碎片和 4 個複本，這是允許的複本數量上限。叢集的資料會分割到叢集的各個碎片中。如果一個碎片中有超過一個節點，碎片會實作複寫，其中一個節點為讀取/寫入主要節點，其他節點則為僅供讀取複本節點。

當您使用 建立 MemoryDB 叢集時 AWS 管理主控台，您可以指定叢集中的碎片數量，以及碎片中的節點數量。如需詳細資訊，請參閱[建立 MemoryDB 叢集](getting-started.md#clusters.create)。

碎片中的每個節點都具有相同的運算、儲存體及記憶體規格。MemoryDB API 可讓您控制整個叢集的屬性，例如節點數量、安全設定和系統維護時段。

如需詳細資訊，請參閱[MemoryDB 的離線重新分片](cluster-resharding-offline.md)及[MemoryDB 的線上重新分片](cluster-resharding-online.md)。

## 尋找碎片的名稱
<a name="shard-find-id"></a>

您可以使用 AWS 管理主控台、 AWS CLI 或 MemoryDB API 尋找碎片的名稱。

### 使用 AWS 管理主控台
<a name="shard-find-id-con"></a>

下列程序使用 AWS 管理主控台 尋找 MemoryDB 叢集的碎片名稱。

****

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

1. 在左側導覽窗格中，選擇**叢集**。

1. 選擇您要尋找其碎片名稱**的名稱**下的叢集。

1. 在**碎片和節點**索引標籤下，檢視**名稱**下的碎片清單。您也可以展開每個節點以檢視其節點的詳細資訊。

### 使用 AWS CLI
<a name="shard-find-id-cli"></a>

若要尋找 MemoryDB 叢集的碎片 （碎片） 名稱，請使用 AWS CLI 操作`describe-clusters`搭配下列選用參數。
+ **`--cluster-name`**- 選用參數，使用時會將輸出限制為指定叢集的詳細資訊。如果省略此參數，則會傳回最多 100 個叢集的詳細資訊。
+ **`--show-shard-details`**- 傳回碎片的詳細資訊，包括其名稱。

此命令將傳回 `my-cluster` 的詳細資訊。

若為 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.xxxxx.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.xxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        }
                    ],
                    "NumberOfNodes": 2
                }
            ],
            "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:xxxxxexamplearn:cluster/my-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "wed:03:00-wed:04:00",
            "SnapshotWindow": "04:30-05:30",
            "ACLName": "my-acl",
            "DataTiering": "false",
            "AutoMinorVersionUpgrade": true
        }
    ]
}
```

### 使用 MemoryDB API
<a name="shard-find-id-api"></a>

若要尋找 MemoryDB 叢集的碎片 ID，請使用 API 操作`DescribeClusters`搭配下列選用參數。
+ **`ClusterName`**- 選用參數，使用時會將輸出限制為指定叢集的詳細資訊。如果省略此參數，則會傳回最多 100 個叢集的詳細資訊。
+ **`ShowShardDetails`**- 傳回碎片的詳細資訊，包括其名稱。

**Example**  
此命令將傳回 `my-cluster` 的詳細資訊。  
若為 Linux、macOS 或 Unix：  

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