MemoryDB 的線上重新共享 - Amazon MemoryDB

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

MemoryDB 的線上重新共享

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

您可以執行下列作業:

  • 橫向擴展 – 將碎片新增至 MemoryDB 叢集,以增加讀取和寫入容量。

    如果您將一或多個碎片新增至叢集,則每個新碎片中的節點數量與現有碎片中最小的節點數量相同。

  • 縮減規模 – 從 MemoryDB 叢集中移除碎片,以減少讀取和寫入容量,進而降低成本。

目前,下列限制適用於 MemoryDB 線上重新分發:

  • 槽或金鑰空間和大型項目的限制為:

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

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

  • 向外擴展時,任何新碎片中的節點數目等於現有碎片中的節點數目。

如需詳細資訊,請參閱最佳實務:線上叢集大小調整

您可以使用 AWS Management Console、 AWS CLI和 MemoryDB 水平擴展 MemoryDB 叢集API。

使用線上重新分片功能新增碎片

您可以使用 AWS Management Console AWS CLI、 或 MemoryDB 將碎片新增至 MemoryDB 叢集API。

您可以使用 AWS Management Console 將一或多個碎片新增至 MemoryDB 叢集。下列程序描述該程序。

  1. 登入 AWS Management Console 並在 開啟 MemoryDB 主控台https://console.aws.amazon.com/memorydb/

  2. 從叢集清單中,選擇要從中新增碎片的叢集名稱。

  3. 碎片和節點索引標籤下,選擇新增/刪除碎片

  4. 新的碎片數量 中,輸入您想要的碎片數量。

  5. 選擇確認以保留變更,或選擇取消以捨棄變更。

下列程序說明如何使用 新增碎片來重新設定 MemoryDB 叢集中的碎片 AWS 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.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

您可以使用 MemoryDB API操作,在線上重新設定 MemoryDB 叢集中的碎片UpdateCluster

使用下列參數搭配 UpdateCluster

參數
  • ClusterName - 必要。指定要在哪個叢集上執行碎片重新設定操作。

  • ShardConfiguration - 必要。可讓您設定碎片數量。

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

如需詳細資訊,請參閱 UpdateCluster

使用線上重新分片移除碎片

您可以使用 AWS Management Console AWS CLI、 或 MemoryDB 從 MemoryDB 叢集中移除碎片API。

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

重要

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

您可以使用 從 MemoryDB 叢集 AWS Management Console 中移除一或多個碎片。您無法移除叢集中的所有碎片。您必須刪除叢集。如需詳細資訊,請參閱步驟 5:刪除叢集。下列程序說明移除一或多個碎片的程序。

  1. 登入 AWS Management Console 並在 開啟 MemoryDB 主控台https://console.aws.amazon.com/memorydb/

  2. 從叢集清單中,選擇要從中移除碎片的叢集名稱。

  3. 碎片和節點索引標籤下,選擇新增/刪除碎片

  4. 新的碎片數量 中,輸入您想要的碎片數量 (最少 1 個)。

  5. 選擇確認以保留變更,或選擇取消以捨棄變更。

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

重要

從叢集中移除碎片之前,MemoryDB 會確保所有資料都符合其餘碎片。如果資料適合,碎片會依要求從叢集中刪除,且其鍵空間會映射到剩餘的碎片中。如果資料無法容納其餘碎片,程序會終止,而且叢集會保留與發出請求之前相同的碎片組態。

您可以使用 AWS CLI 從您的 MemoryDB 叢集中移除一或多個碎片。您無法移除叢集中的所有碎片。您必須刪除叢集。如需詳細資訊,請參閱步驟 5:刪除叢集

使用下列參數搭配 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.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

您可以使用 MemoryDB API操作,在線上重新設定 MemoryDB 叢集中的碎片UpdateCluster

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

重要

從叢集中移除碎片之前,MemoryDB 會確保所有資料都符合其餘碎片。如果資料適合,碎片會依要求從叢集中刪除,且其鍵空間會映射到剩餘的碎片中。如果資料無法容納其餘碎片,程序會終止,而且叢集會保留與發出請求之前相同的碎片組態。

您可以使用 MemoryDB 從 MemoryDB 叢集API中移除一或多個碎片。您無法移除叢集中的所有碎片。您必須刪除叢集。如需詳細資訊,請參閱步驟 5:刪除叢集

使用下列參數搭配 UpdateCluster

參數
  • ClusterName - 必要。指定要在哪個叢集 (叢集) 上執行碎片重新組態操作。

  • ShardConfiguration - 必要。可讓您使用 ShardCount 屬性設定碎片數量:

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