Amazon Aurora DB

2024. 4. 17. 20:51·개발 환경 및 운영

Amazon RDS를 통해 클라우드에서 관계형 데이터베이스를 쉽게 설정하고 운영할 수 있다. 작년 카프카의 데이터베이스를 Aurora postgreSQL로 선택하면서 사용해왔는데 기존과 어떤점이 다른지 알아보고자 한다. 

Amazon Aurora

Amazon Aurora 는  MySQL 및 PostgreSQL과 호환되는 완전 관리형 관계형 데이터베이스 엔진이다. Aurora에는 고성능 스토리지 하위시스템이 포함되며, MySQL 및 PostgreSQL과 호환되는 데이터베이스 엔진은 빠른 분산형 스토리지를 활용하도록 사용자 지정된다. 기본 스토리지는 필요에 따라 자동으로 커지며, Aurora 클러스터 볼륨 크기는 최대 128 tebibytes (TiB)까지 증가할 수 있다. Aurora는 또한데이터베이스 클러스터링 및 복제를 자동화하고 표준화하여 제공한다. RDS의 일부로 데이터베이스를 만들때 aurora를 선택 해서 생성할 수 있다. 

Aurora DB Cluster

Aurora DB Cluster는 하나 이상의 DB 인스턴스와 DB 인스턴스들이 공유하는 클러스터 볼륨으로 구성되어 있다. Aurora DB는 기본적으로 클러스터 형태로 구성되고 클러스터내 인스턴스는 아래와 같이 두 가지 유형의 DB 인스턴스로 구성된다. 

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.html

  1. 기본 DB 인스턴스
    1. 읽기 와 쓰기 가능
    2. 클러스터 볼륨의 모든 데이터 수정을 실행
    3. 클러스터당 기본 DB 인스턴스가 하나씩 존재
  2. Aurora 복제본
    1. 기본 DB 인스턴스와 동일한 스토리지 볼륨에 연결되어 사용되고 읽기 작업만 지원
    2. 각 Aurora DB 클러스터는 기본 DB 인스턴스에 더해 최대 15개 까지 읽기 전용인 Aurora 복제본을 구성가능
    3. 하나의 엔드포인트만 애플리케이션에서 연결해도 여러 Secondary DB들로 로드밸런싱을 해줌
    4. 복제본 별로 가용 영역에 배포하여 고가용성을 유지
    5. Primary DB가 죽어도 자동으로 Secondary DB가 승격되는 failover 기능

클러스터 볼륨

  • Aurora 클러스터 볼륨에는 모든 사용자 데이터, 스키마 객체, 내부 메타데이터(예: 시스템 테이블 및 binlog 등) 가 포함되어있다.
  • Aurora 공유 스토리지를 통해 복제 및 동기화가 이루어짐으로, Aurora 읽기 복제본 인스턴스를 추가 시 별도의 복제 복사본을 만들지 않고 빠르게 인스턴스를 추가 할 수 있다. 

→ 복제본으로 보내는 데이터는 frm파일(테이블의 메타데이터 저장하는 파일), Redo log(DB 변경사항 기록)여서 용량 자체가 적으므로 네트워크 대역폭을 적게 사용하고, write한 데이터들을 read로 빠르게 전송 및 반영이 될 수 있는 구조이다. 

MySQL과 비교

MySQL Aurora
복제는 반드시 로그 재생이 필요 로그 재생이 없음
복제는 마스터에 추가적인 부하 발생 마스터에 부하 최소 
로그 재생 때문에 복제 지연의 증가할 수 있음  복제 지연이 거의 없음
failover시 데이터 정합성 보장 또는 유실 가능성  동일 스토리지를 공유하여 failover되어도 바로 주 DB 역할 가능

읽기/쓰기 분리시 주의할점

  • 읽기/쓰기 분리시 주의할 점은 reader node의 인스턴스 클래스 구성이 Writer보다 너무 작은 경우 변경 데이터의 볼륨이 너무 커서 reader가 writer를 따라잡을 수 없게된다는 점이다. 그래서 두 인스턴스의 사양을 동일하게 맞출 것을 권하고 있다.

* AuroraReplicaLag이란

  • 단일 클러스터 내에서 writer-reader 간에 복제 지연을 나타내는 지표(밀리초)
  • 아래는 현재 사용하고 있는 postgreSQL의 replicaLag 그래프로, 대부분 10ms 이하로 걸리고 가끔 0.2초 지연이 생긴다고 나온다.

 

참고 : https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html

저작자표시 (새창열림)

'개발 환경 및 운영' 카테고리의 다른 글

환경변수 주입하는 두 가지 방법  (2) 2024.12.08
EC2 인스턴스 복제부터 로드밸런서 설정 및 Route53 DNS 설정까지  (1) 2024.02.21
Github Action with docker, k8s  (0) 2023.07.08
'개발 환경 및 운영' 카테고리의 다른 글
  • 환경변수 주입하는 두 가지 방법
  • EC2 인스턴스 복제부터 로드밸런서 설정 및 Route53 DNS 설정까지
  • Github Action with docker, k8s
haong_
haong_
블로그 이전합니다 >> www.hajinnote.me
  • haong_
    일단 시작하는 블로그
    haong_
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 데이터 엔지니어링
      • 이슈 해결 일지
      • 개발 환경 및 운영
        • Kubernetes
      • CS
        • 운영체제
        • 데이터베이스시스템
      • 프로그래밍
      • 알고리즘
      • 머신러닝
        • 통계학
        • 딥러닝
        • 데이터 분석
        • 논문
        • 프로젝트
      • 회고
      • 책 & 스터디
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    이
    데이터메시
    data mesh
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
haong_
Amazon Aurora DB
상단으로

티스토리툴바