[AWS] RDS MySQL 와 Aurora MySQL 차이점

Dragony·2022년 5월 20일
0

AWS

목록 보기
1/4

AWS RDS MySQL

  • RDS 플랫폼은 기존 데이터베이스 아키텍쳐를 중심으로 완전히 관리되는 추상화 계층 제공
  • RDS 내에서 데이터베이스 플랫폼은 EC2 에서 수동으로 수행하는 것 처럼 구축됨.
  • 적절한 AMI (Amazon Machine Image)에서 프로비저닝 되고, EBS스토리지는 프로비저닝된 인스턴스에 연결된다. 그리고 적절한 서브넷 그룹과 보안 그룹이 인스턴스에 연결되는 구조이다.

특징

  • 트랜잭션 로그 및 데이터베이스 데이터 파일은 로컬 EBS 스토리지 볼륨 사용
  • 데이터베이스의 모든 커밋된 트랜잭션 I/O는 WAL(Write-Ahead Log)라고 하는 전후 이미지가 있는 로그 레코드를 생성한 후, 지속가능한 스토리지로 저장
  • 체크포인트 작업은 수정된 페이지를 디스크로 플러시하여 수행
  • EC2 인스턴스에 생성되기 때문에 I/O 대역폭 및 IOPS 로 인해 성능이 제한됨
  • 튜닝에는 I/O 대역폭을 늘리거나 I/O 수를 줄여야 함


Amazon Aurora 란?

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

Amazon Aurora(Aurora)는 MySQL 및 PostgreSQL과 호환되는 완전 관리형 관계형 데이터베이스 엔진

  • Aurora 플랫폼은 AWS만의 관계형 데이터베이스로써, 기존의 소스를 커스터마이징하여 AWS에 최적화 시킨 것이 특징이다.
  • 기존 RDS의 모든 관리 기능 뿐만 아니라, 데이터베이스에 최적화된 스토리지 하위 시스템을 제공하여 RDS 플랫폼을 확장한다.
  • RDS에서 사용하는 EBS 스토리지 대신, NVMe SSD 드라이브 위에 구축되어 훨씬 빠른 성능 이점을 제공한다.

특징

  • 애플리케이션에 따라 자동으로 확장
  • 6개의 데이터 복사본을 만들어 여러 위치에 배포하고 Amazon S3 에 지속적으로 백업
  • 99.99% 이상의 가용성 제공
  • 스토리지 장애로부터 투명하게 복구
  • 일반적으로 30초 미만의 인스턴스 장애조치 허용
  • 이전 시점으로 빠르게 복구할 수 있는 기능 제공


Aurora는 빠른 로컬 성능 및 재해 복구를 위해 여러 지역에 데이터를 복제하고, 컴퓨팅 및 스토리지 작업을 분리하여, I/O 병목현상을 줄인다.

로컬 스토리지에 대한 체크포인트 작업으로, 데이터베이스 인스턴스에 부담을 주는 대신 Aurora는 지속적인 체크포인트를 위해 분산 스토리지 플릿을 사용한다.
이 분산 스토리지 플릿은 Aurora가 처리량 측면에서 표준 MySQL을 능가하는데 도움이 되며 가용성과 내구성도 향상된다.

AWS RDS와 AWS Aurora의 차이점은?

  • AWS Aurora 는 Shared Storage를 사용하며, MySQL 경우 Binlog 기반의 Replication이 아닌 Storage와 Page 기반의 Replication을 사용한다.

  • MySQL 의 경우 자신의 EBS로 데이터를 쌓고, 쌓은 데이터를 EBS로 미러링 한 다음, Replication을 통해 Replica로 데이터를 보내고, Replica는 받은 데이터를 자신의 스토리지로 쌓는다.

  • 반면, Aurora의 경우에는 4/6 쿼럼을 사용해 스토리지에 저장하며, Replica로 보내는 것은 Frm 및 Redo log 이다. 그래서 Network Bandwidth 사용도 적으며, 빠르게 변경분을 저장하고 반영할 수 있다. (즉 스토리지 레벨에서 복제가 발생한다.)


  • 또한, MySQL의 경우 Read Replica도 binlog를 받아서 처리해야하기 때문에, Read 뿐만 아니라, Write도 같이 처리해야하는 단점이 있다.
  • AWS Aurora Mysql 의 경우, Read Replica가 binlog를 잃어서 싱크를 맞추는 것이 아니라,redo log를 받아서 동기화하기 때문에, read에만 집중할 수 있다.

결론

정리하자면, RDS MySQL 과 AWS Auroral MySQL의 가장 큰 차이점은 Storage 및 관리 주체, Read Replica의 구성 방식 세가지로 볼 수 있다.

  • Storage : RDS MySQL은 자체 EBS로 운영하지만, Aurora MySQL은 Shared Storage를 사용한다.
  • 관리 주체 : RDS MySQL은 관리자가 RDS MySQL의 버전을 관리하지만, Aurora MySQL은 AWS가 개발해서 버전 업그레이드를 주기적으로 하기 떄문에 optional 또는 mandatory가 AWS에 의해 정해질 수 있다.
  • Read Replica 구성 : RDS MySQL은 standby와 read replica를 만들 때 binlog를 사용하지만, Aurora의 경우 내부 storage 및 redo log 전송을 통해 빠른 통기화가 가능하며 bandwidth를 줄일 수 있다.

또한, Aurora 에는 4가지 Endpoint가 있다.

  • Cluster Endpoint
    - Writer Endpoint 라는 이름으로 등장했지만 현재는 Cluster Endpoint라고 한다.
    • AUrora는 Single Write Cluster이기 떄문에, Writer Instance만 접근 되는 endpoint이므로, Failover되면 해당 endpoint에 맵핑되는 Instance가 달라진다.
  • Read Endpoint : Aurora Read Replica들을 그룹화한 Endpoint이다. 라운드 로빈으로 커넥션을 맺는다.
  • Instance Endpoint: 각 Aurora Instance 하나하나 들어갈 수 있는 Endpoint 이다.
  • Custon Endpoint: Route53이랑 비슷한 역할을 하며, 관리요소에 따라 Endpoint를 여러개 만들 수 있다.


참고 블로그

https://notemusic.tistory.com/69
https://sungwookkang.com/1487

profile
안녕하세요 :) 제 개인 공부 정리 블로그입니다. 틀린 내용 수정, 피드백 환영합니다.

0개의 댓글