本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 叢集。下列程序描述該程序。
-
登入 AWS Management Console 並在 開啟 MemoryDB 主控台https://console.aws.amazon.com/memorydb/
。 -
從叢集清單中,選擇要從中新增碎片的叢集名稱。
在碎片和節點索引標籤下,選擇新增/刪除碎片
-
在新的碎片數量 中,輸入您想要的碎片數量。
-
選擇確認以保留變更,或選擇取消以捨棄變更。
下列程序說明如何使用 新增碎片來重新設定 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:刪除叢集。下列程序說明移除一或多個碎片的程序。
-
登入 AWS Management Console 並在 開啟 MemoryDB 主控台https://console.aws.amazon.com/memorydb/
。 -
從叢集清單中,選擇要從中移除碎片的叢集名稱。
在碎片和節點索引標籤下,選擇新增/刪除碎片
-
在新的碎片數量 中,輸入您想要的碎片數量 (最少 1 個)。
-
選擇確認以保留變更,或選擇取消以捨棄變更。
下列程序說明如何使用 移除碎片,重新設定 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
– 設定此屬性以指定您想要的碎片數量。