Undergoing

Aurora Replication 본문

개발/DB

Aurora Replication

Halkrine 2024. 7. 13. 15:36

Amazon Aurora

What is Amazon Aurora

  • 클라우드를 위해 구축된 MySQL 및 PostgreSQL 호환 관계형 데이터베이스
  • 표준 MySQL 및 PostgreSQL 데이터베이스보다 빠름
  • 또한 10분의 1 비용으로 상용 데이터베이스의 보안, 가용성 및 안정성을 제공
  • 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시간 소모적인 관리작업을 자동화하는 Amazon Relational Database Service(RDS)에서 Amazon Aurora의 모든 것을 관리
  • MySQL과 PostgreSQL 기반으로 새롭게 설계한 관계형 데이터베이스 서비스

AWS 기반, 기존 RDS의 Architecture

  • Multi-AZ(Multiple Availability Zones)
  • 두 개의 가용영역 안에 각각의 RDS가 있음
  • 하나의 RDS는 하나의 인스턴스와 EBS(Elastic Block Store)로 구성

Aurora의 Architecture

1. Single-Master

  • 읽기/쓰기를 분리
  • 한 대의 Write 인스턴스와 다수의 읽기 전용 인스턴스(Aurora Replica)로 구성
  • 쓰기 전용 노드가 받아서 6개의 저장 노드에 모두 write를 함
  • 읽기 전용 노드들이 저장 노드와 통신을 해서 데이터를 불러와서 유저에게 전달
  • 총 15개의 Replica 생성 가능
  • 비동기식 Replication
  • 하나의 Region 안에 생성 가능
  • Writer가 죽을 경우 자동으로 Replica 중 하나가 Writer로 Failover
  • 용어 정의 : VPC(Virtual Private Cloud)

2. Multi-Master

  • 읽기/쓰기를 담당하는 노드가 여러 개 존재
  • 각 노드는 독립적
  • 주로 Multitenant(단일 소프트웨어 인스턴스로 서로 다른 여러 사용자 그룹에 서비스를 제공할 수 있는 소프트웨어 아키텍처) 또는 Sharding이 적용된 애플리케이션에 좋은 성능
  • 현재 Aurora의 Multi Master는 MySQL에 대한 확실한 레퍼런스는 존재하나, PostgreSQL은 다소 빈약

Scaler.com 번역

  • Multi Master 의 모든 DB 인스턴스는 데이터를 읽고 쓸 수 있음
  • Multi Master 클러스터에서 DML(데이터 조작 언어) 및 DDL(데이터 정의 언어) 문을 실행하려면 각 인스턴스 엔드포인트에 대한 연결을 설정해야 함
  • Aurora 클러스터는 모든 쓰기 활동이 일반적으로 하나의 클러스터 엔드포인트로 전달됨
  • Multi Master 클러스터는 n개의 Write/Read Node가 존재함(Maximum of n is 4)
  • Multi Master 클러스터에는 특정 Read only 전용 node가 존재하지 않음
  • 두 DB 인스턴스가 동일한 데이터 페이지를 거의 동시에 편집하려고 하면 쓰기 충돌이 발생하는데, 가장 빠른 변경 요청을 승인하기 위해 정족수(Quorum) 투표 프로세스가 사용됨

별첨 : Aurora의 특징

  • MySQL과 PostgreSQL 지원

  • 두 가지 모드 지원

  • 용량의 자동 증감: 10GB부터 시작하여 10GB 단위로 증가( 최대 128TB )

  • 데이터의 분산 저장

  • 각 AZ마다 2개의 데이터 복제본 저장 * 최소 3개 이상의 AZ==> 최소 6개의 복사본

  • 3개 이상을 잃어버리기 전엔 쓰기 능력이 유지

  • 4개 이상을 잃어버리기 전엔 읽기 능력이 유지

  • 손실 된 복제본은 자가 치유 - 지속적으로 손실된 부분을 검사 후 복구

  • Quorum 모델 사용 (Aurora Quorum Model)



  • 6개 복제본이 존재할 때 6개에 대한 상태를 어떻게 유지할 것에 대한 방법을 투표로 정함

  • write가 발생했을 때 6개 중 4개 이상의 노드에 쓰여질 경우 완전무결한 write로 인정, 6개 중 3개 이상의 노드를 확보하여 read 했을 때 올바른 read라고 인정


'개발 > DB' 카테고리의 다른 글

Overview of PostgreSQL Internals(PG14 기준)  (1) 2024.07.19
MySQL Group Replication  (1) 2024.07.16
OrioleDB  (0) 2024.07.12
PostGraphile  (0) 2024.07.11
Postgres Database Replication  (0) 2024.07.10