DevOps/AWS

Amazon RDS(Relational Database Service)

Judaeng 2021. 4. 25. 00:50

RDS는 Relational Database Service의 약자로 AWS에서 제공하는 관계형 데이터베이스 서비스이다.

 

🤷‍♂️왜 RDS를 사용할까요?


EC2가 가상의 컴퓨터를 임대하는 서비스라고 배웠다.

그렇다면 EC2 인스턴스에 MySQL 같은 관계형 데이터베이스 엔진을 설치하면 굳이 RDS를 사용할 이유가 없지 않을까?

데이터베이스만 따로 분리해서 서비스를 이용해야 할 이유가 있을까? 어떤 이점이 있는지, 어떻게 쓰는 건지 알아보자.

 

EC2 인스턴스에 관계형 데이터베이스 엔진을 설치해서 데이터를 관리할 때와 RDS를 통해 데이터를 관리할 때의 차이는 렌터카 회사에서 대여한 차량(RDS)개인 소유 차량(직접 설치)으로 비유할 수 있습니다.

 

EC2 인스턴스에 데이터베이스를 직접 설치하여 데이터를 관리하는 것은 데이터베이스와 관련해서, 자동으로 관리를 담당하는 부분이 매우 적기에, 사용자가 일일이 시간을 투자하여 데이터베이스 엔진의 설치와 버전 관리, 데이터 백업을 해야 한다.

게다가 가용성과 내구성이 확보되지 않기에 데이터베이스에 저장된 데이터가 유실되거나 정상적으로 사용하지 못할 확률이 커지며, 후에 필요에 따라 데이터베이스의 규모를 확장하기 어렵습니다.

 

그리고 이 부분은 개인 소유 차량을 이용하는 것과 비슷하다.

개인 소유 차량을 이용하면 유지보수, 보험처리 같은 일들을 온전히 운전자가 부담한다.

차량 정비를 위해서 정비소에 주기적으로 방문해야 하고, 기타 차량과 관련된 다른 일이 생길 때 들여야 하는 시간과 수고가 크다.

 

그에 반해 RDS를 이용하는 것은 렌터카 회사에서 차량을 대여하는 것과 비슷하다.

렌터카 회사에서 차량을 대여하면 대여 차량과 관련하여 시간이 들어가는 일들을 렌터카 회사에서 대신 처리한다.

운전자는 차량을 관리하는 일에 대해서 시간을 따로 쏟을 필요 없이 운전만 하면 되기에 매우 편리하다.

 

RDS를 이용하면 데이터베이스 유지보수와 관련된 일들을 RDS에서 전적으로 자동 관리합니다.

사용자가 해야할 일은 초기 설정을 제외하고 데이터베이스에 저장된 데이터를 관리하는 일 밖에 없기에 큰 편의성을 느낄 수 있습니다.

 

기타 RDS 이용 시 얻을 수 있는 장점으로 다양한 데이터베이스 엔진 선택지를 제공한다는 점을 들 수 있다.

회사에서 근무하고 있는 실무자는 회사에 필요한 데이터베이스 엔진을 취사선택하여 이용할 수 있다 .

그 외 일반 사용자는 데이터베이스 엔진마다 제공하는 기능이 조금씩 다르기에 필요와 목적에 맞게 데이터베이스 엔진을 선택하여 효율성을 높일 수 있다.

예를 들어 MySQL 뿐만 아니라 ORACLE, Amazon Aurora, PostgreSQL, MariaDB 등 다양한 데이터베이스 엔진을 고를 수 있어서 굉장히 편리하고 강력한 서비스이다.

 

✏️정리

1. EC2 인스턴스에 데이터베이스를 직접 설치해서 데이터를 관리하게 되면, 데이터베이스 엔진의 설치와 버전 관리, 데이터 백업 등 필요한 모든 작업들을 사용자가 하나씩 처리해야 한다.

 

2. RDS를 사용하게 된다면 데이터베이스 유지보수와 관련된 일들을 RDS에서 전적으로 자동 관리해준다.

사용자는 그냥 초기 설정만 하고, 데이터베이스에 저장된 데이터들을 관리하는 일에만 집중할 수 있다.

 

3. RDS는 다양한 데이터베이스 엔진 선택지를 제공한다는 점이고, MySQL 뿐만 아니라 ORACLE, Amazon Aurora, PostgreSQL, MariaDB 등 다양한 데이터베이스 엔진을 고를 수 있어서 굉장히 편리하고 강력한 서비스이다.

 

따라 해 보기(실습) : RDB 인스턴스 생성하고 연결하기


MySQL 데이터베이스 엔진을 사용하는 DB 인스턴스를 생성한 뒤, 로컬 환경에서 MySQL 클라이언트를 활용하여 DB 인스턴스에 연결한다.

 

1. DB 인스턴스 생성

2. 데이터 베이스 연결

 

1. RDS 서비스 찾기

서비스 탭에서 RDS를 찾아서 클릭한다.

두 번째 사진에서는 '데이터베이스' 클릭

서비스 탭
사이드 바 '데이베이스 클릭'

2. Database 생성

데이터베이스 화면에서 '데이터베이스 생성' 버튼을 누른다.

생성버튼 클릭!

3. 엔진 옵션 선택

엔진 옵션을 MySQL로 선택하고, 설정 부분에 마스터 사용자 이름, 암호 등을 설정해준다.

마스터 사용자 이름, 암호는 MySQL 접속할 때 사용하니 반드시 잘 기억해주자.

사진엔 없지만, 템플릿은 과금 방지를 위해 프리티어로 설정해야 한다.

RDS 엔진 옵션 선택 및 설정

여기서 보안 그룹 설정을 잘못하면 나중에 EC2 인스턴스와 연결하는 과정에서 에러가 난다.

일단은 default로 해줘도 상관은 없다.

퍼블릭 액세스 구성은 '예'로 설정하고, 포트번호도 연습용으로 따로 지정해줘도 괜찮다.

추가 구성에서 초기 데이터베이스를 지정해주면, 나중에 DB와 연결했을 때 이미 데이터베이스가 생성되어있는 걸 확인할 수 있다.

테스트용으로 만들려고 하니 test라는 초기 DB를 만들어 주자.

옵션 선택

이렇게 모든 설정이 끝나면 맨 아래 데이터베이스 생성 버튼을 누르고, 상태가 사용 가능으로 변할 때까지 기다린다.

이 부분에서 글쓴이는 10~15분 정도 걸렸던 것 같다. 잠시 휴식했다 오면 사용 가능으로 변했을 것이다.

이로써 DB 생성은 끝났고 터미널로 연결을 시작하자.

 

DB 연결


1. MySQL 서버 OPEN

$mysql.server start

엔드포인트 주소, 포트번호는 연결, 보안 탭에서 확인할 수 있다.

사용자 마스터 이름과 아까 기억해둔 암호를 기억에서 꺼낸다.

엔드포인트 주소 확인

2. DB 인스턴스 연결

아래 명령어를 입력한다.

대소문자 구분도 중요하다 대문자 P는 PORT를, 소문자 p는 패스워드를 의미한다. 그리고 순서는 상관없다.

$mysql -u [사용자 마스터 이름] --host [엔드포인트 주소] -P [포트번호] -p

// 다음과 같이해도 된다.
$mysql -u [사용자 마스터 이름] -p [사용자 마스터 암호] --host [엔드포인트 주소] -P [포트번호]

연결이 정상적으로 잘 된다면 아래 MySQL 서버가 실행되고, 아까 초기 데이터베이스로 지정했던 test도 보이는 걸 확인하면 된다.

정상적 연결

만약 이 부분에서 Can't connect to mysql server on 에러가 난다면 여기를 들어가서 한번 확인해준다.

그리고 이 에러를 나는 이렇게 생각하고 해결했다.

이 에러는 EC2 인스턴스 보안 그룹과 RDS 보안 그룹과 따로 있고, 설정을 따로 해줘야 된다고 생각했다.

그렇다면 지금 RDS의 보안 그룹에 있는 EC2 인스턴스 및 보안 그룹 규칙은 설정이 안 되어 있는 것이다. 그렇다면 생각 정리는 끝났다.

보안 그룹 규칙 '클릭' -> 인바운드 규칙 -> 인바운드 규칙 편집 '클릭' -> 그리고 '소스'에 '위치 무관'으로 설정하면 끝

그러면 EC2 인스턴스에 진입 전에 보안 그룹이 설정되어 있고, RDS DB 연결하기 전에 보안 그룹이 설정된 것이다.

그리고 다시 위에처럼 실행해본다. 그래도 안된다면 우리는 구글의 힘을 빌려보자✊

RDS의 자세한 내용을 알아보고 싶다면 역시 AWS RDS 문서에 가서 확인하면 된다.