AWS RDS로 데이터베이스 만들기

jjunhwan.kim·2022년 1월 29일
1

AWS 사용하기

목록 보기
2/4
post-thumbnail

이 포스팅은 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스" 책을 보고 정리한 내용입니다. 이번 포스팅에서는 AWS에서 제공하는 클라우드 기반 관계형 데이터베이스 서비스인 RDS를 구축하고 설정해보겠습니다.

RDS란?

  • AWS에서 제공하는 클라우드 기반의 관계형 데이터베이스 서비스이다.
  • 서버 컴퓨터에 직접 MySQL이나 MariaDB같은 관계형 데이터베이스를 설치하지않고 데이터베이스를 사용할 수 있다.
  • 조정 가능한 용량을 지원하여 추가 비용을 내고 확장시킬 수 있다.

1. RDS 인스턴스 생성

  1. AWS 사이트 상단에 있는 검색창에서 RDS를 검색한다.
  2. RDS 대시보드에서 데이터베이스 생성을 선택한다.
  3. 여러 가지 데이터베이스 엔진이 있다. 이 중에 프리 티어가 제공되는 MariaDB를 선택한다. MySQL기반이므로 MySQL과 유사하게 사용할 수 있다.
  4. 프리 티어를 선택하고 DB 인스턴스 식별자와 마스터 사용자 정보를 등록한다. 마스터 사용자 정보로 데이터베이스에 접근한다.
  5. 스토리지 용량을 설정한다. 프리 티어에서는 20GiB까지 이용할 수 있다.
  6. 퍼블릭 액세스를 "예"로 선택한다. 추후 보안 그룹에서 지정된 IP만 접근하도록 설정한다. "아니요"로 선택하면 EC2에서만 데이터베이스에 접근가능하므로 개인PC에서 데이터베이스에 접근이 불가능하다. 보안 그룹을 새로 생성하고 이름을 입력해준다.
  7. 초기 데이터베이스 이름을 설정한다.
  8. 프리티어 조건을 확인하고 데이터베이스 생성을 선택한다.

2. RDS 설정

  • RDS를 생성하였을 때 필수로 설정해야하는 타임존, Character Set, Max Connection을 설정한다.
  1. 왼쪽 메뉴에서 파라미터 그룹을 선택한다.
  2. 파라미터 그룹 생성을 선택한다.
  3. 이전에 생성한 MariaDB와 같은 버전을 선택하고, 파라미터 그룹 이름을 입력하여 파라미터 그룹을 생성한다.
  4. 생성된 파라미터 그룹을 확인하고 해당 그룹을 클릭한다.
  5. 파라미터 편집을 선택한다.
  6. 파라미터 검색창에 time_zone을 검색한다. time_zone 파라미터의 값을 Asia/Seoul로 선택한다.
  7. 파라미터 검색창에 char을 검색한다. 아래 그림에 보이는 6개의 파라미터들의 값을 utf8mb4로 선택한다.
  8. 파라미터 검색창에 collation을 검색한다. 아래 그림에 보이는 2개의 파라미터들(collation_connection, collation_server)의 값을 utf8mb4_general_ci로 선택한다. utf8mb4과 utf8의 차이는 이모지 저장 가능 여부이다. utf8mb4는 이모지를 저장할 수 있다.

  9. 파라미터 검색창에 lower_case_table_names를 검색한다. 해당 파라미터의 값을 1로 설정한다. 해당 값이 1일 경우 테이블명의 대소문자를 구분하지 않는다.
  10. 파라미터 검색창에 max_connection을 검색한다. max_connections는 인스턴스 사양에 따라 자동으로 정해진다. 프리티어에서는 약 60개의 커넥션만 가능하다고 한다. 책에서는 넉넉하게 150으로 지정하였으나 그냥 기본 값으로 놔두었다. 변경 사항 저장을 선택하여 파라미터 변경 내용을 저장한다.
  11. 생성된 파라미터 그룹을 데이터베이스에 연결한다. 생성한 데이터베이스 인스턴스를 선택하고 수정을 선택한다.
  12. 추가 구성의 데이터베이스 옵션의 DB 파라미터 그룹을 방금전 생성한 파라미터 그룹으로 변경한다.
  13. 저장을 진행하면 수정 사항을 볼 수 있다. 수정 사항 적용 시간을 즉시 적용으로 선택한다. 아직은 데이터베이스를 사용한 서비스가 운영중이 아니기 때문에 즉시 적용한다. 추후에 서비스가 운영중이라면 새벽 시간대에 진행한다.
  14. 데이터베이스 재부팅을 진행한다.

3. 로컬 PC에서 RDS 접속

  • 로컬 PC 및 EC2에서 RDS에 접근하기 위해 RDS의 보안 그룹에 IP를 등록해야한다.
  1. 데이터베이스 세부 정보에서 VPC 보안 그룹을 선택한다.
  2. 보안 그룹 리스트에서 이전에 생성한 EC2 인스턴스의 보안 그룹 ID를 미리 복사해둔다. 그리고 데이터베이스의 보안 그룹을 선택하고 인바운드 규칙 편집을 선택한다.
  3. 인바운드 규칙에서 내IP와 복사한 EC2 인스턴스의 보안 그룹 ID를 등록한다.
  4. 로컬 PC에서 데이터베이스에 접근하기 위한 클라이언트 프로그램으로 MySQL Workbench를 사용한다. 해당 프로그램을 설치한다.
  5. 상단 메뉴의 Database -> Manage Connections를 선택하여 데이터 베이스 커넥션 정보를 입력한다. Hostname에는 RDS의 엔드포인트를 입력한다. 엔드포인트는 RDS 상세 정보 페이지에 나와있다. Username, Password에는 RDS 생성시 설정한 마스터 사용자 이름과 암호를 입력한다.
  6. 데이터베이스에 접속하면 아래와 같이 RDS 생성시에 입력한 "초기 데이터베이스 이름" 으로 데이터베이스가 생성되어있다.
  7. 콘솔창에서 SQL을 입력하고 Command + Enter를 입력하여 쿼리를 실행한다. 아래와 같이 데이터베이스를 선택한다.
  8. 데이터베이스가 선택된 상태에서 현재의 caracter_set, collation 설정을 확인한다. 일부 항목이 제대로 설정되어 있지 않으므로 직접 변경한다.
  9. 아래와 같이 쿼리를 실행하고 다시 확인한다.
  10. 아래와 같이 타임존 설정도 확인한다.
  11. 테이블명 대소문자 구분 설정도 확인한다.

4. EC2에서 RDS 접속

  1. 우선 EC2에 SSH 접속을 진행한다.
ssh todo-app-backend
  1. MySQL에 접근하기 위해 MySQL CLI를 설치한다.
sudo yum install mysql
  1. 아래 명령어를 통해 RDS에 접속한다.
mysql -u 계정 -p -h Host주소
  1. 아래와 같이 접속이 되는 것을 확인한다.

지금까지 AWS RDS를 생성하고 기본적인 설정을 하였다. 다음 포스팅에서는 스프링 부트 프로젝트를 EC2에 배포하고 RDS에 연동하도록 진행한다.

0개의 댓글