AWS RDS 생성과 기본 설정

RDS 생성하기


RDS 데이터베이스 인스턴스 생성

RDS 데이터베이스 인스턴스 생성

  • AWS 콘솔에서 RDS 서비스 접속
  • 데이터베이스 생성 버튼 클릭

MariaDB 엔진 선택

프리티어/MariaDB 엔진 선택

  • MariaDB 엔진과 프리티어 템플릿을 선택한다.

MariaDB 엔진을 사용하는 이유는 다음과 같다.

  • MySQL과 PostgreSQL과 호환되는 완전 관리형 DB 엔진인 Amazon Aurora와 호환이 된다.
  • MariaDB는 MySQL 기반이기 때문이다. 그러나 MySQL는 오라클로 인수되면서 비용이 더 비싸졌으니 MariaDB가 더 좋은 선택이다.
  • (상용에서 오라클 라이선스로 MySQL 지원을 받는다면 MySQL을 사용해도 된다!)
  • MariaDB는 MySQL보다 더 향상된 성능, 기능을 가지고 있고 오픈소스이므로 커뮤니티가 더 활성화 되었다.

상세 설정

DB 상세설정-1

  • 어떤 용도의 DB 인스턴스인지 알아볼 수 있게 식별자를 입력한다.
  • DB 마스터 사용자 이름과 비밀번호를 입력한다.

 

DB 상세설정-2

  • 템플릿 그대로 따라간다

 

DB 상세설정-3

  • 퍼블릭 엑세스 기능 를 선택한다.

 

DB 상세설정-4

  • 초기 데이터베이스 이름을 입력한다. ( - 사용 불가)
  • 마지막으로 데이터베이스 생성한다.

 

RDS 인스턴스 생성된 화면

 

RDS 운영환경에 맞는 설정

  • RDS 생성시 타임존, Character Set, Max Connection 설정을 해줘야 한다.

파라미터 그룹

파라미터 그룹 선택

  • 파라미터 그룹 선택

 

파라미터 그룹 생성

  • 파라미터 그룹 생성 버튼 클릭

 

파라미터 그룹 정보 설정

  • 파라미터 그룹 정보를 입력하고 생성 버튼을 클릭한다.

 

파라미터 그룹 확인

  • 파라미터 그룹 목록 방금 생성한 파라미터 그룹 클릭

 

파라미터 편집

  • 기본 설정된 파라미터 목록들이 보이는데, 우측 상단 파라미터 편집 버튼 클릭

 

타임존 설정

타임존 설정

  • time_zone 검색 후 time_zone 항목 드롭다운 선택하여 Asia/Seoul 선택

 

문자열 셋 설정

다음의 문자열 셋 설정 항목들을 검색하여 설정한다

  • utf8mb4 로 설정할 것들 (utf8과의 차이는 이모지 저장 가능 여부로, utf8mb4는 이모지 저장 가능하다)
    • character_set_client
    • character_set_connection
    • character_set_database
    • character_set_filesystem
    • character_set_results
  • utf8mb4_general_ci 로 설정할 것들
    • collation_connection
    • collation_server

collation은 어떤 방식으로 정렬할 것인가로 utf8mb4_general_ci는 사람이 인식하는 대로 정렬한다.

Max Connection 설정

  • RDS의 Max Connection은 인스턴스 사양에 따라 자동으로 정해진다.
  • 현재 프리티어 사양은 약 60개의 커넥션만 가능하므로 늘려준다.

기본 max_connections 값
변경 max_connections 값

모든 설정이 완료되면 변경사항을 적용하자.

 

파라미터 그룹과 DB 인스턴스 연결

  • 대시보드에서 인스턴스 선택후 수정 버튼 클릭

 

DB파라미터 그룹 설정

  • DB파라미터 그룹을 선택한다.

 

즉시 적용

  • 수정사항을 반영하며 즉시 적용하여 수정한다.

 

RDS 보안 설정

  • 본인 집과 웹 서비스 EC2에서 RDS에 접근할 수 있게 설정하자.
  • 먼저 웹서비스용 EC2 인스턴스에서의 접근을 허용하자

RDS 인스턴스 보안 그룹

  • 클릭 하면 EC2 > 보안그룹 메뉴로 이동하며 선택한 RDS VPC 기본 보안 그룹이 필터링 되어있다.

 

RDS 보안 그룹으로 필터링된 EC2 보안 그룹 목록

  • 해당 보안 그룹 ID를 클릭하여 상세 페이지로 이동한다.

 

RDS 인스턴스 보안그룹 상세 페이지

  • 인바운드 규칙 편집을 클릭한다.

 

webservice EC2 보안그룹 선택

  • 규칙 추가버튼을 클릭하여 생성된 라인에서 MYSQL/Auora를 선택한다.
  • 사용자 지정 목록에서 웹서비스용 EC2의 보안 그룹을 선택한다.
  • 다음으로 본인 집 IP를 허용하도록 설정을 추가한다.

 

본인 집 IP 3306 포트 허용

  • 마찬가지로 규칙 추가버튼을 클릭하여 생성된 라인에서 사용자 지정 TCP를 선택한다.
  • 3306 포트를 입력한다.
  • 사용자 지정 유형으로 본인 IP를 입력한다. 드롭다운에서 본인IP/32 보여지고 선택하면 그림처럼 세팅된다.
  • 마지막으로 규칙 저장을 하면 적용된다.

 

DB에 접속해보기

엔드포인트 정보

  • RDS > DB 인스턴스 목록에서 DB를 선택 후 상세페이지의 연결 & 보안을 확인한다.
  • 엔드포인트를 복사한다.
  • 사용하는 Database 툴에서 MariaDB 연결 설정의 Host 정보로 등록한다
  • 여기서는 DataGrip(JetBrain 사의 DB 툴)을 예제로 사용하겠다.

Datagrip으로 연결

DataSource 설정

  • Data Source > MariaDB를 선택하여 설정 창을 연다.
    • 이름: 표시할 이름 입력
    • Host: AWS RDS 엔드포인트 입력
    • User: RDS 생성시 입력한 마스터 사용자명
    • Password: 마스터 사용자 비밀번호
    • Database: 접속시 연결할 기본 Database 이름 (입력 안해도 무방, 연결 후 Schma 선택 가능)
    • URL: 위의 입력 정보를 바탕으로 자동으로 세팅 된다. 반대로 URL을 입력하면 위의 정보가 세팅된다.
  • Test Connection을 클릭하여 커넥션 테스트

Test Connection 결과

 

설정 확인

use springboot_aws_study_webservice;

show variables like 'c%';

latin1 로 설정되어 안 바뀌는 모습
c 관련 설정 확인

ALTER DATABASE springboot_aws_study_webservice
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';

변경된 모습 확인

  • 최종적으로 옵션들이 변경된 것을 확인할 수 있다.

 

  • 타임존 확인하자

select @@time_zone, now();

타임존 확인 결과

 

  • 한글 데이터 입력 되는지 확인하자
create table test (
    id bigint(20) not null auto_increment,
    content varchar(255) default null,
    primary key (id)
) engine=InnoDB;

insert into test(content) values ('테스트');

select * From test;

한글 데이터 입력 결과

 

EC2에서 접속하기

$ ssh springboot-aws-study-webservice

EC2 접속

  • 접속이 완료되면 mysql을 설치하자
$ sudo yum -y install mysql
# ... 설치완료
  • 설치가 완료되면 mysql 접속하자
# mysql -u [계정] -p -h [호스트명]
$ mysql -u hoonmaro -p -h springboot-aws-study-webservice.cbdudkejudka.ap-northeast-2.rds.amazonaws.com
Enter password: [패스워드 입력]

# -p 옵션으로 패스워드 입력 단계 표시
# 접속 완료

# Database 확인
> show tables;

# 이전에 추가한 springboot_aws_study_webservice 목록에 존재하는 것 확인

최종 완료

 

지금까지 배운 것

  • AWS RDS 생성
  • 기본 파라미터 그룹 설정
  • 보안 그룹 설정
  • Datagrip DB툴을 이용하여 연결
  • 기본 파라미터 확인 및 수동 파라미터 설정
  • EC2에서 mysql 설치
  • EC2에서 RDS 연결

 

참고

  • 이동욱. 2019. 스프링 부트와 AWS로 혼자 구현하는 웹 서비스. 프리렉

'프로그래밍 > AWS' 카테고리의 다른 글

AWS EC2(아마존 리눅스2) 생성과 Java 13 설치  (0) 2020.06.28

+ Recent posts