AWS RDS로 데이터베이스 환경을 만들어보자

짱J·2022년 7월 5일
0

AWS

목록 보기
2/6
post-thumbnail

RDS 인스턴스 생성

RDS (Relational Database Service)는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스이다.

RDS 서비스로 들어가 데이터베이스 생성을 클릭한다.

  • 데이터 생성 방식 선택 - 표준 생성
  • 엔진 옵션 - MariaDB
  • 템플릿 - 프리티어

🍮 MariaDB를 추천하는 이유

  • 가격 - 상용 데이터베이스인 오라클, MSSQL이 오픈소스인 MySQL, MariaDB, PostgreSQL보다 동일 사양 대비 가격이 더 높음
  • Amazon Aurora 교체 용이성

🍮 MySQL 대비 MariaDB의 장점

  • 동일 하드웨어 사양으로 MySQL보다 향상된 성능
  • 좀 더 활성화된 커뮤니티
  • 다양한 기능
  • 다양한 스토리지 엔진

MySQL에서 MariaDB로 마이크레이션 해야할 10가지 이유

DB 인스턴스 식별자, 마스터 사용자 이름, 암호는 원하는대로 설정하고,
인스턴스 구성은 건드리지 않고 default값을 사용했다.

RDS 인스턴스 유형별 특징 보러 가기

스토리지 자동 조정 활성화가 체크되어 있으면 해제해준다.

  • 프리티어 최대 스토리지는 20GiB
    • 이거 때문에 과금됨 절 대 로 외 워

모두 default 값을 이용해주었고, 퍼블릭 액세스만 로 바꿔주었다.

이것도 default 값을 사용한다.

이제 설정이 끝났다.

몇 분 기다리면 아래와 같이 데이터베이스가 생성된 것을 확인할 수 있다.


파라미터 그룹 설정

  • 타임존
  • Character Set
  • Max Connection

이 세 가지 설정을 차례대로 진행하자.

왼쪽 카테고리에서 파라미터 그룹 탭을 클릭한다.
나는 default 파라미터 그룹을 사용할 것이기 때문에 default.mariadb10.6을 클릭한다.

‼️ 인스턴스 생성 시 선택한 MariaDB의 버전과 동일해야 함을 주의하자!

파라미터 편집을 클릭 후, time_zone을 검색하여, Asia/Seoul 을 선택해준다.

다음으로 char을 검색해서 나오는 6개 항목 모두 utf8mb4로 변경해주자.

  • utf8 - 이모지 저장 X
  • utf8mb4 - 이모지 저장 가능

그 다음 collation 을 검색해서 나오는 2개 항목은 utf8mb4_general_ci로 변경해준다.

마지막으로 Max Connection을 수정하자.
RDS의 Max Connection은 인스턴스 사양에 따라 자동으로 정해지는데, 기존 60에서 좀 더 넉넉한 150으로 바꾸자!

파라미터 그룹 설정 끝!
이렇게 생성된 파라미터 그룹을 데이터베이스에 연결하자.

왼쪽 카테고리에서 데이터베이스를 클릭하고, 아까 만든 데이터베이스를 클릭한 뒤 수정 버튼을 누른다.

파라미터 그룹을 다음과 같이 변경해준다.

즉시 적용으로 DB 인스턴스를 수정해준다.


내 PC에서 RDS 접속해보기

로컬 PC에서 RDS로 접근하기 위해 RDS의 보안 그룹에 PC의 IP를 추가하자.

VPC 보안 그룹 클릭

위 사진처럼 EC2에서 사용된 보안 그룹의 그룹 ID를 인바운드 규칙에 추가하자.
이제 설정 진짜 끝!

나는 DataGrip을 사용해서 간단한 테스트를 진행하고자 한다.

먼저 DataGrip을 실행하여 새로운 프로젝트를 생성해주었다.

사진과 같은 순서로 MariaDB 클릭한다.

그리고 위와 같이 설정들을 채워준다.

  • Name - Database의 이름
  • Host - RDS의 엔드포인트 (아래 사진의 연두 박스 참고) / Host를 입력하면 URL 칸은 자동으로 채워진다.
  • User & Password - 인스턴스 생성 시 입력한 마스터 사용자 이름과 마스터 암호를 입력

이제 다 입력했으면 Test Connection을 눌러 RDS 연결이 잘 되는지 확인해보자

...?

오류가 있었는데, 없어졌슴니다 ! ^ㅅ^
원인은 바로바로 connect timed out이 뜬 것은 DB는 열려있지만, 연결에 문제가 생긴 것 때문이다.

https://velog.io/@banjjoknim/AWS-RDS-적용하기#4-rds-데이터베이스-연결
⬆️ 위 블로그의 인바운드 규칙을 참고하여 아래와 같이 인바운드 규칙을 수정해주었다.

3306 포트를 기존에 보안 그룹에 한해서만 열어주던 것을 모든 IPv4, IPv6에 대해 열어주어 해결했다.
이렇게 되면 모르는 사람이 내 DB에 접근할 수 있다는 불안함이 있지만... 지금 만든 RDS는 연습용이기도 하고 중요하지 않으니 일단 이렇게 처리하자 ^ㅅ^... 하지만 나중에 프로젝트를 할 때는 다른 대처 방안을 찾아봐야겠지 !

Test Connection도 잘 되니 OK를 눌러 최종 저장하자.

물범 아이콘이 그려진 freelec 을 우클릭하여 New를 클릭한 뒤, 다음과 같이 새로운 스키마를 하나 만들자.

-- 쿼리를 실행할 데이터베이스 선택
use freelec_springboot2_webservice;

위와 같이 쿼리를 작성한 뒤 command + enter을 누르면 쿼리가 실행된다.

이번에는 character_set이 잘 설정되었는지 확인해보자

show variables like 'c%';

흠 몇 개가 잘 되지 않아 있군
쿼리를 통해 직접 변경하자.

alter database freelec_springboot2_webservice
character set = 'utf8mb4'
collate = 'utf8mb4_general_ci';

굿 ^ㅅ^ 만약 변경 후에 값이 변하지 않았다면, RDS를 재부팅해보자! 나도 처음에는 값이 변하지 않아 뭐지?했는데 재부팅을 하니 해결되었다!

이제 타임존도 확인해보자

select @@time_zone, now();


굿이애옹 ~

마지막으로 한글명이 잘 들어가는지 간단한 테이블 생성과 insert 쿼리를 실행해보자.

💯💯💯 !!!

이렇게 RDS 설정도 모두 마치었다!


EC2에서 RDS에서 접근 확인

EC2에 접속하여 RDS에 접근해보자.
MySQL 접근 테스트를 위해 MySQL을 설치하자.

sudo apt install mysql-server

sudo mysql -u (계정) -p -h (Host 주소)

명령어를 입력하여 RDS에 접속한다.

show databases;

그 후 데이터베이스 목록을 불러오는 쿼리를 통해 RDS에 제대로 접속된 것인지 확인한다.

굿 !!!

이렇게 RDS의 설정도 끝나고 EC2와 RDS 간 연결도 잘 된 것을 확인하였다!

profile
[~2023.04] 블로그 이전했습니다 ㅎㅎ https://leeeeeyeon-dev.tistory.com/

0개의 댓글