새 프로젝트를 진행하려고 DB를 구축하는 과정에서,
팀원이 하나의 DB를 같이 사용하려면 클라우드 DB를 생성하여 공유해야한다는 것을 알게 되었다.
프로젝트 배포를 위해 AWS EC2를 이용했었는데,
AWS의 클라우드 DB 서비스인 RDB를 프리티어로 사용해 보기로 했다
참고링크 : okky - 스터디로 팀프로젝트할때 db관리는 어떻게하나요?
참고링크 : 클라우드 DB는 어떤것을 써야하는가?
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를 사용하는 경우 아래 두가지 방법으로 진행이 가능하다
- EC2 인스턴스 내부에 마련하는 방법
- 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
를 선택
💡 프리티어에서는 MySQL, MariaDB, PostgreSQL만 사용가능하다.
템플릿 -
프리 티어
선택
프리 티어를 이용중이니 프리 티어를 선택해준다.
설정(Settings):
- DB 인스턴스 식별자 : 내가 알아보기 위한 DB 인스턴스 이름이다. 자유롭게 설정해준다.
- 마스터 사용자 이름/암호 : DB에 관리자권한으로 접속할때 필요하다. 잊어버리지 않게 유의한다!
일반적으로 MySQL의 마스터 사용자는 root로 설정되어있기 때문에
기본입력값이던 admin 대신 root를 사용하였다
프리티어에서는
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. 스냅샷으로 태그 복사를 비활성화 해준 후
최종적으로 자동 백업 활성화합니다
를 비활성화 해주었다
자동 마이너 버전 업그레이드
는 새로운 마이너 데이터베이스 엔진 버전이 제공될 때 자동으로 데이터베이스를 업그레이드하는 기능인데 학습용으로는 상관 없다고 해서 비활성화 시켜두었다
그 외에 메뉴는 별도로 설정없이 기본값을 유지해준다.
여기까지 설정이 완료되었으면 [데이터베이스 생성] 버튼을 클릭해서 생성을 완료한다
상태가
생성중
에서사용 가능
으로 변경될 때까지 기다려준다.
RDS를 생성한 후 아래의 설정을 필수적으로 해줘야 한다
- time_zone : 시간 설정
- character Set : 문자 인코딩 설정
- collation : 데이터의 정렬기준을 위한 설정
캐릭터셋(character Set)은 테이블에 데이터가 채워진 상태에서 설정을 변경하는 경우 데이터의 손실이 우려되므로, 처음 데이터 설계 후 DB생성시 위와 같이 세팅을 잘 잡아둔 채 사용하는 것이 좋다.
타임존을 통한 시간값도 처음에 잘 테스트해서 적절한 timestamp 값을 확인하고 설정한 모든 언어가 사용가능한 형태인지를 확인후 DB를 사용하면 편리하게 데이터베이스를 이용할 수 있다.
생성한 데이터베이스 상태가
사용 가능
상태로 변경되었는지 확인 후 설정을 진행한다.
화면 좌측 메뉴 ⇒ 파라미터 그룹 ⇒ 우측
파라미터 그룹 생성
버튼 클릭
생성시 Parameter group family은 반드시 생성한 RDS의 DB버전을 선택한다
생성된 parameter group을 클릭해, 상세 페이지로 이동한다
파라미터 편집
버튼을 클릭해 편집 모드로 전환해준다
time_zone을 검색해 Asia/Seoul 선택 후 우측상단에
변경 사항 저장
버튼을 클릭해준다
utf8
과 utf8mb4
의 차이는 이모지 저장 가능 여부이다
아래의 항목들을 검색해
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
저장한 파라미터를 적용하기 위하여 데이터베이스 탭으로 이동해
수정하려는 데이터베이스를 선택하고 수정
버튼을 클릭한다.
데이터베이스 옵션 ⇒ 파라미터 그룹 ⇒ 생성했던 파라미터 그룹 선택
즉시 적용
선택 ⇒ DB 인스턴스 수정
적용이 완료되는 경우 수정완료 알림창이 보인다
적용이 바로 되지 않는경우 데이터베이스 선택 후
작업
⇒재부팅
을 눌러 준다
앞서 적용한 파라미터 중 character_set_database
, collation_connection
2가지 항목은 MariaDB에서만 RDS 파라미터 그룹으로는 변경이 되지 않는다.
따라서 DB 연결 후 직접 아래의 쿼리를 실행해 변경해주어야 한다.
ALTER DATABASE 데이터베이스명 CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_general_ci';
상태가
사용 가능
이 된 후 DB식별자를 클릭하여 DB에 접속하기 위한 정보를 확인한다.
DB에 접속하기 위해 엔드포인트/포트정보를 기억해둔다.
보안 ⇒ VPC 보안 그룹 클릭
보안 그룹 ID 클릭
인바운드 규칙 편집 클릭
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
을 사용하여 접속해았다
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] 💰 프리티어 요금 폭탄 방지 💸 - 무료 사용량 정리