[AWS RDS] MariaDB 프리티어 생성

Yeoonnii·2022년 12월 26일
1

AWS

목록 보기
7/9
post-thumbnail

새 프로젝트를 진행하려고 DB를 구축하는 과정에서,
팀원이 하나의 DB를 같이 사용하려면 클라우드 DB를 생성하여 공유해야한다는 것을 알게 되었다.

프로젝트 배포를 위해 AWS EC2를 이용했었는데,
AWS의 클라우드 DB 서비스인 RDB를 프리티어로 사용해 보기로 했다

참고링크 : okky - 스터디로 팀프로젝트할때 db관리는 어떻게하나요?
참고링크 : 클라우드 DB는 어떤것을 써야하는가?



AWS 데이터베이스 서비스 [RDS]

RDS란?

MySQL, PostgreSQL, MariaDB, Oracle BYOL 또는 SQL Server를 위한 관리형 관계형 데이터베이스 서비스

  • RDS 인스턴스 1개 무료 사용 가능
  • 월별 750시간까지 무료
  • 단, 해당 DB엔진이 db.t2.micro 타입만 사용 가능
  • 범용(SSD) 데이터베이스 스토리지 20GB 까지 무료
    ⇒ 만일 10GB를 사용하는 RDS 인스턴스 3개를 생성하면 과금이 되게 된다 (30GB이 되니까)
  • 데이터베이스 백업 및 DB 스냅샷용 스토리지 20GB 까지 무료
  • RDS 생성할때 오토 백업 안되게 주의
  • RDS 스토리지 자동 조정 활성화 해제
  • Multi-AZ와 고성능 I/O인 Provisioned IOPS Storate를 사용하지 않도록 설정

AWS 에서 DB를 사용하는 경우 아래 두가지 방법으로 진행이 가능하다

  1. EC2 인스턴스 내부에 마련하는 방법
  2. AWS RDS 로 별개의 인스턴스를 만들어서 붙이는 방법
    참고링크 : ec2에 maria db 직접 설치와 rds 사용의 차이점이 궁금합니다.
    RDS를 써야 하나요? EC2에 설치하면 안되나요?

Oracle을 사용하고 싶었지만 AWS RDS 프리티어에서는 오라클을 사용할 수 없어서 쿼리를 비롯한 전반적인 사용법이 비슷한 MariaDB를 사용하기로 했다.

EC2에 1개의 프리티어 인스턴스가 존재하는 경우 EC2와 별도로 RDS 1개를 프리티어로 사용가능 하며,
750시간이라는 사용시간은 EC2, RDS 각각 750시간씩 적용이 된다고 한다!
참고링크 : okky - aws 프리티어 사용에 관한 질문글입니다

프리티어 한도 내에서 RDS는 매월 750시간 무료로 사용가능하니
한달이 31일 x 24시간 = 744시간이므로 한달내내 1개의 인스턴스를 돌리면 과금이 발생하지 않는다.



AWS RDS로 MariaDB 생성하기

1. RDS MariaDB 인스턴스 생성

1-1. RDS 콘솔 진입

AWS 로그인 ⇒ 콘솔 ⇒ 서비스 ⇒ RDS 선택
🚨 오른쪽 상단의 리전을 서울로 설정해준다


[데이터베이스 생성] 버튼 누르기


1-2. MariaDB 인스턴스 생성

데이터베이스는 MariaDB를 선택
💡 프리티어에서는 MySQL, MariaDB, PostgreSQL만 사용가능하다.


템플릿 - 프리 티어 선택
프리 티어를 이용중이니 프리 티어를 선택해준다.


1-3. DB 인스턴스 설정

설정(Settings):

  • DB 인스턴스 식별자 : 내가 알아보기 위한 DB 인스턴스 이름이다. 자유롭게 설정해준다.
  • 마스터 사용자 이름/암호 : DB에 관리자권한으로 접속할때 필요하다. 잊어버리지 않게 유의한다!

일반적으로 MySQL의 마스터 사용자는 root로 설정되어있기 때문에
기본입력값이던 admin 대신 root를 사용하였다


1-4. DB 인스턴스 구성 설정

프리티어에서는 db.t2.micro, db.t3.micro, db.t4g.micro가 사용가능하다
db.t2.micro보다는 db.t3.micro, db.t4g.micro가 성능이 더 좋다고 한다

기본으로 db.t3.micro가 설정되어 있어 변경없이 그대로 진행하였다
(기존에는 t2.micro만 사용가능했는데 t3.micro, t4g.micro가 나중에 추가되었다고 한다!)

🚨 RDS 인스턴스 프리티어 사용시 월별 750시간 무료 제공은
db.t2.micro 타입만 해당
한다고 한다!

이 부분을 나중에야 확인하여 DB 인스턴스 삭제 후 재생성하여 사용하는 고생을 했으니,,😭
RDS 인스턴스 프리티어 사용시 처음부터 db.t2.micro로 설정하여 사용할 것!


  • 범용(SSD) 데이터베이스 스토리지는 프리티어에서 20GB까지 무료로 제공하니
    할당된 스토리지 값을 20으로 변경해준다

  • 스토리지 자동 조정 활성화는 반드시 체크해제 해준다!
    🚨 스토리지 자동 조정 활성화시 과금이 발생할 수 있음

  • Multi-AZ(Multi-Availability Zone, 멀티 가용성 존) 대기 인스턴스를 생성하지 마세요로 체크해준다


EC2 컴퓨팅 리소스에 연결 안 함으로 설정해주고
DB 외부접속을 위해 퍼블릭 엑세스 - 예 를 선택해주었다.


  • [추가 구성] 버튼을 누른 후 데이터베이스 옵션에서 RDS내에 생성될 데이터베이스 이름을 작성해준다.


  • 🚨 '자동 백업 활성화합니다'를 체크해제 해준다!
    자동 백업 활성화시 과금이 발생할 수 있음

혹시나 하는 마음에 자동 백업 활성화가 체크된 상태에서
1. 백업 보존기간을 0일로 설정하고
2. 스냅샷으로 태그 복사를 비활성화 해준 후
최종적으로 자동 백업 활성화합니다를 비활성화 해주었다


자동 마이너 버전 업그레이드는 새로운 마이너 데이터베이스 엔진 버전이 제공될 때 자동으로 데이터베이스를 업그레이드하는 기능인데 학습용으로는 상관 없다고 해서 비활성화 시켜두었다


그 외에 메뉴는 별도로 설정없이 기본값을 유지해준다.
여기까지 설정이 완료되었으면 [데이터베이스 생성] 버튼을 클릭해서 생성을 완료한다


1-5. DB 인스턴스 생성 상태 확인

상태가 생성중에서 사용 가능으로 변경될 때까지 기다려준다.





2. 파라미터 그룹 생성/설정

RDS를 생성한 후 아래의 설정을 필수적으로 해줘야 한다

  • time_zone : 시간 설정
  • character Set : 문자 인코딩 설정
  • collation : 데이터의 정렬기준을 위한 설정

캐릭터셋(character Set)은 테이블에 데이터가 채워진 상태에서 설정을 변경하는 경우 데이터의 손실이 우려되므로, 처음 데이터 설계 후 DB생성시 위와 같이 세팅을 잘 잡아둔 채 사용하는 것이 좋다.

타임존을 통한 시간값도 처음에 잘 테스트해서 적절한 timestamp 값을 확인하고 설정한 모든 언어가 사용가능한 형태인지를 확인후 DB를 사용하면 편리하게 데이터베이스를 이용할 수 있다.

생성한 데이터베이스 상태가 사용 가능 상태로 변경되었는지 확인 후 설정을 진행한다.


2-1. 파라미터 그룹 생성

화면 좌측 메뉴 ⇒ 파라미터 그룹 ⇒ 우측 파라미터 그룹 생성 버튼 클릭


생성시 Parameter group family은 반드시 생성한 RDS의 DB버전을 선택한다


생성된 parameter group을 클릭해, 상세 페이지로 이동한다
파라미터 편집 버튼을 클릭해 편집 모드로 전환해준다


2-2. Time Zone 설정

time_zone을 검색해 Asia/Seoul 선택 후 우측상단에 변경 사항 저장 버튼을 클릭해준다


2-3. Character Set 설정

utf8utf8mb4의 차이는 이모지 저장 가능 여부이다

아래의 항목들을 검색해 utf8mb4, utf8mb4_general_ci로 변경해준다.

utf8mb4
• character_set_client
• character_set_connection
• character_set_database
• character_set_filesystem
• character_set_results
• character_set_server

utf8mb4_general_ci
• collation_connection
• collation_server


2-4. DB수정하여 저장한 파라미터 적용

저장한 파라미터를 적용하기 위하여 데이터베이스 탭으로 이동해
수정하려는 데이터베이스를 선택하고 수정버튼을 클릭한다.


데이터베이스 옵션 ⇒ 파라미터 그룹 ⇒ 생성했던 파라미터 그룹 선택


즉시 적용 선택 ⇒ DB 인스턴스 수정


적용이 완료되는 경우 수정완료 알림창이 보인다


적용이 바로 되지 않는경우 데이터베이스 선택 후 작업재부팅을 눌러 준다


2-5. MariaDB 파라미터 그룹변경 오류사항

앞서 적용한 파라미터 중 character_set_database, collation_connection 2가지 항목은 MariaDB에서만 RDS 파라미터 그룹으로는 변경이 되지 않는다.

따라서 DB 연결 후 직접 아래의 쿼리를 실행해 변경해주어야 한다.

ALTER DATABASE 데이터베이스명
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';



3. RDS MariaDB 접속

3-1. 엔드포인트/포트정보 확인

상태가 사용 가능이 된 후 DB식별자를 클릭하여 DB에 접속하기 위한 정보를 확인한다.


DB에 접속하기 위해 엔드포인트/포트정보를 기억해둔다.


3-2. 인바운드 규칙 편집

보안 ⇒ VPC 보안 그룹 클릭

보안 그룹 ID 클릭

인바운드 규칙 편집 클릭

3-3. MySQL Workbench 설치(호환성문제로 HeidiSQL 사용)

Workbench는 MySQL에 최적화 되어있다고 한다.
Maria DB와의 호환성을 위해 Workbench가 아닌 HeidiSQL을 사용하였다.
3-4. HeidiSQL로 Maria DB접속하기 참고

MySQL 공식홈페이지에 접속 해서 Workbench를 다운로드 받는다


설치 완료 후 워크벤치를 실행하고,
MySQL Connections 이름 옆에 + 모양 아이콘을 클릭해서 계정을 새로 추가해준다.


  • Connection Name : 연결 이름 지정
  • Hostname : 엔드포인트 입력
  • Username : 1-3.에서 지정해준 마스터 사용자 이름 입력


Store in Vault를 클릭하고 1-3.에서 지정해준 마스터 암호를 입력한 후 OK 버튼을 클릭한다


새로 생성된 Connection을 클릭한다


호환성 문제 발생


호환성 경고 문제 Connection Warning (AWS RDS MariaDB)

구글링을 해보니 MySQL Workbench는 MySQL과 함께 작동하도록 설계되었다고 하는것 같다
경고창을 무시하고 진행해도 DB접속이 가능하지만 나중에 어떤 문제가 발생할지 모르기 때문에..

⇒ Workbench를 사용하지 않고 MariaDB 설치시 같이 설치 되었던 GUI툴인 HeidiSQL을 사용하여 접속해았다


3-4. HeidiSQL로 Maria DB접속하기

HeidiSQL을 사용하여 DB인스턴스 생성시 설정했던
마스터 사용자 이름/암호와 생성된 엔드포인트를 확인하여 입력해준다

  • 호스트명/IP : 엔드포인트 입력
  • 사용자/암호 : 마스터 사용자 이름/암호 입력

HeidiSQL을 사용하여 접속해보니 호환성 문제 없이 DB접속이 되는것을 확인 할 수 있었다.



참고링크
MariaDB 데이터베이스 생성 및 연결
AWS RDS로 MariaDB 생성 + 접속해보기
AWS RDS에서 MySql 이모지 처리 (utf8, utf8mb4)
AWS RDS 에서 MySql 한글 및 이모지 처리 (utf8, utf8mb4)
[AWS] RDS 파라미터 그룹 설정하기
Workbench 를 통해, AWS RDS에 접속환경 설정하는 방법
[AWS] 💰 프리티어 요금 폭탄 방지 💸 - 무료 사용량 정리

0개의 댓글