Post

AWS RDS 설정 - 프리티어, MySQL

AWS RDS 설정 - 프리티어, MySQL

프로젝트를 EC2 서버를 사용해 배포하며 DB정보도 RDS를 통해 분산형 관계형 데이터베이스 서비스를 사용하는 김에 정리하게 되었다.

RDS 설정

먼저 아래 링크에서 루트 사용자로 로그인 하자 AWS RDS

좌측 데이터베이스를 클릭하자 데이터베이스

RDS 인스턴스를 생성하기 위해 데이터베이스 생성을 클릭하자

필자는 범용적인 설정을 위해 표준생성 해주었다. 손쉬운 설정으로 기본에 커스텀하고싶으면 오른쪽을 선택하자

엔진 옵션

다음으로 사용하는 엔진 유형과 버전을 선택하자. 필자는 MySQL을 사용하고 있어 선택해 주었으며 버전도 선택하였다. 다만 인텔리제이에서 DataGrip을 사용중인데 자동으로 데이터베이스 드라이버를 다운로드 해 가장 최신 버전을 사용중이라면 일치하는 버전이 없을수도 있다. 하지만 일반적으로 MySQL의 마이너 버전 간에는 큰 차이가 없고, 호환성 문제도 거의 발생하지 않아 큰 문제는 없을것이다.

템플릿

다음으로 템플릿을 선택해주자. 프리티어 사용중이라면 프리티어 선택하는것을 권장한다. 아마 프리티어 선택 시 아래 가용성에서 단일 DB 인스턴스가 고정될 것이다. RDS 템플릿

설정

DB 인스턴스 설정으로 DB 인스턴스 식별자와 자격 증명 설정을 하도록 하자. 식별자 이름을 작성하고 필요하다면 암호를 만들면 된다.
필자는 자체 관리로 마스터 암호를 생성했다. - 비밀번호는 기록이나 기억해 두도록 하자

스토리지

프리티어를 선택했기 때문에 인스턴스 클래스는 버스터블 클래스(t클래스 포함)으로 자동 선택된 것이다. 해당 인스턴스 클래스 중 과금 방지를 위해 db.t2.micro를 선택했다. 스토리지 자동 조정 역시 과금 방지를 위해 체크를 해제하였다. 프리티어 지원 클래스에 db.t2.micro, db.t3.micro, db.t4g.micro가 있다.

**스토리지 설정에서 과금 방지를 위해 프리티어 최대 사용량이 20GiB이므로 20GiB으로 변경하고 스토리지 자동 조정도 꼭 꺼주자. **

연결

연결 설정 에서는 퍼블릭 액세스를 활성화하기 위해 EC2 컴퓨팅 리소스에 연결 안 함 을 선택한다. 나중에 VPC설정으로 EC2서버에서 RDS 접속 가능하다. 퍼블릭 엑세스는 예를 누르고 VPC보안그룹은 특정 그룹에 해당하는 경우에만 RDS 쓸 수 있게 하는 것이므로 새롭게 그룹 만들고 이름 작성하자. ~~_database가 무난하다 추가구성의 포트는 MySQL 기본포트 3306으로 설정했다.

태그 및 데이터베이스 인증은 편한대로 설정하자

추가 구성

데이터베이스 추가 구성에서 20GB이상 스냅샷이 생성되면 프리티어라도 결제될 수 있기 때문에 자동 백업을 비활성화하자.

월별 추정 비용

이렇게 적혀는 있는데 프리티어 한도 내에서 사용하면 과금되지 않으니 그 사용량 내에서 작업하도록 항상 체크하자

생성 후 확인하기

보안그룹 설정

서버에서 DB 접속 가능하게 하기 위한 설정 연결 및 보안에서 보안 그룹 규칙을 보면 Inbound에 자신의 로컬IP, Outbound는 모든 트래픽인 0.0.0.0/0일 것이다. 여기서 현재 보안 그룹 확인하자. Inbound 규칙을 선택 클릭하고 인바운드 규칙 편집. 아래와 같이 인바운드 규칙 추가하자

MySQL과 연결 및 DB, 테이블 생성

MySQL WorkBench사용해서 접속한 뒤 만들어보겠다. 위 Database에서 아까 생성 시 기억해야했던 정보들이 필요하다.

  • Hostname : 엔드포인트
  • Username : 마스터 아이디, 필자는 admin
  • Password : 마스터 암호

이렇게 생성 후 제대로 접속이 된다면 성공이다. 테스트를 진행해보자.

인텔리제이에서 연동하여보자

정상적으로 연결되었으며 잘 작동한다.

이 배포용 DB는 yml에서 연결정보를 다시 적어주어야한다.

1
2
3
4
5
  datasource:
    url: jdbc:mysql://(엔드포인트 추가 괄호는 제거)
    username: 사용자 이름 (ex : admin)
    password: 비밀번호 추가
    driver-class-name: com.mysql.cj.jdbc.Driver

파라미터 그룹

timezone, 인코딩 등 DB 인스턴스 적용 옵션을 지정할 수 있다

편집에 들어가자

  1. character 검색창에 character를 입력하고 아래 체크된 6개 파라미터의 값을 utf8mb4 로 작성후 변경사항 저장

Why? MySQL, MariaDB는 utf8로 세팅하는 경우 이모지(ex: 😄)문자가 입력되지 않아서 utf8mb4 라는 charset을 사용 . 이모지문자를 표현하기 위해서 글자당 최대 4bytes가 필요하지만 utf8에서는 가변3바이트를 사용하기 때문에 이모지문자가 깨지므로 4바이트를 사용하는 utf8mb4로 설정한다.

2. Time Zone 검색창에 time_zone 입력하고 Asia/Seoul 로 작성후 변경사항 저장

3. collation 검색창에 collation 입력하고 아래 2개 파라미터의 값을 utf8mb4_general_ci 로 작성후 변경사항 저장

설명

  • utf8mb4_general_ci는 MySQL에서 사용하는 문자 집합과 정렬 규칙의 조합입니다. 이 설정은 다음과 같은 의미를 가지고 있습니다:

    • utf8mb4: 이는 MySQL의 문자 집합으로, 유니코드 문자 집합의 4바이트 버전입니다. utf8mb4는 utf8보다 더 넓은 범위의 유니코드 문자를 지원하여, 이모지와 같은 4바이트 문자를 포함한 다양한 문자를 저장할 수 있습니다.

    • general: 이 부분은 문자 정렬 규칙을 나타냅니다. general은 일반적인 정렬 규칙을 사용하며, 대소문자 구분이 없는 비교를 지원합니다.

  • ci: 이는 “case-insensitive”의 약자로, 대소문자를 구분하지 않는다는 의미입니다. 즉, A와 a는 동일한 문자로 간주됩니다.

따라서 utf8mb4_general_ci는 유니코드 문자 집합을 사용하고, 대소문자를 구분하지 않으며, 일반적인 정렬 규칙을 따르는 설정입니다. 이 설정은 대부분의 경우에 적합하며, 다양한 언어와 특수 문자를 처리할 수 있는 유연성을 제공

4. max_connections (선택사항) 이 부분은 동시 클라이언트 연결 수 설정인데 MySQL 5.7: 기본값은 151 MySQL 8.0: 기본값은 151 라고 한다. 기본값이 낮을 경우 설정을 바꿀 수 있을 것 같다. 일단 패스

다 적용했으면 데이터베이스로 돌아가서 자신의 DB선택 후 수정 누르기. 아까 생성할 때 보았던 파트 중 추가 구성으로 내려가 이렇게 자신의 파라미터 그룹으로 변경 후 즉시 적용으로 수정

This post is licensed under CC BY 4.0 by the author.