

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# MemoryDB のオンラインリシャーディング
<a name="cluster-resharding-online"></a>

MemoryDB でオンラインリシャーディングを使用して、ダウンタイムなしで MemoryDB を動的にスケールできます。このアプローチでは、クラスターはスケーリングや再分散が処理中でもリクエストに対応し続けることができます。

以下を行うことができます。
+ **スケールアウト** — MemoryDB クラスターにシャードを追加して、読み取りと書き込みの容量を増やします。

  クラスターに 1 つ以上のシャードを追加する場合、新しい各シャードのノード数は既存の最小のシャードのノード数と同じになります。
+ **スケールイン**読み込みおよび書き込みキャパシティーを減らして、MemoryDB クラスターからシャードを削除することでコストを削減します。

現在、MemoryDB のオンラインリシャーディングには、次の制限が適用されます。
+ スロットまたはキースペース、および大きなアイテムには制限があります。

  シャード内のキーのいずれかに大きなアイテムが含まれる場合、スケールアウトの際にそのキーは新しいシャードに移行されません。この機能により、アンバランスなシャードになる可能性があります。

  シャード内のキーのいずれかに大きなアイテム (シリアル化後 256 MB より大きいアイテム) が含まれる場合、シャードはスケールイン時に削除されません。この機能により、一部のシャードは削除されない可能性があります。
+ スケールアウトの際、新しいシャードのノード数は、既存のシャードのノード数と等しくなります。

詳細については、「[ベストプラクティス: オンラインクラスターのサイズ変更](best-practices-online-resharding.md)」を参照してください。

 AWS マネジメントコンソール、 AWS CLI、MemoryDB API を使用して、MemoryDB クラスターを水平にスケールできます。

## オンラインリシャーディングによるシャードの追加
<a name="cluster-resharding-online-add"></a>

MemoryDB クラスターにシャードを追加するには AWS マネジメントコンソール、、 AWS CLI、または MemoryDB API を使用します。

### シャードの追加 (コンソール)
<a name="cluster-resharding-online-add-console"></a>

を使用して AWS マネジメントコンソール 、MemoryDB クラスターに 1 つ以上のシャードを追加できます。以下の手順では、このプロセスについて説明します。

****

1. にサインイン AWS マネジメントコンソール し、[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>

以下のプロセスでは、 AWS CLIを使用してシャードを追加し、MemoryDB クラスターでシャードの再構成を行う方法について説明します。

`update-cluster` を使って以下のパラメータを使用します。

**パラメータ**
+ `--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>

`UpdateCluster` オペレーションを使うことで、MemoryDB API を使用して MemoryDB クラスターのシャードをオンラインで再構成できます。

`UpdateCluster` を使って以下のパラメータを使用します。

**パラメータ**
+ `ClusterName` – 必須。シャードの再構成オペレーションを実行するクラスターを指定します。
+ `ShardConfiguration` – 必須。シャードの数を設定できます。
  + `ShardCount` – このプロパティを設定して、必要なシャードの数を指定します。

詳細については、「[クラスターの更新](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)」を参照してください。

## オンラインリシャーディングによるシャードの削除
<a name="cluster-resharding-online-remove"></a>

MemoryDB クラスターからシャードを削除するには AWS マネジメントコンソール、、 AWS CLI、または MemoryDB API を使用します。

### シャードの削除 (コンソール)
<a name="cluster-resharding-online-remove-console"></a>

以下のプロセスでは、 AWS マネジメントコンソールを使用してシャードを削除し、MemoryDB クラスターでシャードの再構成を行う方法について説明します。

**重要**  
クラスターからシャードを削除する前に、MemoryDB はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、シャードは要求に応じてクラスターから削除されます。データが残りのシャードに収まらない場合、プロセスは終了し、クラスターはリクエスト前と同じシャード設定のままになります。

を使用して AWS マネジメントコンソール 、MemoryDB クラスターから 1 つ以上のシャードを削除できます。クラスター内のシャードをすべて削除することはできません。代わりに、クラスターを削除する必要があります。詳細については、「[ステップ 5: クラスターを削除する](getting-started.md#clusters.delete)」を参照してください。次の手順では、1 つ以上のシャードを削除する手順を説明します。

****

1. にサインイン AWS マネジメントコンソール し、[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>

以下のプロセスでは、 AWS CLIを使用してシャードを削除し、MemoryDB クラスターでシャードの再構成を行う方法について説明します。

**重要**  
クラスターからシャードを削除する前に、MemoryDB はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、指定されたシャードはリクエストに応じてクラスターから削除され、キースペースは残りのシャードにマッピングされます。データが残りのシャードに収まらない場合、プロセスは終了し、クラスターはリクエスト前と同じシャード設定のままになります。

を使用して AWS CLI 、MemoryDB クラスターから 1 つ以上のシャードを削除できます。クラスター内のシャードをすべて削除することはできません。代わりに、クラスターを削除する必要があります。詳細については、「[ステップ 5: クラスターを削除する](getting-started.md#clusters.delete)」を参照してください。

`update-cluster` を使って以下のパラメータを使用します。

**パラメータ**
+ `--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>

`UpdateCluster` オペレーションを使うことで、MemoryDB API を使用して MemoryDB クラスターのシャードをオンラインで再構成できます。

以下のプロセスでは、MemoryDB API を使用してシャードを削除し、 MemoryDBクラスターでシャードの再構成を行う方法について説明します。

**重要**  
クラスターからシャードを削除する前に、MemoryDB はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、指定されたシャードはリクエストに応じてクラスターから削除され、キースペースは残りのシャードにマッピングされます。データが残りのシャードに収まらない場合、プロセスは終了し、クラスターはリクエスト前と同じシャード設定のままになります。

MemoryDB API を使用して、MemoryDB クラスターから 1 つ以上のシャードを削除できます。クラスター内のシャードをすべて削除することはできません。代わりに、クラスターを削除する必要があります。詳細については、「[ステップ 5: クラスターを削除する](getting-started.md#clusters.delete)」を参照してください。

`UpdateCluster` を使って以下のパラメータを使用します。

**パラメータ**
+ `ClusterName` – 必須。シャードの再構成オペレーションを実行するクラスター (クラスター) を指定します。
+ `ShardConfiguration` – 必須。`ShardCount` プロパティを使用してシャードの数を設定できます。

  `ShardCount` – このプロパティを設定して、必要なシャードの数を指定します。