

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# MemoryDB 복제 이해
<a name="replication"></a>

MemoryDB는 최대 500개 샤드에 분할된 데이터로 복제를 구현합니다.

클러스터의 각 샤드에는 읽기/쓰기 프라이머리 노드 하나와 최대 5개의 읽기 전용 복제본 노드가 있습니다. 각 프라이머리 노드는 최대 100MB/s까지 지원할 수 있습니다. 하나의 클러스터당 최대 500개의 노드로 구성된 더 많은 수의 샤드와 더 적은 수의 복제본을 가진 클러스터를 생성할 수 있습니다. 이 클러스터 구성은 500개의 샤드 및 0개의 복제본부터 100개의 샤드 및 4개의 복제본까지 해당될 수 있으며, 이는 허용되는 최대 복제본 수입니다.

# 일관성
<a name="consistency"></a>

MemoryDB에서 프라이머리 노드는 매우 일관적입니다. 성공적인 쓰기 작업은 클라이언트로 돌아가기 전에 분산된 다중 AZ 트랜잭션 로그에 안정적으로 저장됩니다. 프라이머리에서의 읽기 작업은 항상 이전에 성공한 모든 쓰기 작업의 영향을 반영하는 최신 데이터를 반환합니다. 이러한 강력한 일관성은 기본 장애 조치 전반에서 유지됩니다.

MemoryDB의 복제본 노드는 결국에 일관되게 이루어집니다. CloudWatch에 지연 지표가 게시된 경우, 복제본의 읽기 작업(`READONLY` 명령 사용) 이 가장 최근의 성공적인 쓰기 작업의 영향을 반영하지 않을 수 있습니다. 하지만 단일 복제본의 읽기 작업은 순차적으로 일관됩니다. 성공적인 쓰기 작업은 프라이머리에서 실행된 순서와 동일한 순서로 각 복제본에 적용됩니다.

## 클러스터에서의 복제
<a name="replication.redis.groups.cluster"></a>

 샤드의 각 읽기 복제본은 샤드의 프라이머리 노드에서 가져온 데이터 사본을 유지합니다. 트랜잭션 로그를 사용하는 비동기식 복제 메커니즘은 읽기 복제본이 기본 노드와 동기화되어 있는 상태를 유지하는 데 사용됩니다. 애플리케이션은 클러스터의 모든 노드로부터 읽을 수 있습니다. 애플리케이션은 기본 노드에만 쓸 수 있습니다. 읽기 복제본은 읽기 확장성을 개선합니다. MemoryDB는 데이터를 내구성이 뛰어난 트랜잭션 로그에 저장하므로 데이터가 손실될 위험이 없습니다. 데이터는 MemoryDB 클러스터의 샤드 간에 파티셔닝됩니다.

애플리케이션은 MemoryDB 클러스터의 *클러스터 엔드포인트*를 사용하여 클러스터의 노드와 연결합니다. 자세한 내용은 [연결 엔드포인트 찾기](endpoints.md) 섹션을 참조하세요.

MemoryDB 클러스터는 지역적이며 한 리전의 노드만 포함할 수 있습니다. 내결함성을 개선하기 위해 해당 리전 내의 여러 가용 영역에 걸쳐 프라이머리와 읽기 복제본을 모두 프로비저닝해야 합니다.

모든 MemoryDB 클러스터에는 다중 AZ를 제공하는 복제를 사용하는 것이 좋습니다. 자세한 내용은 [다중 AZ로 MemoryDB의 가동 중지 시간 최소화](autofailover.md) 섹션을 참조하세요.

# 다중 AZ로 MemoryDB의 가동 중지 시간 최소화
<a name="autofailover"></a>

MemoryDB가 프라이머리 노드를 대체해야 하는 여러 가지 경우가 있습니다. 이러한 경우에는 특정 유형의 계획적인 유지 관리 및 드물지만 프라이머리 노드나 가용 영역에 장애가 발생하는 경우가 포함됩니다.

노드 장애에 대한 대응은 장애가 발생한 노드에 따라 달라집니다. 그러나 모든 경우에 MemoryDB는 노드 교체 또는 장애 조치 중에 데이터가 손실되지 않도록 합니다. 예를 들어, 복제본에 장애가 발생하면 장애가 발생한 노드가 교체되고 트랜잭션 로그에서 데이터가 동기화됩니다. 프라이머리 노드에 장애가 발생하면 장애 조치 중에 데이터가 손실되지 않도록 일관된 복제본으로 장애 조치가 트리거됩니다. 이제 새 프라이머리 노드에서 쓰기가 제공됩니다. 그러면 이전 프라이머리 노드가 교체되고 트랜잭션 로그와 동기화됩니다.

단일 노드 샤드(복제본 없음)에서 프라이머리 노드에 장애가 발생하면 프라이머리 노드가 교체되어 트랜잭션 로그와 동기화될 때까지 MemoryDB는 쓰기 수락을 중단합니다.

노드 교체로 인해 클러스터에 약간의 가동 중지가 발생할 수 있지만, 다중 AZ를 활성화된 경우 가동 중지 시간이 최소화됩니다. 프라이머리 노드의 역할은 자동으로 복제본 중 하나로 장애 조치됩니다. MemoryDB가 이 장애 조치를 투명하게 처리하기 때문에 새로운 프라이머리 노드를 생성하고 프로비저닝할 필요가 없습니다. 이 장애 조치 및 복제본 승격을 통해 승격이 완료되는 즉시 새 기본 노드에 작성을 재개할 수 있습니다.

유지 관리 업데이트 또는 서비스 업데이트로 인해 시작된 계획된 노드 교체의 경우, 클러스터가 들어오는 쓰기 요청을 처리하는 동안 계획된 노드 교체가 완료된다는 점에 유의하세요.

MemoryDB 클러스터의 다중 AZ를 사용하면 내결함성이 향상됩니다. 특히 클러스터의 프라이머리 노드에 접속할 수 없거나 어떤 이유로든 실패하는 경우에 그렇습니다. MemoryDB 클러스터의 다중 AZ는 각 샤드에 두 개 이상의 노드가 있어야 하며 자동으로 활성화됩니다.

**Topics**
+ [다중 AZ 응답이 있는 장애 시나리오](#autofailover.scenarios)
+ [자동 장애 조치 테스트](#auto-failover-test)

## 다중 AZ 응답이 있는 장애 시나리오
<a name="autofailover.scenarios"></a>

다중 AZ가 활성화된 경우, 장애가 발생한 프라이머리 노드는 사용 가능한 복제본으로 장애 조치됩니다. 복제본은 트랜잭션 로그와 자동으로 동기화되고 프라이머리 노드가 되므로 프라이머리 노드를 새로 만들고 다시 프로비저닝하는 것보다 훨씬 빠릅니다. 이 프로세스는 보통 클러스터에 다시 작성하려면 몇 초 정도 소요됩니다.

다중 AZ가 활성화된 경우, MemoryDB가 프라이머리 노드의 상태를 지속적으로 모니터링합니다. 기본 노드에 장애가 발생하면 장애 유형에 따라 다음 작업 중 하나가 수행됩니다.

**Topics**
+ [프라이머리 노드에만 장애가 발생한 경우의 장애 시나리오](#autofailover.scenarios.primaryonly)
+ [프라이머리 노드 및 일부 복제본에 장애가 발생한 경우의 장애 시나리오](#autofailover.scenarios.primaryandeplicas)
+ [전체 클러스터에 장애가 발생한 경우의 장애 시나리오](#autofailover.scenarios.allfail)

### 프라이머리 노드에만 장애가 발생한 경우의 장애 시나리오
<a name="autofailover.scenarios.primaryonly"></a>

프라이머리 노드에만 장애가 발생한 경우, 복제본은 자동으로 프라이머리 노드가 됩니다. 그러면 대체 복제본이 생성되어 장애가 발생한 프라이머리 노드와 동일한 가용 영역에 프로비저닝됩니다.

프라이머리 노드에만 장애가 발생한 경우, MemoryDB 다중 AZ는 다음 작업을 수행합니다.

1. 장애가 발생한 기본 노드는 오프라인 상태로 전환됩니다.

1. 최신 복제본은 자동으로 기본 복제본이 됩니다.

   장애 조치 프로세스가 완료되는 즉시 쓰기를 재개할 수 있으며 일반적으로 몇 초 정도 소요됩니다.

1. 대체 복제본을 시작하고 프로비저닝합니다.

   장애가 발생한 프라이머리 노드가 있는 가용 영역에서 대체 복제본을 시작하여 노드 배포를 유지합니다.

1. 복제본은 트랜잭션 로그와 동기화됩니다.

클러스터의 엔드포인트를 찾는 방법에 대한 정보는 다음 항목을 참조하세요.
+ [MemoryDB 클러스터의 엔드포인트 찾기(MemoryDB API)](endpoints.md#endpoints.find.api.clusters)

 

### 프라이머리 노드 및 일부 복제본에 장애가 발생한 경우의 장애 시나리오
<a name="autofailover.scenarios.primaryandeplicas"></a>

기본 복제본과 하나 이상의 복제본에 오류가 발생하면 최신 복제본이 기본 클러스터로 승격됩니다. 장애가 발생한 노드와 동일 가용 영역에 새로운 복제본이 생성되고 프로비저닝됩니다.

프라이머리 노드와 일부 복제본에 장애가 발생한 경우, MemoryDB 다중 AZ는 다음 작업을 수행합니다.

1. 장애가 발생한 프라이머리 노드 및 장애가 발생한 복제본이 오프라인 상태로 전환됩니다.

1. 사용 가능한 복제본이 프라이머리 노드가 됩니다.

   장애 조치가 완료되는 즉시 쓰기를 재개할 수 있으며 일반적으로 몇 초 정도 소요됩니다.

1. 교체용 복제본을 생성하고 프로비저닝합니다.

   장애가 발생한 노드의 가용 영역에서 교체용 복제본을 생성하여 노드 배포를 유지합니다.

1. 모든 노드가 트랜잭션 로그와 동기화됩니다.

클러스터의 엔드포인트를 찾는 방법에 대한 정보는 다음 항목을 참조하세요.
+ [MemoryDB 클러스터(CLI AWS)의 엔드포인트 찾기](endpoints.md#endpoints.find.cli)
+ [MemoryDB 클러스터의 엔드포인트 찾기(MemoryDB API)](endpoints.md#endpoints.find.api.clusters)

 

### 전체 클러스터에 장애가 발생한 경우의 장애 시나리오
<a name="autofailover.scenarios.allfail"></a>

모든 것에 장애가 발생하면 모든 노드를 동일한 가용 영역에 원본 노드로 재생성하고 프로비저닝합니다.

이 시나리오에서는 데이터가 트랜잭션 로그에 유지되었으므로 데이터 손실은 없습니다.

전체 클러스터에 장애가 발생한 경우, MemoryDB 다중 AZ는 다음 작업을 수행합니다.

1. 장애가 발생한 프라이머리 노드 및 복제본이 오프라인 상태로 전환됩니다.

1. 대체 프라이머리 노드가 생성되고 프로비저닝되며 트랜잭션 로그와 동기화됩니다.

1. 대체 복제본이 생성되고 프로비저닝되며 트랜잭션 로그와 동기화됩니다.

   장애가 발생한 노드의 가용 영역에서 대체를 생성하여 노드 배포를 유지합니다.

클러스터의 엔드포인트를 찾는 방법에 대한 정보는 다음 항목을 참조하세요.
+ [MemoryDB 클러스터(CLI AWS)의 엔드포인트 찾기](endpoints.md#endpoints.find.cli)
+ [MemoryDB 클러스터의 엔드포인트 찾기(MemoryDB API)](endpoints.md#endpoints.find.api.clusters)

## 자동 장애 조치 테스트
<a name="auto-failover-test"></a>

MemoryDB 콘솔, 및 AWS CLI, MemoryDB API를 사용하여 자동 장애 조치를 테스트할 수 있습니다.

테스트 시 다음 사항에 유의하세요.
+ 24시간 동안 이 작업을 최대 5회까지 사용할 수 있습니다.
+ 다른 클러스터에 있는 샤드에서 이 작업을 직접 호출하는 경우, 동시에 직접 호출할 수 있습니다.
+ 경우에 따라 동일한 MemoryDB 클러스터의 서로 다른 샤드에서 이 작업을 여러 번 호출할 수 있습니다. 이러한 경우 후속 호출이 이루어지기 전에 첫 번째 노드 교체가 완료되어야 합니다.
+ 노드 교체가 완료되었는지 확인하려면 MemoryDB 콘솔, AWS CLI또는 MemoryDB API를 사용하여 이벤트를 확인합니다. 발생 순서대로 나열되어 있는 아래 목록에서 다음과 같은 `FailoverShard` 관련 이벤트를 찾습니다.

  1. 클러스터 메시지: `FailoverShard API called for shard <shard-id>`

  1. 클러스터 메시지: `Failover from primary node <primary-node-id> to replica node <node-id> completed`

  1. 클러스터 메시지: `Recovering nodes <node-id>`

  1. 클러스터 메시지: `Finished recovery for nodes <node-id>`

  자세한 내용은 다음을 참조하세요.
  + *MemoryDB API 참조*의 [DescribeEvents](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEvents.html)
+ 이 API는 MemoryDB 장애 조치의 경우, 애플리케이션의 동작을 테스트하도록 설계되었습니다. 클러스터 문제를 해결하기 위해 장애 조치를 시작하는 운영 도구로 설계되지 않았습니다. 또한 대규모 운영 이벤트와 같은 특정 조건에서이 API를 차단할 AWS 수 있습니다.

**Topics**
+ [를 사용하여 자동 장애 조치 테스트 AWS Management Console](#auto-failover-test-con)
+ [를 사용하여 자동 장애 조치 테스트 AWS CLI](#auto-failover-test-cli)
+ [MemoryDB API를 사용하여 자동 장애 조치 테스트](#failovershard-test-api)

### 를 사용하여 자동 장애 조치 테스트 AWS Management Console
<a name="auto-failover-test-con"></a>

다음 절차에 따라 콘솔로 자동 장애 조치를 테스트합니다.

****

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/) MemoryDB 콘솔을 엽니다.

1. 테스트할 클러스터 왼쪽에 있는 라디오 버튼을 선택합니다. 이 클러스터에는 복제본 노드가 하나 이상 있어야 합니다.

1. [**Details**] 영역에서 이 클러스터가 다중 AZ 활성 상태인지 확인합니다. 해당 클러스터가 다중 AZ 활성 상태가 아닌 경우 다른 클러스터를 선택하거나 다중 AZ를 활성화하도록 이 클러스터를 수정합니다. 자세한 내용은 [MemoryDB 클러스터 수정](clusters.modify.md) 단원을 참조하십시오.

1. 클러스터의 이름을 선택합니다.

1. **샤드 및 노드** 페이지에서 장애 조치를 테스트할 샤드에 대해 샤드 이름을 선택합니다.

1. 노드는 [**Failover Primary**]를 선택합니다.

1. 기본 노드를 장애 조치하려면 [**Continue**]를 선택하고 작업을 취소하여 기본 노드를 장애 조치하지 않으려면 [**Cancel**]을 선택합니다.

   장애 조치 프로세스 중에 콘솔은 노드 상태를 계속해서 *사용 가능*으로 표시합니다. 장애 조치 테스트 진행률을 추적하려면 콘솔 탐색 창에서 [**Events**]를 선택합니다. [**Events**] 탭에서 장애 조치의 시작(`FailoverShard API called`) 및 완료(`Recovery completed`)를 나타내는 이벤트를 주시합니다.

 

### 를 사용하여 자동 장애 조치 테스트 AWS CLI
<a name="auto-failover-test-cli"></a>

 AWS CLI 작업 장애 조치 [샤드를 사용하여 다중 AZ 지원 클러스터에서 자동 장애 조치를](https://docs.aws.amazon.com/cli/latest/reference/memorydb/failover-shard.html) 테스트할 수 있습니다.

**파라미터**
+ `--cluster-name` - 필수입니다. 테스트할 클러스터입니다.
+ `--shard-name` - 필수입니다. 자동 장애 조치를 테스트할 샤드의 이름입니다. 24시간 동안 최대 5개의 샤드를 테스트할 수 있습니다.

다음 예제에서는 AWS CLI 를 사용하여 MemoryDB 클러스터 `failover-shard`의 샤드`0001`에서를 호출합니다`my-cluster`.

Linux, macOS, Unix의 경우:

```
aws memorydb failover-shard \
   --cluster-name my-cluster \
   --shard-name 0001
```

Windows의 경우:

```
aws memorydb failover-shard ^
   --cluster-name my-cluster ^
   --shard-name 0001
```

장애 조치 진행 상황을 추적하려면 작업을 사용합니다 AWS CLI `describe-events`.

다음과 같은 JSON 응답을 반환합니다.

```
{
    "Events": [
        {
            "SourceName": "my-cluster",
            "SourceType": "cluster",
            "Message": "Failover to replica node my-cluster-0001-002 completed",
            "Date": "2021-08-22T12:39:37.568000-07:00"
        },
        {
            "SourceName": "my-cluster",
            "SourceType": "cluster",
            "Message": "Starting failover for shard 0001",
            "Date": "2021-08-22T12:39:10.173000-07:00"
        }
    ]
}
```

자세한 내용은 다음을 참조하세요.
+ [failover-shard](https://docs.aws.amazon.com/cli/latest/reference/memorydb/failover-shard.html)
+ [describe-events](https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-events.html)

 

### MemoryDB API를 사용하여 자동 장애 조치 테스트
<a name="failovershard-test-api"></a>

다음 예시는 클러스터 `memorydb00`의 샤드 `0003`에서 `FailoverShard`을(를) 직접적으로 호출합니다.

**Example 자동 장애 조치 테스트**  

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

장애 조치 진행률을 추적하려면 MemoryDB `DescribeEvents` API 작업을 사용하세요.

자세한 내용은 다음을 참조하세요.
+ [FailoverShard](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_FailoverShard.html) 
+ [DescribeEvents](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeEvents.html) 

# 복제본 수 변경
<a name="update-replica-count"></a>

AWS Management Console, AWS CLI 또는 MemoryDB API를 사용해 MemoryDB 클러스터의 읽기 복제본 수를 동적으로 늘리거나 줄일 수 있습니다. 모든 샤드의 복제본 수는 같아야 합니다.

## 클러스터의 복제본 수 늘리기
<a name="increase-replica-count"></a>

MemoryDB 클러스터의 복제본 수를 샤드당 최대 5개까지 늘릴 수 있습니다. AWS Management Console, AWS CLI, 또는 MemoryDB API를 사용해 늘릴 수 있습니다.

**Topics**
+ [AWS Management Console 사용](#increase-replica-count-con)
+ [AWS CLI 사용](#increase-replica-count-cli)
+ [MemoryDB API 사용](#increase-replica-count-api)

### AWS Management Console 사용
<a name="increase-replica-count-con"></a>

MemoryDB 클러스터(콘솔)의 복제본 수를 늘리려면 [클러스터에서 노드 추가/제거](clusters.deletenode.md)을(를) 참조하세요.

### AWS CLI 사용
<a name="increase-replica-count-cli"></a>

MemoryDB 클러스터의 복제본 수를 늘리려면 다음 파라미터와 함께 `update-cluster` 명령을 사용합니다.
+ `--cluster-name` - 필수입니다. 복제본 수를 늘리려는 클러스터를 식별합니다.
+ `--replica-configuration` - 필수입니다. 복제본 수를 설정할 수 있습니다. 복제본 수를 늘리려면 이 작업이 끝날 때 `ReplicaCount` 속성을 이 샤드의 원하는 복제본 수로 설정합니다.

**Example**  
다음은 클러스터 `my-cluster`의 복제본 수를 2로 늘리는 예입니다.  
Linux, macOS, Unix의 경우:  

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --replica-configuration \
        ReplicaCount=2
```
Windows의 경우:  

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --replica-configuration ^
        ReplicaCount=2
```

다음과 같은 JSON 응답을 반환합니다.

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "updating",
        "NumberOfShards": 1,
        "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: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": 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.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
                            }
                        },
                        {
                            "Name": "my-cluster-0001-003",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1a",
                            "CreateTime": "2021-08-22T12:59:31.844000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        }
                    ],
                    "NumberOfNodes": 3
                }
            ],
            "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
        }
    ]
}
```

CLI를 사용하여 복제본 수를 늘리는 방법에 대한 자세한 내용은 *AWS CLI 명령 참조*의 [update-cluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html) 항목을 참조하세요.

### MemoryDB API 사용
<a name="increase-replica-count-api"></a>

MemoryDB 샤드의 복제본 수를 늘리려면 다음 파라미터와 함께 `UpdateCluster` 작업을 사용합니다.
+ `ClusterName` - 필수입니다. 복제본 수를 늘리려는 클러스터를 식별합니다.
+ `ReplicaConfiguration` - 필수입니다. 복제본 수를 설정할 수 있습니다. 복제본 수를 늘리려면 이 작업이 끝날 때 `ReplicaCount` 속성을 이 샤드에 포함할 복제본 수로 설정하세요.

**Example**  
다음은 클러스터 `sample-cluster`의 복제본 수를 3으로 늘리는 예입니다. 예제가 완료되면 각 샤드에 복제본 3개가 있습니다. 이 숫자는 단일 샤드가 있는 MemoryDB 클러스터이든 여러 샤드가 있는 MemoryDB 클러스터이든 상관없이 적용됩니다.  

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

API를 사용하여 복제본 수를 늘리는 것에 대한 자세한 내용은 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)를 참조하세요.

## 클러스터의 복제본 수 줄이기
<a name="decrease-replica-count"></a>

MemoryDB용 클러스터의 복제본 수를 줄일 수 있습니다. 복제본 수를 0으로 줄일 수 있지만 프라이머리 노드에 장애가 발생하면 복제본으로 장애 조치할 수 없습니다.

AWS Management Console, AWS CLI 또는 MemoryDB API를 사용하여 클러스터의 복제본 수를 줄일 수 있습니다.

**Topics**
+ [AWS Management Console 사용](#decrease-replica-count-con)
+ [AWS CLI 사용](#decrease-replica-count-cli)
+ [MemoryDB API 사용](#decrease-replica-count-api)

### AWS Management Console 사용
<a name="decrease-replica-count-con"></a>

MemoryDB 클러스터(콘솔)의 복제본 수를 줄이려면 [클러스터에서 노드 추가/제거](clusters.deletenode.md)을(를) 참조하세요.

### AWS CLI 사용
<a name="decrease-replica-count-cli"></a>

MemoryDB 클러스터의 복제본 수를 줄이려면 다음 파라미터와 함께 `update-cluster` 명령을 사용합니다.
+ `--cluster-name` - 필수입니다. 복제본 수를 줄이려는 클러스터를 식별합니다.
+ `--replica-configuration` - 필수입니다.

  `ReplicaCount`- 이 속성을 설정하여 원하는 복제본 노드의 수를 지정합니다.

**Example**  
다음은 `--replica-configuration`을 사용해 클러스터 `my-cluster`의 복제본 수를 지정된 값으로 줄이는 예입니다.  
Linux, macOS, Unix의 경우:  

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --replica-configuration \
        ReplicaCount=1
```
Windows의 경우:  

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

다음과 같은 JSON 응답을 반환합니다.

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "updating",
        "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.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": 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.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
                }
            ],
            "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
        }
    ]
}
```

CLI를 사용하여 복제본 수를 줄이는 방법에 대한 자세한 내용은 *AWS CLI 명령 참조*의 [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html) 항목을 참조하세요.

### MemoryDB API 사용
<a name="decrease-replica-count-api"></a>

MemoryDB 클러스터의 복제본 수를 줄이려면 다음 파라미터와 함께 `UpdateCluster` 작업을 사용합니다.
+ `ClusterName` - 필수입니다. 복제본 수를 줄이려는 클러스터를 식별합니다.
+ `ReplicaConfiguration` - 필수입니다. 복제본 수를 설정할 수 있습니다.

  `ReplicaCount`- 이 속성을 설정하여 원하는 복제본 노드의 수를 지정합니다.

**Example**  
다음은 `ReplicaCount`를 사용해 클러스터 `sample-cluster`의 복제본 수를 1로 줄이는 예입니다. 예제가 완료되면 각 샤드에 복제본 1개가 있습니다. 이 숫자는 단일 샤드가 있는 MemoryDB 클러스터이든 여러 샤드가 있는 MemoryDB 클러스터이든 상관없이 적용됩니다.  

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

API를 사용하여 복제본 수를 줄이는 것에 대한 자세한 내용은 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)를 참조하세요.