웹서버가 견딜 수 있는 능력치가 정해져 있으므로 서버와 데이터베이스를 분리해서 운영하는 것이 효과적이다. 데이터베이스와 서버 분리 시 장점은 다음과 같다.
AWS ec2 인스턴스 내부에 데이터베이스를 설치하지 않고 rds를 사용하여 데이터베이스를 구축해보겠다. 다음은 AWS 사이트에서 가져온 rds에 대한 설명이다.
Amazon Relational Database Service(Amazon RDS)는 AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스이다. 이 서비스는 산업 표준 관계형 데이터베이스를 위한 경제적이고 크기 조절이 가능한 용량을 제공하고 공통 데이터베이스 관리 작업을 관리한다. AWS 클라우드에서 관계형 데이터베이스를 실행해야 하는 이유는 AWS가 관계형 데이터베이스의 까다롭고 번거로운 관리 작업을 대부분 대신하기 때문이다.
검색창에서 rds를 입력하고 데이터베이스 생성 버튼을 누른다
MySQL을 사용할 것이기 때문에 엔진 옵션에서 MySQL을 선택했다. 해당 실습에서는 MySQL 8.0.28 버전을 선택했다.
템플릿은 프리 티어로 선택한다.
DB 인스턴스의 이름, 마스터 사용자 이름, 비밀번호를 입력한다.
프리티어를 선택했기 때문에 버스터블 클래스 밖에 이용하지 못한다.
프리티어의 경우 스토리지를 최대 20GiB 밖에 사용하지 못한다.
VPC 외부의 EC2 인스턴스에서 연결할 것이기 때문에 퍼블릭 액세스를 변경한다.
마지막으로 추가 구성에서 초기 데이터베이스 이름을 정하고 맨 아래 데이터베이스 생성을 누른다.
MySQL은 기본적으로 영어로 설정이 되어있다. 따라서 한글 데이터를 넣고자 한다면 UTF-8로 인코딩 설정을 해야한다.
좌측 메뉴창에서 파라미터 그룹으로 이동하여 파라미터 그룹 생성을 누른다.
파라미터 그룹 이름을 정하고 생성한다.
다시 파라미터 그룹에 들어가보면 생성한 파라미터 그룹을 볼 수 있다. 생성한 파라미터 그룹을 눌러보자.
파라미터 값은 파라미터 편집을 통해 수정할 수 있다.
우선 time_zone 설정을 Asia/Seoul로 설정한다.
character_set로 시작하는 모든 파라미터의 값을 utf8mb4로 변경한다. utf8로 변경해도 되지만 utf8은 이모지 저장 시 에러가 뜨기 때문에 utf8mb4로 변경했다.
마찬가지로 collation을 검색하고 나오는 결과들의 값을 utf8mb4_general_ci로 변경하고 변경사항을 저장한다.
이렇게 만든 파라미터 그룹을 데이터베이스에 적용시켜보겠다.
생성해둔 데이터베이스 인스턴스로 이동 후 수정 버튼을 누른다.
추가 구성의 DB 파라미터 그룹을 만들어둔 파라미터 그룹으로 변경하고 계속 버튼을 누른다.
수정 예약을 즉시 적용으로 변경하고 DB 인스턴스 수정을 누른다.
파라미터 그룹 변경까지 진행했으면 데이터베이스 인스턴스 재부팅하는 것을 추천한다.
DataGrip으로 rds 접속하기 전에 인스턴스의 보안 규칙에서 인바운드 규칙을 수정해야 한다.
DB 인스턴스에서 해당하는 인스턴스를 선택하고 보안 그룹을 선택한다.
외부에서 접속할 것이기 때문에 인바운드 규칙을 편집한다.
내 IP주소로만 rds에 접근할 것이기 때문에 내 IP를 선택하고 규칙을 저장한다.
DataGrip을 실행하고 해당 화면처럼 MySQL을 선택한다.
Host에는 rds의 엔드 포인트, User와 Password에는 인스턴스 생성할 때 작성했던 마스터 사용자 이름, 비밀번호를 기입하고 아래의 Test Connection을 눌렀을 때 다음과 같이 나오면 정상적으로 연결 된 것이다. 마지막으로 OK를 누르자.
다음 명령어를 통해 변경했던 파라미터 값들이 정상적으로 반영된 것을 확인할 수 있다.
참고
https://webisfree.com/2020-05-07/[%EC%84%9C%EB%B2%84%EA%B5%AC%EC%B6%95]-%EB%8B%A8%EC%9D%BC-%EC%84%9C%EB%B2%84%EC%99%80-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%84%9C%EB%B2%84%EC%9D%98-%EB%B6%84%EB%A6%AC%EA%B0%80-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%A0%EA%B9%8C
https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Welcome.html
https://www.youtube.com/watch?v=G6O-u6FkjpY
https://luminitworld.tistory.com/94?category=975147
혹시 test connection 에서 DBMS: MySQL (no ver.) Case sensitivity: plain=mixed, delimited=exact
Connection timed out: connect. 이렇게 뜨면 어떻게 해야하나요.. ㅜㅜ