🔎 Amazon Aurora
- 고성능 데이터베이스와 가용성 오픈 소스 데이터베이스의 간편성, 비용 효율성을 결합된 MySQL, PostgreSQL 호환 관계형 데이터베이스
- 표준 MySQL 데이터베이스보다 최대 5배 빠르고, 표준 PostgreSQL 데이터베이스보다 3배 빠른 속도
- 1/10의 비용으로 상용 데이터베이스의 보안, 가용성 및 안정성을 제공
- 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시간 소모적인 관리 작업을 자동화
💡 특징
- MySQL, PosgreSQL 지원
- 두가지 모드
✓ 다수 노드로 읽기, 쓰기가 가능한 Muti-Master
✓ 한 개의 쓰기 전용 노드와 다수의 읽기 전용 노드(Aurora Replicas) 구성의 Single-Master
- 용량의 자동 증감: 10GB부터 시작하여 10GB 단위로 용량 증가 (최대 128TB)
- 연산 능력: 96vCPU와 768GB 까지 증가 가능 (db.r5.24xlarge)
- 데이터의 분산 저장: 각 AZ마다 2개의 데이터 복제본 저장 * 최소 3개 이상의 AZ => 최소 6개의 복제본
✓ 3개 이상을 잃어버기리 전엔 쓰기 기능이 유지됨
✓ 4개 이상을 잃어버리기 전엔 읽기 기능이 유지됨
✓ 손실된 복제본은 스스로 복구 (지속적으로 손실된 부분을 검사)
✓ Quorum 모델 사용
📌 Single-Master
- 쓰기: 쓰기 전용 노드가 받아서 분산된 전체 Copy본에 전달
- 읽기: 읽기 전용 노드가 받아 하나의 Storage Node에 접근해 데이터 받아옴
- 한대의 Writer 인스턴스와 다수의 읽기 전용 인스턴스(Aurora Replicas)로 구성
- 총 15개의 Replica 생성 가능
- Async 복제
- 하나의 리전안에 생성 가능
- Writer가 죽을 경우 자동으로 Replica중 하나가 Writer로 Fail Over
✓ 데이터 손실 없이 Failover 시 메인으로 승격 가능
- 고가용성(High Availability) 확보
📌 Multi-Master
- 읽기, 쓰기를 담당하는 노드가 여러개이며 동시에 동작 가능
- 최대 4개의 노드가 읽기/쓰기를 담당
✓ 각 노드는 독립적, 정지/재부팅/삭제 등에 영향을 받지 않음
- 지속적인 가용성(Cotinuous Availability) 제공
- Multitenant 혹은 Sharding이 적용된 어플리케이션에 좋은 성능
Aurora Global Database
- 전 세계의 모든 리전에서 1초내 지연시간으로 데이터 엑세스 가능
- 재해복구용도로 활용 가능
✓ 유사시 보조 리전중 하나를 승격하여 메인으로 활용
✓ 1초의 RPO(복구 지점 목표)
✓ 1분 미만의 RTO(복구 목표 시간)
- 보조 리전에는 총 16개의 Read 전용 노드 생성 가능 (원래는 15개)
병렬 쿼리
- 다수의 읽기 노드를 통해 쿼리를 병렬로 처리하는 모드
✓ 빠르고 부하 분산 (CPU, memory)
- MySQL 5.6/5.7 에서만 지원
- 몇몇 낮은 인스턴스(db.t2, db.t3등)에서는 지원하지 않음
Aurora 백업
- 읽기 복제본(Read Replica) 지원
✓ MySQL DB의 Binary log 복제 (binlog)
✓ 단 다른 리전에만 생성이 가능
- RDS와 마찬가지로 자동/수동 백업 가능
✓ 자동 백업의 경우 1~35일간 S3에 보관
✓ 수동 백업(스냅샷) 가능
✓ 백업 데이터를 복원할 경우 다른 데이터베이스를 생성
Aurora 데이터베이스 클로닝
- 기존 데이터베이스에서 새로운 데이터베이스를 복제
✓ 스냅샷을 통해 새로운 데이터베이스 생성하는 것 보다 빠르고 저렴함
- Copy-On-Write 프로토콜 사용
✓ 기존 클러스터 삭제되도 동작됨
Backtrack
- MySQL만 가능
- Aurora 생성 시 Backtrack 을 설정한 DB만 사용 가능
- Multi-Master 상태에서는 Backtrack 불가능
- 기존의 DB를 특정 시점으로 되돌리는 것(새로운 DB가 아닌 기존 DB)
✓ DB 관리의 실수를 쉽게 만회 가능 (ex. Where 없는 Delete)
✓ 새로운 DB를 생성하는 것 보다 빠름
✓ 앞 뒤로 시점을 이동할 수 있기 때문에 원하는 지점을 빠르게 찾을 수 있음
- Backtrack Window
✓ Target Backtrack Window: 어느 시점으로 되돌려 DB 데이터를 저장할 것인지 미리 지정
✓ Actual Backtrack Window: 실제로 시간을 얼만큼 되돌릴 것인지
- Backtrack 활성화 시 시간당 DB의 변화를 저장
✓ 저장된 용량만큼 비용 지불
✓ DB 변화가 많을 경우 많은 비용