[AWS] RDS
DevOps

[AWS] RDS

반응형

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

 

EC2 인스턴스에 관계형 데이터베이스 엔진을 설치해서 데이터를 관리할 때와 RDS를 통해 데이터를 관리할 때의 차이는

EC2 인스턴스를 사용하면 데이터베이스와 관련해서 자동으로 관리를 담당하는 부분이 매우 적기 때문에, 사용자가 일일이 시간을 투자하여 데이터베이스 엔진의 설치와 버전 관리, 데이터 백업을 해야 합니다. 게다가 가용성과 내구성이 확보되지 않기 때문에 데이터베이스에 저장된 데이터가 유실되거나 정상적으로 사용하지 못할 확률이 커지며, 후에 필요에 따라 데이터베이스의 규모를 확장하기 어렵습니다.

 

그에 비해 RDS를 이용하는 것은 RDS를 이용하면 데이터베이스 유지 보수와 관련된 일들을 RDS에서 전적으로 자동 관리합니다. 사용자가 해야 할 일은 초기 설정을 제외하고 데이터베이스에 저장된 데이터를 관리하는 일 밖에 없기에 큰 편의성을 느낄 수 있습니다.

그리고 다양한 데이터베이스 엔진 선택지를 제공하고 있습니다.

 

 

1. 데이터 베이스 생성

 

 

mysql을 사용하기 때문에 mysql로 설정을 해주었습니다.

 

 

여기서 프리티어를 설정해 주어야 합니다.

기본 설정이 프로덕션인데 무심코 프로덕션을 만들었다가 기본 10만원 청구를 하기 때문에 10만원 이상 요금이 나왔습니다.

그래서 프리티어로 잘 보고 생성해야 합니다.

(이런 실수에도 AWS에서는 환불을 잘 해주어 환불 받았습니다.)

 

 

마스터 사용자 이름과 마스터 암호를 설정하여 기억해 주어야 합니다.

생성된 DB에 접속할 때 필요합니다.

 

퍼블릭 액세스를 예로 변경하고 포트는 자유롭게 사용 하면 됩니다.

 

마지막으로 추가 구성에서 초기 데이터베이스 이름을 설정해 줍니다.

설정된 데이터베이스 이름을 초기에 만들어 줍니다. 개발 과정에서 만든 데이터베이스 이름 그대로 사용해 주면 됩니다.

 

생성을 누르게 되면 생성되는데 10~20분 정도 걸립니다.

 

2. DB 인스턴스 접속

MySQL 을 통해서 DB 인스턴스에 접속할 수 있습니다.

하지만 보안그룹을 설정하지 않으면 명령어를 입력하여도 접속되지 않을 경우가 있습니다.

( RDS DB 인스턴스 연결 오류 : ERROR 2003 (HY000))

보안 그룹을 설정해줄 때, 인바운드 규칙에서 유형을 모든 트래픽으로 설정을 해주면 됩니다.

 

설정이 완료되면 아래의 명령어를 통해 데이터베이스에 접속이 가능합니다.

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

 

엔드포인트 주소는 생성한 DB에 들어가 연결 & 보안 목록에 엔드포인트가 있습니다. (http, https 등 입력하면 안됩니다.)

 

 

접속후 아래 명령어를 입력하면

show databases;

데이터베이스 생성시에 마지막에 입력한 초기데이터베이스 이름이 있으면 성공입니다.

 

 

3. EC2에서 서버 코드에 저장된 .env 파일에 환경 변수 설정

 

server 폴더에서 기존에 .env.example 폴더가 있으면 .env로 바꿔주고

mv .env.example .env

아래 명령어를 통해 환경변수를 입력해 주면 됩니다

(.env.example 파일을 미리 입력하지 않았으면 아래 명령어를 입력하여 바로 저장해 줄 수 있습니다.

nano .env

4개의 환경 변수에 특정 값을 저장해주어야 합니다.

 

ex)

DATABASE_HOST 변수에는 생성한 DB 인스턴스의 엔드포인트 주소를 넣습니다.

DATABASE_USER 변수에는 마스터 사용자 이름을 넣습니다.

DATABASE_PASSWORD 변수에는 마스터 암호를 넣습니다.

DATABASE_PORT 에는 DB 인스턴스의 port 번호를 넣습니다.

 

 

저장 후에는 서버가 실행중일 때에는 적용을 위해 서버를 꼭 재실행 시켜 주어야 합니다.

반응형

'DevOps' 카테고리의 다른 글

[AWS] CodePipeline - S3 Client 자동화  (2) 2022.01.23
[AWS] HTTPS 적용  (0) 2022.01.19
[AWS] S3 배포  (0) 2022.01.18
[AWS] EC2 배포 및 생성  (0) 2021.11.22
[AWS] EC2 ubuntu 시간 변경  (0) 2021.11.22