외로운 Nova의 작업실

aws - RDS 본문

Cloud/aws

aws - RDS

Nova_ 2023. 10. 14. 14:52

- RDS

RDS는 Relational Database Server로 관계형 데이터베이스를 손쉽게 생성하고 확장할 수 있는 서비스입니다.

 

원래 온프레미스에서는 고성능 대규모 DB를 운영하려면 DB 운영 인력이 필요합니다. 하지만 소규모 사업장의 경우 전문적인 DB 인력을 따로 두기 어렵습니다. 또한, 고성능의 서버가 여러대 필요하며 전 세계를 대상으로 하는 서비스를 준비할때는 세계 곳곳에 DB서버를 구축하고 장애에 대비해 이중화를 구성해야하지만 현실적으로 어려운 부분이 많습니다.

 

이러할때 RDS를 이용하면 클릭 몇번 만으로도 쉽게 DB인스턴스를 생성할 수 있고, 사용량이 늘어나면 스토리지 용량과 IOPS를 증가시켜 성능확장이 가능합니다. 또한 장애가 발생해도 Failover 기능을 통해 정상적인 서비스 제공이 가능하도록 구성할 수 있습니다.

 

RDS의 손쉬운 생성과 확장으로 전문 DB인엵이 필요하지 않게 되어 시간과 비용을 절감할 수 있고 필요한 만큼만 확장하면 되기때문에 처음부터 큰 비용을 지출하지 않아도 됩니다.

 

EC2 인스턴스에 직접 데이터베이스 엔진을 설치해서 운영할 수 도있찌만 이러한 경우 EC2인스턴스 서버 관리는 물론 데이버테이스 관리까지 해야하는 부담이 있습니다. 또한 장애에 대비한 이중화와 Failover기능 Read Replica(읽기 성능 향상) 기능을 모두 직접 설치하고 구성해야한다는 부담이 있습니다.

 

- RDS DB 인스턴스

RDS는 EC2와 비슷하게 인스턴스라는 개념이 있습니다.RDS DB 인스턴스도 EC2 인스턴스처럼 여러 사양으로 나뉘어져 있습니다. 사용량이 적으면 낮은 사양의 인스턴스를 사용하고, 사용량이 많으면 높은 사양을 사용하면됩니다. 아래 링크로 들어가보면 자세히 알 수 있습니다.

https://aws.amazon.com/ko/rds/instance-types/

 

Amazon RDS 인스턴스 유형 | 클라우드 관계형 데이터베이스 | Amazon Web Services

 

aws.amazon.com

간단히 보게되면 CPU갯수, 메모리 크기, 스토리지, 대역폭, 네트워킹 성능에따라 RDS DB 인스턴스를 나누고 있습니다. on demand instance로 시간당 요금이 부과됩니다. 또한 예약 인스턴스라고해서 일정 기간동안 예약할 수 있으며 이러한 경우에 시간당 사용 요금이 대폭 할인됩니다.

 

- RDS 엔진

RDS는 다양한 데이터베이스 엔진을 지원합니다. 데이터베이스 엔진은 DB 인스턴스에 미리 설치되어있습니다.

 

- RDS 인스턴스 생성

이제 RDS 인스턴스를 생성해볼건데, mysql엔진을 사용해보겠습니다.

템플릿은 프리티어로 해줍니다.

데이터베이스 이름과 마스터 사용자 이름, 데이터베이스에서 사용할 마스터 암호도 입력해줍니다.

퍼블릭 액세스를 예로 해줍니다.

스토리지 자동 조정 활성화는 off 해줍니다. 이후 데이터베이스를 생성해줍니다.

잘 생성된 것을 확인할 수 있습니다.

 

- RDS DB 인스턴스 보안 그룹 설정

RDS DB에 접속하려면 보안 그룹을 수정해줘야합니다. 기본 보안 그룹으로 사용했을때 아마존 내부에서만 접근이 가능하기때문입니다. 저는 외부에서 mysql workbench로 접속할 것이기때문에 인스턴스 보안 그룹을 설정해보겠습니다.

보안 그룹을 클릭해줍니다.

인바운드 규칙 편집을 눌러줍니다.

mysql 3306 포트를 추가해줍니다.

잘 적용이 되었습니다.

 

- RDS DB 인스턴스 사용

이제 DB 인스턴스를 사용해보겠습니다. Mysql이기 떄문에 Mysql Workbench를 사용해서 접속할 것 입니다. 먼저 다운로드해줍니다.

https://dev.mysql.com/downloads/workbench/

 

MySQL :: Download MySQL Workbench

Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Red Hat Enterprise Linux / Oracle Linux Fedora macOS Source Code Select OS Version: All Windows (x86, 64-bit) Recommended Download: Other Downloads: Windows (x86, 64-bit), M

dev.mysql.com

기본 설정으로 설치하면 아래와 같은 화면이 나옵니다.

가운데에 + 버튼을 눌러줍니다.

그리고 내용을 채워줍니다. host에는 RDS 엔드포인트를 써줘야합니다.

이후 연결하면 잘 됩니다. 현재 실습할때 공공 와이파이로 하고 있는데, 이 와이파이가 80과 445포트만 열어놓은 것 같습니다. 그래서 mysql 사용은 다음에 추가하겠습니다.

 

- RDS 스냅샷

EBS와 마찬가지로 RDS도 스냅샷을 생성할 수 있습니다. RDS DB 스냅샷은 DB의 전체 내용중 특정 시점을 파일로 저장한 형태입니다. DB 자동 백업과 DB 스냅샷은 차이점이 있습니다.

DB 자동 백업 : RDS DB 인스턴스를 삭제하면 DB 자동 백업도 함께 삭제됩니다.

DB 스냅샷 : RDS DB 인스턴스를 삭제하더라도 DB 스냅샷은 계속 유지됩니다. 그리고 다른 리전으로 복사할 수 있습니다.

 

이제 RDS DB 스냅샷을 생성해보겠습니다.

작업에서 스냅샷 생성을 눌러줍니다.

스냅샷을 생성해줍니다.

생성된 것을 확인할 수 있습니다. 

 

- 스냅샷으로 DB 인스턴스 생성

EBS 스냅샷으로 EBS 볼륨을 생성하는 것과 마찬가지로 RDS DB 스냅샷으로 RDS DB 인스턴스를 생성할 수 있습니다.

스냅샷 복원을 눌러줍니다.

해당 스냅샷으로 DB 인스턴스를 생성할 수 있습니다.

식별자를 새로 작성하고 만들어줍니다.

스냅샷으로 만든 RDS DB 인스턴스가 생성된 것을 확인할 수 있습니다.

 

- RDS 스냅샷 다른 리전으로 복사

RDS DB 인스턴스는 다른 리전으로 이전할 수 없습니다. 따라서 RDS DB 인스턴스를 스냅샷으로 생성한 뒤 다른 리전으로 복사해야합니다. 한번 해보겠습니다.

스냅샷에서 스냅샷 복사를 눌러줍니다.

버지니아로 보내보겠습니다.

버지니아 북부에 스냅샷이 생성된 것을 확인할 수 있습니다. 저 스냅샷으로 인스턴스를 만들면 인스턴스 이전과 똑같은 효과가 나옵니다.

 

- RDS 특정 시점으로 복구하기

RDS DB 인스턴스를 생성할때 자동 백업 설정을 했다면 DB의 특점시점을 RDS DB 인스턴스로 생성할 수 있습니다. 이미 있는 DB 인스턴스 내용을 되돌리는 것이 아니라 특정 시점의 내용을 DB 인스턴스로 새롭게 생성하는 방식입니다. 한번 해보겠습니다.

작업에서 특정 시점으로 복원을 눌러줍니다.

직접 시간을 설정할 수 있습니다.

이름을 설정해주고 만들어줍니다.

새로운 데이터베이스가 생성된 것을 확인할 수 있습니다.

 

- Read Replica 생성

Read Replica는 DB 인스턴스의 읽기 복제본을 만들어 성능을 향상하는 데 쓰입니다. 서비스에서 읽기 위주의 작업이 많을 경우 Read Replica를 여러개 만들어 부하를 분산할 수 있습니다. 즉, 쓰기 작업은 마스터 DB 인스턴스에 하고 읽기 작업은 Read Replica인 슬레이브 DB 인스턴스에서 실시한다면 마스터 DB 인스턴스의 부하를 줄일 수 있습니다.

 

마스터 DB 인스턴스에 쓰기를 하면 자동으로 슬레이브 DB 인스턴스로 데이터가 복제됩니다. 단 쓰기 작업을 실시한 즉시 복제가 되는 것은 아니며 약간의 시간차가 있습니다.

 

Multi-AZ : 쓰기 작업을 실한 즉시 예비 인스턴스가 복제됩니다. 따라서 데이터가 항상 일치한다는 것을 보장할 수 있지만 읽기작업을 할 수 없습니다. 이는 항상 가동해야하는 갸용성을 위한 것입니다.

Read Replica : 쓰기 작업을 실시하면 약간의 시간차를 가지고 복제됩니다. 따라서 데이터가 일치하지 않을 수 도 있습니다. Read Replica는 읽기 부하 분산을 통해 성능 향상을 위한 기능입니다.

 

한번 만들어보겠습니다.

작업을 누르고 읽기 전용 복제본 생성을 눌러줍니다.

이름을 써주고 만들어줍니다.

생성이 완료된 것을 확인할 수 있습니다.

 

'Cloud > aws' 카테고리의 다른 글

aws - ElastiCache  (0) 2023.10.17
aws - DynamoDB  (0) 2023.10.14
aws - CloudFront  (0) 2023.10.13
aws - S3  (0) 2023.10.13
aws - CloudWatch  (0) 2023.10.12
Comments