RDS Instance 생성/연결 Hands-on

Instance 생성 및 연결 과정

  • DB Instance 생성
  • Database 연결

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

데이터베이스 생성하기

  • AWS 데이터베이스 메뉴로 이동한 뒤, 데이터베이스 생성 버튼을 클릭합니다.

다양한 옵션을 선택할 수 있습니다.
(연습 단계에서는 프리 티어 선택하기)

연결 옵션에서 퍼블릭 액세스 가능 부분을 예로 설정해야 합니다.

보안 그룹은 기본값이 default를 선택합니다.

데이터베이스 포트의 경우 3306대신 포트 번호 노출 방지를 위해 다른 숫자를 사용하는 것이 좋습니다.
ex) 13306

이후 데이터베이스 생성을 끝냅니다.

데이터베이스 생성까지는 생각보다 시간이 오래걸립니다. 따라서 상태 부분이 생성 중이 아닌 사용 가능까지 기다려야 됩니다.

이후 MySQL과 클라이언트를 활용해 DB Instance에 연결하는 과정을 진행합니다.


MySQL 클라이언트를 통해 RDS의 DB Instance 연결하기

  • DB Instance 생성 시 기재한 마스터 이름, 마스터 비밀번호
  • 포트 번호
  • 생성한 DB Instance의 엔드 포인트 주소

엔드 포인트의 주소는 RDS 연결 & 보안에서 확인할 수 있습니다.

터미널에서 MySQL을 통해 DB Instance에 접속합니다.

ex)

mysql -u [마스터 이름] --host[엔드포인트 주소] -p 13306(포트 번호) -p
  • 마스터 이름은 RDS에 만든 마스터 이름
  • 엔드포인트 주소는 RDS 연결 & 보안에서 확인
  • 포트 번호도 Database 생성 시 설정 한 것

정상적으로 작동하면 show databases를 입력했을 때 생성 초기 데이터베이스 이름으로 설정 해둔 것이 만들어진 걸 확인할 수 있습니다.


서버 환경 설정

EC2 Instance에서 실행되고 있는 서버는 그 자체로 작동하고 있지만, 데이터베이스에 연결하지는 않았습니다.

서버의 환경 설정을 통해 지난 실습에서 생성한 RDS Instance에 접속하고, 클라우트 데이터베이스를 사용할 수 있게 해봐야합니다.

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

EC2 Instance에서 실행하고 있는 서버를 종료합니다.

  • PM2 이용 시 프로세스를 종료 하기 위해
pm2 stop

환경 설정 파일을 수정하기 위해 server 디렉토리로 이동한 뒤, nano를 통해 .env 파일을 열수 있습니다.

nano .env

ex) .env

DATABASE_HOST=엔드포인트
DATABASE_USER=admin
DATABASE_PASSWORD=1234
DATABASE_PORT=13306
  • DATABASE_HOST: 생성한 DB Instance의 엔드포인트 주소를 입력합니다.
  • DATABASE_USER: 마스터 사용자 이름을 입력
  • DATABASE_PASSWORD: 마스터 암호를 넣습니다.
  • DATABASE_PORT: DB Instance의 Port 번호를 넣습니다.

환경 변수 수정 후 ctrl + x를 통해서 저장할 수 있습니다.


서버 실행

sudo npm start

명령어를 입력해 서버를 실행할 수 있습니다.

PM2를 이요하는 경우 아래 프로세스를 통해 실행해야 합니다.

authbind --deep pm2 start app.js

// authbind --deep pm2 stop app.js 프로세스 정지

서버를 실행하고 다시 S3 버킷의 엔드포인트 주소로 접속해 연결 테스트를 진행합니다.

주의 사항

  • DB Instance가 정상적으로 실행되고 있는가?
  • 환경 변수에 제대로 된 값을 할당했는가? (.evn 정상적으로 변경됐는가?)
  • 에러 발생시 chrome Network 탭에서 요청과 응답 과정의 오류를 확인하자.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글