

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

# MemoryDB Multi-Region
<a name="multi-region"></a>

MemoryDB Multi-Region은 완전 관리형 액티브-액티브 다중 리전 데이터베이스로, 최대 99.999%의 가용성과 마이크로초 읽기 및 한 자릿수 밀리초 쓰기 지연 시간으로 다중 리전 애플리케이션을 구축할 수 있습니다. 지역적 성능 저하를 통해 가용성과 복원력을 모두 향상시키는 동시에 다중 리전 애플리케이션의 로컬 읽기 및 쓰기 지연 시간이 짧은 이점을 누릴 수 있습니다.

MemoryDB Multi-Region을 사용하면 복원력을 높이기 위해 가용성이 높은 다중 리전 애플리케이션을 구축할 수 있습니다. 액티브-액티브 복제를 제공하므로 마이크로초 읽기 및 한 자릿수 밀리초 쓰기 지연 시간으로 고객과 가장 가까운 리전에서 로컬로 읽기 및 쓰기를 제공할 수 있습니다. MemoryDB Multi-Region 은 리전 간에 데이터를 비동기적으로 복제하며 데이터는 일반적으로 1초 이내에 전파됩니다. 업데이트 충돌을 자동으로 해결하고 데이터 발산 문제를 수정하여 애플리케이션에 집중할 수 있습니다.

MemoryDB 다중 리전은 현재 미국 동부(버지니아 북부 및 오하이오), 미국 서부(오레곤, 캘리포니아 북부), 유럽(아일랜드, 프랑크푸르트, 런던), 아시아 태평양(도쿄, 시드니, 뭄바이, 서울, 싱가포르) AWS 리전에서 지원됩니다.

에서 몇 번의 클릭만으로 AWS Management Console 또는 최신 AWS SDK 또는를 사용하여 MemoryDB 다중 리전을 쉽게 시작할 수 있습니다 AWS CLI.

**Topics**
+ [사전 조건 및 제한 사항](multi-region.prereq.md)
+ [작동 방식](multi-region.how.md)
+ [정합성 및 충돌 해결](#multi-region.conflict)
+ [콘솔에서 MemoryDB Multi-Region 사용](multi-Region.console.md)
+ [CLI에서 MemoryDB Multi-Region 사용](multi-Region.cli.md)
+ [MemoryDB Multi-Region 모니터링](multi-Region.monitoring.md)
+ [MemoryDB Multi-Region을 사용한 규모 조정](multi-Region.Scaling.md)
+ [지원되는 명령과 지원되지 않는 명령](multi-Region.SupportedCommands.md)

# 사전 조건 및 제한 사항
<a name="multi-region.prereq"></a>

MemoryDB Multi-Region을 시작하기 전에 다음 사항에 유의하세요.
+ **MemoryDB Multi-Region은 선택한 리전 간에 데이터를 복제합니다** - Multi-Region 클러스터를 생성하면 선택한 리전 간에 데이터가 이동된다는 것을 이해하고 이에 동의하는 것입니다.

  Multi-Region 그룹에서 리전을 제거하면 해당 리전의 리전 클러스터도 삭제됩니다.
+ **리전별 가용성** - MemoryDB 다중 리전은 미국 동부(버지니아 북부 및 오하이오), 미국 서부(오레곤, 캘리포니아 북부), 유럽(아일랜드, 프랑크푸르트, 런던), 아시아 태평양(도쿄, 시드니, 뭄바이, 서울, 싱가포르) AWS 리전에서 지원됩니다.
+ **동작 및 설정** - 모든 Multi-Region 리전 클러스터는 동일한 수의 샤드, 인스턴스 유형, Valkey 엔진 버전, TLS 및 파라미터 그룹 설정을 갖습니다. 각 리전 클러스터에 대해 서로 다른 IAM 인증, ACLs, 스냅샷 창, 태그, 고객 관리형 키(CMK) 및 유지 관리 기간을 선택할 수 있습니다.

  MemoryDB Multi-Region을 사용하면 다른 리전의 클러스터에 다른 수의 복제본이 있을 수 있습니다.
+ **지원되는 노드 유형 ** - MemoryDB Multi-Region은 크기가 XL 이상인 R7g 노드에서 지원됩니다.

  MemoryDB Multi-Region은 Valkey 엔진 버전 7.3 이상을 지원합니다.
+ **지원되는 데이터 유형** - MemoryDB Multi-Region은 현재 대부분의 Redis OSS 또는 Valkey 데이터 유형을 지원하며 향후 더 많은 데이터 유형에 대한 지원을 추가할 예정입니다. 지원되는 데이터 형식에는 문자열, 해시, 집합 및 정렬된 집합이 포함되지만 이러한 데이터 형식을 조작하는 모든 명령이 지원되는 것은 아닙니다.
+ **총 리전 수** - MemoryDB 다중 리전을 사용하면 최대 5개의 AWS 리전 간에 MemoryDB 클러스터 데이터를 자동으로 복제할 수 있습니다.
+ **지원되는 옵션** - MemoryDB Multi-Region은 수평/수직적 스케일링, IAM 통합, ACLs, 자동 및 온디맨드 스냅샷 생성, 자동 소프트웨어 패치 적용 및 모니터링을 지원합니다.
+ **백업 및 복원** - 스냅샷을 생성하여 Multi-Region 리전 클러스터의 데이터를 백업할 수 있습니다. 스냅샷을 수동으로 생성하거나 MemoryDB의 자동 스냅샷 스케줄러를 사용하여 각 리전 클러스터에 대해 개별적으로 지정한 시간에 매일 새 스냅샷을 생성할 수 있습니다.
+ **마이그레이션** - MemoryDB 또는 Redis OSS/Valkey RDB 형식 백업을 복원하도록 선택할 수 있습니다. 백업에서 데이터를 마이그레이션하려면 새 MemoryDB Multi-Region 리전 클러스터를 생성하고 Amazon S3에서 스냅샷 위치를 지정합니다. MemoryDB 스냅샷인 경우 이름을 지정할 수도 있습니다. MemoryDB Multi-Region은 스냅샷의 데이터를 사용하여 리전 클러스터를 생성합니다. MemoryDB Multi-Region은 문자열, 해시, 집합, 정렬된 집합 데이터 형식을 지원하므로 지원되는 이러한 데이터 유형에 대해서만 스냅샷 데이터를 마이그레이션할 수 있습니다. 백업 파일에 지원되지 않는 Redis OSS 데이터 형식이 포함된 경우 MemoryDB Multi-Region은 기본적으로 마이그레이션 작업에 실패합니다.
+ **리소스 예약** - MemoryDB Multi-Region은 리전 가용성을 보호하도록 설계되었습니다. 일부 리소스는 피어 리전의 워크로드와 독립적으로 로컬 읽기 및 쓰기 요청을 처리할 수 있도록 각 노드에 영구적으로 예약됩니다. 또한 이러한 리소스는 리전 격리 이벤트 및 복구를 포함하여 피어 리전의 이벤트 중에 로컬 가용성을 보호하는 역할을 합니다. 이로 인해 단일 리전 MemoryDB와 비교하여 성능 특성이 달라집니다. MemoryDB Multi-Region은 수평 및 수직적 스케일링을 모두 지원하여 사용 가능한 리소스를 확장합니다.
+ **RPO/RTO SLA 없음** - MemoryDB Multi-Region은 명시된 RPO/RTO SLA를 제공하지 않습니다. 다른 AWS 리전에서 격리된 AWS 리전의 쓰기는 계속 수락되므로 교차 복제 지연이 무기한 증가할 수 있습니다. 고객은 “MultiRegionClusterReplicationLag” 지표를 사용하여 격리를 감지하고 원하는 RPO에 따라 애플리케이션 트래픽을 다른 리전으로 리디렉션해야 합니다.
+ **단일 엔드포인트 또는 자동 장애 조치 없음:** - 리전 중단 시 고객 트래픽을 다른 리전의 애플리케이션 스택으로 수동으로 리디렉션해야 합니다. MemoryDB 클러스터에 대한 다중 리전 액세스를 올바르게 구성했는지 확인해야 합니다.
+ **TTL 지원 없음 ** - MemoryDB Multi-Region은 TTL(Time to Live)을 지원하지 않습니다.
+ **데이터 계층화 또는 벡터 검색 지원 없음 ** - MemoryDB Multi-Region은 벡터 검색 및 데이터 계층화 기능을 지원하지 않습니다.
+ MemoryDB Multi-Region은 read-modify-write 명령(APPEND, RENAMENX 등)을 지원하지 않습니다.
+ MemoryDB Multi-Region에서는 Redis OSS 트랜잭션 원자성과 일관성이 보장되지 않습니다.
+ **인증 모델** - 지원되는 모든 리전에서 MemoryDB Multi-Region API 작업을 호출할 수 있습니다. IAM 정책에서 다중 리전 클러스터의 ARN을 지정하여 권한 범위를 제한할 수 있습니다. 다중 리전 클러스터 ARN의 형식은 `arn:aws:memorydb::<account-id>:multiregioncluster/multi-region-cluster-name`입니다. ARN에는 리전 정보가 없습니다.
+ **처리량 제한** - MemoryDB Multi-Region은 리전의 노드당 최대 1.3GB/s의 읽기 처리량과 샤드당 최대 50MB/s의 전역 집계 쓰기 처리량을 지원할 수 있습니다.
+ **AWS 정책** - AWS ReadOnlyAccess 정책은 AWS 서비스 및 리소스에 대한 읽기 전용 액세스를 제공하지만 하나 이상의 다중 리전 클러스터에 대한 세부 정보는 자동으로 검색하지 않습니다. 하나 이상의 다중 리전 클러스터에 대한 세부 정보를 검색하려면 [AmazonMemoryDBReadOnlyAccess](security-iam-awsmanpol.md#iam.identitybasedpolicies.predefinedpolicies-readonly) 정책을 사용하거나 [ IAM 고객 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)을 생성합니다.
+ **리전 클러스터 삭제** - 리전 클러스터를 삭제할 때 연결된 고객 관리형 키(CMK)는 리전 클러스터 삭제가 완료될 때까지 유효해야 합니다. 이렇게 하면 나머지 리전 클러스터가 일관된 상태로 수렴될 수 있습니다.

# 작동 방식
<a name="multi-region.how"></a>

MemoryDB Multi-Region의 작동 방식은 다음과 같습니다.
+ **개념**

  다중 리전 클러스터는 하나 이상의 리전 클러스터 모음으로, 모두 단일 AWS 계정에서 소유합니다.

  리전 클러스터는 다중 AWS리전 클러스터의 일부인 리전의 단일 클러스터입니다. 각 리전 클러스터는 동일한 데이터 세트를 저장합니다. 지정된 다중 리전 클러스터에는 AWS 리전당 하나의 리전 클러스터만 있을 수 있습니다.

  Multi-Region 클러스터를 생성할 때 MemoryDB가 단일 단위로 취급하는 여러 리전 클러스터(리전당 하나)로 구성됩니다. 애플리케이션이 리전 클러스터에 데이터를 쓰면 MemoryDB는 해당 데이터를 Multi-Region 클러스터 내의 다른 모든 리전 클러스터에 자동으로 비동기식으로 복제합니다. 리전 클러스터를 Multi-Region 클러스터에 추가하여 추가 리전에서 사용할 수 있도록 할 수 있습니다. 최대 5개의 리전 간에 MemoryDB 클러스터 데이터를 자동으로 복제할 수 있습니다.
+ **가용성 및 내구성**

  드물지만 리전의 리전 격리 또는 성능 저하가 발생할 경우 데이터베이스 재구성 없이 트래픽을 다른 정상 리전 중 하나로 리디렉션하도록 글로벌 DNS를 업데이트하여 애플리케이션의 고가용성을 유지하는 프로세스를 간소화할 수 있습니다. MemoryDB는 모든 리전의 모든 쓰기를 다중 AZ 트랜잭션 로그에 내구성 있게 저장하여 리전 내에서 데이터가 손실되지 않도록 합니다. MemoryDB Multi-Region은 리전에서 승인되었지만 아직 모든 멤버 클러스터에 복제되지 않은 모든 쓰기를 추적합니다. 리전이 격리되거나 성능이 저하되는 경우에도 로컬 쓰기는 계속 수락됩니다. 격리된 리전이 Multi-Region 클러스터에 다시 연결되면 승인되었지만 아직 다른 리전에 복제되지 않은 쓰기는 Multi-Region 클러스터의 모든 리전에 복제됩니다. 또한 MemoryDB Multi-Region은 CRDT 메커니즘을 사용하여 중단 중에 다른 리전에서 발생했을 수 있는 업데이트와 보류 중인 쓰기를 자동으로 조정합니다.
+ **MemoryDB Multi-Region 클러스터에 연결**

  리전 클러스터에 데이터를 쓰고 리전 클러스터에서 데이터를 읽으려면 지원되는 Redis OSS/Valkey 클라이언트(Valkey GLIDE 포함) 중 하나를 사용하여 연결합니다. 각 리전 클러스터에는 Redis OSS/Valkey 클라이언트가 연결할 수 있는 엔드포인트가 있습니다. AWS 콘솔, CLI 또는 API를 사용하여 리전 클러스터 엔드포인트를 검색할 수 있습니다. 그런 다음 애플리케이션에서 이 엔드포인트를 사용(또는 구성)하여 리전 클러스터에서 데이터를 읽거나 쓸 수 있습니다.

## 정합성 및 충돌 해결
<a name="multi-region.conflict"></a>

리전 클러스터 중 하나의 키에 대한 모든 업데이트는 일반적으로 1초 이내에 Multi-Region 클러스터의 다른 리전 클러스터에 비동기적으로 전파됩니다. 리전이 분리되거나 저하되면 MemoryDB Multi-Region은 수행된 쓰기 기록을 유지하지만 모든 복제본 테이블로 전파하지는 않습니다. 리전이 다시 온라인 상태로 되면 MemoryDB Multi-Region은 해당 리전에서 보류 중인 쓰기 전파를 재개하여 다른 리전의 멤버 클러스터로 전파합니다. 다시 온라인 상태로 된 리전에 대한 다른 멤버 클러스터의 쓰기 전파도 재개됩니다. 이전에 성공한 모든 쓰기 작업은 리전이 격리된 기간에 관계없이 결국 전파됩니다.

애플리케이션 업데이트가 서로 다른 리전에서 동시에 동일한 키를 업데이트할 경우 충돌이 발생할 수 있습니다. MemoryDB Multi-Region은 충돌 없는 복제 데이터 형식(CRDT)을 사용하여 충돌하는 동시 쓰기 간에 조정합니다. CRDT는 조정 없이 독립적으로 동시에 업데이트할 수 있는 데이터 구조입니다. 즉, 쓰기-쓰기 충돌이 최종 일관성을 갖추고 각 복제본에서 독립적으로 병합됩니다.

세부 정보에서 MemoryDB는 2가지 수준의 최종 라이터 우선 적용(LWW)을 사용하여 충돌을 해결합니다. 문자열 데이터 유형의 경우 LWW는 키 수준에서 충돌을 해결합니다. 다른 데이터 유형의 경우 LWW는 하위 키 수준에서 충돌을 해결합니다. 충돌 해결은 완벽하게 관리되며 애플리케이션 가용성에 영향을 주지 않고 백그라운드에서 이루어집니다. 다음은 해시 데이터 형식의 예입니다.

리전 A는 타임스탬프 T1에서 “HSET K F1 V1”을 실행하고, 리전 B는 타임스탬프 T2에서 “HSET K F2 V2”를 실행합니다. 복제 후 리전 A와 B 모두 두 필드가 있는 키 K를 갖습니다. 서로 다른 리전이 동일한 컬렉션에서 서로 다른 하위 키를 동시에 업데이트하는 경우 MemoryDB는 해시 데이터 유형에 대해 하위 키 수준에서 충돌을 해결하기 때문에 두 업데이트가 서로 충돌하지 않습니다. 따라서 최종 데이터에는 두 업데이트의 효과가 포함됩니다.


| Time | 리전 A | 리전 B | 
| --- | --- | --- | 
|  T1  |   HSET K F1 V1  |    | 
|  T2  |    |   HSET K F2 V2  | 
|  T3  |  동기화  |  동기화  | 
|  T4  |   K: \$1F1:V1, F2:V2\$1  |  K: \$1F1:V1, F2:V2\$1  | 

### CRDT 및 예제
<a name="clusters.multi-Region.CRDT"></a>

 MemoryDB Multi-Region은 충돌 없는 복제 데이터 형식(CRDT)을 구현하여 여러 리전에서 발생한 동시 쓰기 충돌을 해결합니다. CRDT를 사용하면 순서에 관계없이 동일한 작업 세트를 최종적으로 수신한 후 서로 다른 리전에서 최종 일관성을 독립적으로 달성할 수 있습니다.

 단일 키가 여러 리전에서 동시에 업데이트되는 경우 데이터 일관성을 달성하려면 쓰기 충돌을 해결해야 합니다. MemoryDB Multi-Region은 최종 라이터 우선 적용(LWW) 전략을 사용하여 성공 작업을 결정하고 “이후에 발생”하는 작업의 영향만 최종적으로 관찰합니다. op2가 실행될 때 op1의 효과가 Regionit에 원래 실행된 경우 작업 op1이 작업 op2에 “이전에 발생”했다고 가정합니다.

 컬렉션(Hash, Set, SortedSet)의 경우 MemoryDB Multi-Region은 요소 수준에서 충돌을 해결합니다. 이를 통해 MemoryDB Multi-Region은 LWW를 사용하여 각 요소의 쓰기/쓰기 충돌을 해결할 수 있습니다. 예를 들어 여러 리전의 동일한 컬렉션에 다른 요소를 동시에 추가하면 컬렉션에 모든 요소가 포함됩니다.

**동시 실행: 최종 라이터 우선 적용**

MemoryDB Multi-Region에서 키를 동시에 생성할 때 모든 리전에서 실행된 마지막 작업이 키의 결과를 결정합니다. 예제:

![\[동시 실행: 최종 라이터 우선 적용\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/concurrent-ex-last-writer-wins.png)


키 x는 리전 B에서 값이 "b"로 생성되었지만 그 이후에는 리전 A에서 동일한 키가 값이 "a"로 생성되었습니다. 리전 A의 작업이 마지막으로 수행된 작업이므로 결국 키는 “a” 값을 갖도록 수렴됩니다.

**데이터 형식이 충돌하는 동시 실행: 최종 라이터 우선 적용**

이전 예제에서 키는 두 리전 모두에서 동일한 유형으로 생성되었습니다. 키가 다른 데이터 유형으로 생성된 경우에도 유사한 동작을 볼 수 있습니다.

![\[데이터 형식이 충돌하는 동시 실행: 최종 라이터 우선 적용\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/concurrent-ex-conflict-data-types-last-writer-wins.png)


키 x는 리전 B에서 값이 "b"인 String으로 생성되었습니다. 하지만 그 이후에는 해당 작업이 리전 A에 복제되기 전에 리전 A에 Hash로 동일한 키가 생성됩니다. 리전 A의 작업이 마지막으로 수행된 작업이므로 결국 키가 리전 A에서 생성된 Hash로 수렴됩니다.

**동시 생성-삭제: 최종 라이터 우선 적용**

동시 삭제 및 “생성”(값 대체/추가)이 있는 시나리오에서는 마지막으로 수행된 작업이 우선 적용됩니다. 최종 결과는 삭제 작업의 순서에 따라 결정됩니다. 삭제가 이전에 발생한 경우:

![\[동시 생성-삭제: 이전에 삭제가 발생한 경우 최종 라이터가 우선 적용됩니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/concurrent-create-delete-last-writer-wins-before.jpg)


리전 B에서 세트 유형의 키 x가 삭제되었습니다. 그 후 리전 A에서 해당 키에 새 멤버가 추가되었습니다. 리전 A의 작업이 마지막으로 수행된 작업이므로 결국 키는 리전 A에 추가된 유일한 요소가 있는 세트로 수렴됩니다.

삭제가 나중에 발생한 경우:

![\[동시 생성-삭제: 나중에 삭제가 발생한 경우 최종 라이터가 우선 적용됩니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/concurrent-create-delete-last-writer-wins-after.jpg)


리전 A에 설정된 유형의 키 x에 새 멤버가 추가되었습니다. 이후 리전 B에서 키가 삭제되었습니다. 리전 B에 대한 작업이 마지막으로 수행된 작업이므로 결국 키가 삭제되도록 수렴됩니다.

**카운터, 동시 작업: 최종 라이터 우선 적용으로 전체 값 복제**

MemoryDB Multi-Region의 카운터는 전체 값 복제를 수행하고 최종 라이터 전략을 적용하여 비카운터 유형과 유사하게 작동합니다. 동시 작업은 결합되지 않지만 마지막 작업은 대신 성공합니다. 예제:

![\[최종 라이터가 우선 적용될 경우 전체 값 복제.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/concurrent-full-rep-last-writer-wins.jpg)


이 시나리오에서 키 x의 시작 값은 1입니다. 그런 다음 리전 B는 카운터 x를 2만큼 늘린 다음 곧바로 리전 A는 카운터를 1만큼 늘렸습니다. 리전 A가 마지막으로 수행된 작업이므로 마지막으로 수행된 작업이 1만큼 증가임에 따라 키 x는 결국 값 2로 수렴됩니다.

**비결정적 명령은 결정적 명령으로 복제**

여러 리전에서 값의 일관성을 보장하기 위해 MemoryDB Multi-Region에서 비결정적 명령은 결정적 명령으로 복제됩니다. 비결정적 명령은 SETNX와 같은 외부 요인에 의존하는 명령입니다. SETNX는 키의 존재 여부에 따라 달라지며 키는 원격 리전에는 존재하지만 명령을 수신하는 로컬 리전에는 존재하지 않을 수 있습니다. 따라서 비결정적 명령은 전체 값 복제로 복제됩니다. 문자열의 경우 SET 명령으로 복제됩니다.

![\[비결정적 명령이 결정적 명령으로 복제됩니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/nondeterministic_commands.png)


요약하면 문자열 유형에 대한 모든 작업은 SET 또는 DEL로 복제되고, 해시 유형에 대한 모든 작업은 HSET 또는 HDEL로 복제되며, 설정 유형에 대한 모든 작업은 SADD 또는 SREM으로 복제되고, 정렬된 세트에 대한 모든 작업은 ZADD 또는 ZREM으로 복제됩니다.

# 콘솔에서 MemoryDB Multi-Region 사용
<a name="multi-Region.console"></a>

다음은 콘솔에서 MemoryDB Multi-Region을 사용하는 방법입니다.

**Topics**
+ [MemoryDB Multi-Region에서 새 클러스터 생성](#multi-Region.console.create)
+ [Multi-Region 클러스터 내의 새 클러스터 또는 기존 클러스터에 스냅샷 복원](#multi-Region.console.restore)
+ [MemoryDB Multi-Region에서 클러스터 수정](#multi-Region.console.modify)
+ [MemoryDB Multi-Region에서 클러스터 삭제](#multi-Region.console.delete)

## MemoryDB Multi-Region에서 새 클러스터 생성
<a name="multi-Region.console.create"></a>

1. 클러스터 목록 또는 대시보드에서 클러스터 생성 섹션으로 이동합니다.  
![\[클러스터 생성, 콘솔 보기\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/create-multi-region1.png)

1.  **클러스터 유형** 필드에서 **Multi-Region 클러스터**를 선택합니다.

1.  **클러스터 생성 방법** 필드에서 **간편 생성**을 선택합니다.

1.  **이름** 및 **설명**을 입력하고 기본값을 확인한 다음 **생성**을 선택합니다.

**클러스터 생성 및 구성**

1. 클러스터 목록 또는 대시보드에서 클러스터 생성 섹션으로 이동합니다.  
![\[클러스터 생성 및 구성, 콘솔 보기\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/create-multi-region2-configure.png)

1.  **클러스터 유형** 필드에서 **Multi-Region 클러스터**를 선택합니다.

1.  **클러스터 생성 방법** 필드에서 **새 클러스터 생성**을 선택합니다.

1.  **이름** 및 **설명**을 입력하고 값을 확인한 다음 **생성**을 선택합니다.

## Multi-Region 클러스터 내의 새 클러스터 또는 기존 클러스터에 스냅샷 복원
<a name="multi-Region.console.restore"></a>

1. 클러스터 목록 또는 대시보드에서 클러스터 생성 섹션으로 이동합니다.  
![\[클러스터 복원, 콘솔 보기\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/restore-multi-region-from-snapshot1.png)

1. **클러스터 유형** 필드에서 **Multi-Region 클러스터**를 선택합니다.

1.  **클러스터 생성 방법** 필드에서 **스냅샷에서 복원**을 선택합니다.

1.  소스 스냅샷을 선택한 다음 필수 필드를 입력합니다. 선택 사항을 검토한 다음 **복원**을 선택합니다.  
![\[Multi-Region 클러스터로 복원할 소스 스냅샷을 선택하는 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/restore-multi-region-from-snapshot2-confirm.png)

1. Multi-Region 클러스터를 보려면 클러스터 섹션으로 이동합니다.  
![\[Multi-Region 클러스터를 수정하기 위한 클러스터 섹션의 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/restore-multi-region-from-snapshot3-confirm.png)

1. 이제 대상 다중 리전 클러스터 이름을 선택합니다.  
![\[수정할 다중 리전 클러스터를 선택하는 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/restore-multi-region-from-snapshot4-confirm.png)

1. 이제 대상 리전 클러스터 이름을 선택합니다.  
![\[수정할 리전 클러스터를 선택하는 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/restore-multi-region-from-snapshot5-confirm.png)

## MemoryDB Multi-Region에서 클러스터 수정
<a name="multi-Region.console.modify"></a>

1. 데이터 섹션으로 이동합니다. 현재 클러스터가 모두 표시되어야 합니다.  
![\[이미지입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/modify-multi-region1.png)

   그런 다음 수정하려는 클러스터 유형에 따라 다음 단계 중에서 선택합니다.

1. Muti-Region 클러스터로 단일 클러스터를 수정하려면 먼저 해당 클러스터가 속한 Multi-Region을 선택합니다. 그런 다음 작업(오른쪽 상단)에서 편집 버튼을 선택합니다. 그런 다음 대상 단일 클러스터를 선택합니다. **세부 정보** 페이지에서 이 클러스터를 수정할 수도 있습니다.

**리전 클러스터 수정**

1. 다중 리전 클러스터를 수정하려면 대상 Multi-Region 클러스터 이름을 선택합니다.  
![\[수정할 대상 Multi-Region 클러스터를 선택하는 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/modify-multi-region2.png)

   그런 다음 클러스터를 선택하고 작업(오른쪽 상단) 또는 세부 정보 페이지에서 **편집** 버튼을 선택합니다.

1. 리전 클러스터를 추가하려면 선택한 대상 다중 리전 클러스터를 선택한 다음 **작업** 드롭다운으로 이동하여 ** AWS 리전 추가**를 선택합니다. 리전의 세부 정보 페이지로 이동하여 대상 다중 AWS 리전 클러스터를 선택하고 여기에서를 추가할 수도 있습니다.  
![\[리전 클러스터를 추가할 대상 Multi-Region 클러스터를 선택하는 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/modify-multi-region3-add-regional-cluster.png)

1. 리전을 추가하려면 대상 리전을 선택합니다. 그런 다음 필수 정보를 입력하고 ** AWS 리전 추가**를 선택합니다.  
![\[리전을 추가할 대상 Multi-Region 클러스터를 선택하는 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/modify-multi-region4-add-region.png)

1. 빈 Multi-Region 클러스터에 새 리전 클러스터를 추가하려면 Multi-Region 클러스터 생성과 동일한 옵션이 표시됩니다. 유일한 차이점은 다중 리전 클러스터 정보가 이미 존재한다는 것입니다.  
![\[새 리전 클러스터를 추가할 빈 Multi-Region 클러스터를 선택하는 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/modify-multi-region5-add-regional-cluster-to-empty.png)

## MemoryDB Multi-Region에서 클러스터 삭제
<a name="multi-Region.console.delete"></a>

1. 리전에서 단일 클러스터를 삭제하려면 대상 리전 클러스터를 선택합니다. 그런 다음 작업 메뉴 드롭다운으로 이동하여 개별 클러스터를 선택하고 **삭제**를 선택합니다.  
![\[삭제할 단일 클러스터를 선택하는 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/delete-multi-region1-select.png)

   삭제하기 전에 스냅샷을 생성하는 옵션을 포함한 확인 창이 표시됩니다. 그래도 삭제하려면 텍스트 필드에 "삭제"를 입력한 다음 **삭제**를 선택합니다.  
![\[삭제 확인 창의 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/delete-multi-region2-snapshot.png)

1. Multi-Region 클러스터와 연결된 모든 리전 클러스터를 삭제하려면 하나 이상의 클러스터가 있는 대상 다중 리전 클러스터를 선택합니다. 그런 다음 대상 다중 리전 클러스터를 선택한 상태에서 작업 메뉴 드롭다운으로 이동하여 **삭제**를 선택합니다.  
![\[Multi-Region 클러스터와 연결된 모든 클러스터를 삭제하도록 선택하는 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/delete-multi-region3-associated-clusters.png)

1. 전체 다중 리전 클러스터를 삭제하려면 대상 빈 다중 리전 클러스터를 선택합니다. 그런 다음 작업 메뉴 드롭다운으로 이동하여 **삭제**를 선택합니다.  
![\[전체 다중 리전 클러스터를 삭제하는 콘솔 보기입니다.\]](http://docs.aws.amazon.com/ko_kr/memorydb/latest/devguide/images/delete-multi-region4-entire-mrc.png)

# CLI에서 MemoryDB Multi-Region 사용
<a name="multi-Region.cli"></a>

다음은 CLI에서 MemoryDB Multi-Region을 사용하는 방법입니다.

**참고**  
MemoryDB Multi-Region은 노드 유형 db.r7g.xlarge 이상만 지원합니다.

## MemoryDB Multi-Region을 사용하여 클러스터 생성
<a name="multi-Region.cli.create"></a>

**다중 리전 클러스터 생성**

```
aws memorydb create-multi-region-cluster \
	--multi-region-cluster-name-suffix my-multi-region-cluster \
	--node-type db.r7g.xlarge \
	--engine valkey \
	--region us-east-1
```

**미국 동부(버지니아 북부) 리전에서 리전 클러스터 생성**

```
aws memorydb create-cluster \
	--cluster-name my-cluster \
	--multi-region-cluster-name my-multi-region-cluster \
	--node-type db.r7g.xlarge \
	--acl-name open-access \
	--region us-east-1 \
```

**유럽(아일랜드) 리전에서 리전 클러스터 생성**

```
aws memorydb create-cluster \
	--cluster-name my-cluster \
	--multi-region-cluster-name my-multi-region-cluster \
	--node-type db.r7g.xlarge \
	--acl-name open-access \
	--region eu-west-1 \
```

**모든 리전의 다중 리전 클러스터 설명**

```
aws memorydb describe-multi-region-cluster \
	--multi-region-cluster-name my-multi-region-cluster \
	--region eu-west-1
```

## 다중 리전 클러스터 업데이트
<a name="multi-Region.cli.update"></a>

**노드 유형 수정**

```
aws memorydb update-multi-region-cluster \
	--multi-region-cluster-name my-multi-region-cluster \
	--node-type db.r7g.4xlarge \
	--region us-east-1
```

**샤드 수 수정**

```
aws memorydb update-multi-region-cluster \
	--multi-region-cluster-name my-multi-region-cluster \
	--shard-configuration \
	ShardCount=3 \
	--update-strategy COORDINATED \
	--region us-east-1
```

## MemoryDB 클러스터 규모 조정
<a name="multi-Region.cli.scaling"></a>

먼저 `list-allowed-node-type-updates` 명령을 사용하여 스케일 업하거나 스케일 다운할 수 있는 노드를 나열합니다.

```
aws memorydb list-allowed-node-type-updates \
	--cluster-name my-cluster-name
```

이렇게 하면 확장 또는 축소할 수 있는 노드 목록이 제공됩니다. 다음과 같이 `update-cluster` 명령을 사용하여 사물을 업데이트할 수 있습니다.

```
aws memorydb update-cluster  \
	--cluster-name my-cluster \
	--node-type db.r6g.2xlarge
```

다중 리전 KMS 키에 대한 자세한 내용은 [MemoryDB Multi-Region을 사용한 규모 조정](multi-Region.Scaling.md) 단원을 참조하세요.

## MemoryDB Multi-Region에서 클러스터 삭제
<a name="multi-Region.cli.update"></a>

**리전 클러스터 삭제**

```
aws memorydb delete-cluster \	
	--cluster-name my-cluster \
	--multi-region-cluster-name my-multi-region-cluster \
	--region us-east-1
```

**다중 리전 클러스터 삭제**

```
aws memorydb delete-multi-region-cluster \
	--multi-region-cluster-name my-multi-region-cluster \
	--region us-east-1
```

# MemoryDB Multi-Region 모니터링
<a name="multi-Region.monitoring"></a>

Amazon CloudWatch를 사용하여 Multi-Region 클러스터의 동작과 성능을 모니터링할 수 있습니다. MemoryDB는 Multi-Region 클러스터 내의 각 리전 클러스터에 대한 `MultiRegionClusterReplicationLag` 지표를 게시합니다.

`MultiRegionClusterReplicationLag`는 업데이트가 원격 Multi-Region 리전 클러스터 다중 AZ 트랜잭션 로그에 기록되는 시점과 해당 업데이트가 로컬 Multi-Region 리전 클러스터의 프라이머리 노드에 기록되는 시점 사이의 경과 시간을 보여줍니다. 이 지표는 밀리초 단위로 표시되며 샤드 수준에서 모든 소스 및 대상 리전 페어에 대해 내보내집니다.

정상 작동 중에는 `MultiRegionClusterReplicationLag`가 상당히 일정해야 합니다. `MultiRegionClusterReplicationLag` 값이 상승하면 한 리전 클러스터의 업데이트 내용이 다른 리전 클러스터로 시기 적절하게 전파되지 않는다는 것을 나타낼 수 있습니다. 시간이 지날수록 다른 리전 클러스터가 더 이상 지속적으로 업데이트 내용을 받지 않기 때문에 *뒤처질* 수 있습니다.

`MultiRegionClusterReplicationLag` AWS 리전이 격리되거나 성능이 저하되고 해당 리전에 리전 클러스터가 있는 경우가 증가할 수 있습니다. 이 경우 애플리케이션의 읽기 및 쓰기 활동을 다른 정상 AWS 리전으로 일시적으로 리디렉션할 수 있습니다.

# MemoryDB Multi-Region을 사용한 규모 조정
<a name="multi-Region.Scaling"></a>

클러스터에 대한 수요 변화에 따라 MemoryDB 클러스터 내 샤드 수 또는 노드 유형을 변경해 성능을 향상시키거나 비용을 줄이도록 결정할 수 있습니다. MemoryDB Multi-Region 클러스터를 확장하면 해당 클러스터의 모든 리전 클러스터가 확장됩니다. MemoryDB Multi-Region 클러스터는 온라인 리샤딩을 지원합니다. MemoryDB Multi-Region 클러스터는 오프라인 리샤딩을 지원하지 않습니다.

클러스터를 다시 조정하도록 결정할 수 있는 조건은 다음과 같습니다.
+ **메모리 압력**

  리전 클러스터의 노드에서 메모리가 부족하면 데이터를 저장 및 요청 처리에 더 많은 리소스를 사용하도록 스케일 아웃 또는 스케일 업을 결정할 수 있습니다.

  다음과 같은 지표를 모니터링해 노드에서 메모리가 부족한지 확인할 수 있습니다. FreeableMemory, SwapUsage, BytesUsedForMemoryDB, MultiRegionClusterReplicationLag 
+ **CPU 또는 네트워크 병목 현상**

  클러스터에서 지연 시간/처리량 문제가 발생하면 문제를 해결하기 위해 스케일 아웃 또는 스케일 업이 필요할 수 있습니다.

  다음과 같은 지표를 모니터링하여 지연 시간 및 처리량 수준을 모니터링할 수 있습니다. `CPUUtilization`, `NetworkBytesIn`, ` NetworkBytesOut`, `CurrConnections`, ` NewConnections`, ` and MultiRegionClusterReplicationLag`.
+ ** 클러스터가 과대 조정되었습니다.**

  스케일 인 또는 스케일 다운과 같은 클러스터에 대한 현재 수요는 성능을 저하시키지 않고 비용을 줄입니다.

다음과 같은 지표를 사용하여 클러스터의 사용을 모니터링해 안전하게 스케일 인 또는 스케일 다운할 수 있는지 확인할 수 있습니다. FreeableMemory, SwapUsage, BytesUsedForMemoryDB, CPUUtilization, NetworkBytesIn, NetworkBytesOut, CurrConnections, NewConnections, MultiRegionClusterReplicationLag 

MemoryDB 클러스터를 조정하는 방법에는 수평적 스케일링과 수직적 스케일링이라는 두 가지 방법이 있습니다.
+ 수평적 스케일링에서는 샤드를 추가 또는 제거하여 MemoryDB Multi-Region 클러스터 내 샤드 수를 변경할 수 있습니다. 온라인 리샤딩 프로세스를 통해 리전 클러스터가 들어오는 요청을 계속 처리하는 동안 확장/축소할 수 있습니다.
+ 수직적 스케일링에서는 노드 유형을 변경하여 MemoryDB Multi-Region 클러스터의 크기를 조정합니다. 온라인 수직적 스케일링을 통해 리전 클러스터가 들어오는 요청을 계속 처리하는 동안 확장/축소할 수 있습니다.

조정은 기본적으로 “협정된” 업데이트 전략을 사용합니다. 이는 모든 리전 클러스터의 규모가 성공적으로 조정되거나, 아니면 어떤 클러스터도 규모가 조정되지 않는다는 것을 의미합니다.

스케일 아웃 작업은 “협정되지 않은” 업데이트 전략도 지원합니다. 즉, 일부 리전 클러스터는 성공적으로 스케일 아웃될 수 있지만 일부 리전 클러스터는 스케일 아웃 시도에 실패합니다. 한 리전 클러스터 스케일 아웃이 성공하면 다른 모든 리전 클러스터는 다른 각 스케일 아웃도 성공할 때까지 스케일 아웃을 계속 재시도합니다.

모든 리전 클러스터가 스케일 아웃에 실패하면 다중 리전 클러스터는 “협정되지 않은” 스케일 아웃에 실패합니다.

**참고**  
“협정되지 않은” 스케일 아웃은 리전 클러스터가 서로 다른 시간에 스케일 아웃될 때 리전 클러스터 간에 용량 불균형 상태를 연장할 수 있습니다. 이로 인해 MultiRegionClusterReplicationLag 지표가 증가하고 리전 클러스터 데이터가 장기간 발산될 수 있습니다.

MemoryDB Multi-Region 클러스터 리전 클러스터는 복제본 노드 수에 대해 서로 다른 구성을 가질 수 있지만 리전 클러스터의 모든 샤드에는 동일한 수의 복제본 노드가 있습니다.

MemoryDB Multi-Region 클러스터의 크기와 메모리 용량을 축소하려면 스케일 인 또는 스케일 다운을 통해 새 구성에 데이터를 위한 충분한 메모리와 여유 IPs, 충분한 엔진 오버헤드가 있는지, 리전 클러스터에 대한 MultiRegionClusterReplicationLag 지표가 초 또는 분 범위 내에 있는지 확인합니다.

 AWS Management Console AWS CLI, 및 MemoryDB API를 사용하여 MemoryDB 다중 리전 클러스터를 수평 및 수직으로 조정할 수 있습니다.

# 지원되는 명령과 지원되지 않는 명령
<a name="multi-Region.SupportedCommands"></a>

**지원되는 명령**

**참고**  
SET 명령은 현재 EX, PX, EXAT, PXAT, KEEPTTL 옵션을 지원하지 않습니다.
RESTORE 명령은 TTL을 0이 아닌 값으로 설정하는 것을 지원하지 않습니다. ABSTTL, IDLETIME 및 FREQ 옵션도 지원되지 않습니다.


| 데이터 유형 |   명령 | 
| --- | --- | 
|  문자열  |  SET\$1, DECR, DECRBY, GET, GETRANGE, SUBSTR, GETDEL, GETSET, INCR, INCRBY, INCRBYFLOAT, MGET, MSET, MSETNX, SETNX, STRLEN, LCS  | 
|  해시  |  HINCRBY, HINCRBYFLOAT, HDEL, HSET, HMSET, HGET, HEXISTS, HLEN, HKEYS, HVALS, HGETALL, HMGET, HSTRLEN, HSETNX, HRANDFIELD, HSCAN  | 
|  Set  |  SADD, SREM, SISMEMBER, SMISMEMBER, SCARD, SMEMBERS, SRANDMEMBER, SSCAN, SUNION, SINTERCARD, SINTER, SDIFF, SPOP  | 
|  Sorted Set  |  ZADD, ZINCRBY, ZSCORE, ZMSCORE, ZCARD, ZRANK, ZREVRANK, ZRANGE, ZRANGEBYSCORE, ZRANGEBYLEX, ZREVRANGE, ZREVRANGEBYLEX, ZREVRANGEBYSCORE, ZREMRANGEBYLEX, ZREMRANGEBYSCORE, ZREMRANGEBYRANK, ZUNION, ZINTER, ZINTERCARD, ZDIFF, ZLEXCOUNT, ZCOUNT, ZREM, ZMPOP, ZPOPMIN, ZPOPMAX, ZSCAN, ZRANDMEMBER  | 
|  Generic  |  SCAN, DEL, UNLINK, DUMP, RESTORE\$1\$1, EXISTS, KEYS, RANDOMKEY, TYPE  | 

**지원되지 않는 명령**

지원되지 않는 명령의 일반적인 범주는 지원되지 않는 데이터 유형(Bitmaps, Hyperloglog, List, Geospatial, Stream), TTL 관련 명령, 차단 명령 및 함수 관련 명령입니다. 전체 목록은 다음과 같습니다.


| 데이터 유형 |   명령 | 
| --- | --- | 
| 문자열 | APPEND, GETEX, SETEX, SETRANGE | 
| Bitmap | BITCOUNT, BITFIELD, BITFIELD\$1RO, BITOP, BITPOS, GETBIT, SETBIT | 
| Hyperloglog | PFADD, PFCOUNT, PFDEBUG, PFMERGE, PFSELFTEST | 
| List | BLMOVE, BLMPOP, BLPOP, BRPOP, BRPOPLPUSH, LINDEX, LINSERT, LLEN, LMOVE, LMPOP, LPOP, LPOS, PUSH, LPUSHX, LRANGE, LREM, LSET, LTRIM, RPOP, RPOPLPUSH, RPUSH, RPUSHX | 
| Set | SMOVE, SUNIONSTORE, SDIFFSTORE, SINTERSTORE | 
| Sorted Set | BZMPOP, BZPOPMAX, BZPOPMIN, ZDIFFSTORE, ZINTERSTORE, ZRANGESTORE, ZUNIONSTORE | 
| Geospatial | GEOADD, GEODIST, GEOHASH, GEOPOS, GEORADIUS, GEORADIUS\$1RO, GEORADIUSBYMEMBER, GEORADIUSBYMEMBER\$1RO, GEOSEARCH, GEOSEARCHSTORE | 
| Stream | XACK, XADD, XAUTOCLAIM, XCLAIM, XDEL, XLEN, XPENDING, XRANGE, XREAD, XREADGROUP, XREVRANGE, XSETID, XTRIM, XGROUP, XINFO | 
| Generic | COPY, FLUSHDB, FLUSHALL, MOVE, RENAME, RENAMENX, SORT, SORT\$1RO, SWAPDB, OBJECT, FUNCTION, FCALL, FCALL\$1RO, EXPIRE, EXPIREAT, EXPIRETIME, PERSIST, PEXPIRE, PEXPIREAT, PEXPIRETIME, PSETEX, PTTL, TTL | 