-
AWS RDS 구축Study/Server 2021. 7. 16. 16:35
우선 RDS를 사용하는 이유에 대해 알아보자.
RDS를 통해 DB를 따로 관리할 수 있고, 서비스를 운영하다 보면 많은 데이터의 저장이 요구되며, 만약 EC2에 문제가 생기면 데이터 베이스에도 접근하지 못한다는 문제가 발생한다. 그러므로 보통 기본 서버와 데이터 베이스 서버를 분리해서 관리를 한다. 이렇게 하면 좋은 점은 다음과 같다.
- N : 1의 확장성
- 보안에 좋음
- 편리성
1. RDS 생성
엔진 옵션을 MySQL로 하고, 템플릿은 무료로 사용하기 위해 '프리 티어'로 선택해준다.
외부에서 데이터베이스에 접속할 수 있도록 퍼블릭 액세스 가능을 '예'로 설정한다.
초기 데이터베이스 이름을 지정해야 하기 때문에 추가 구성을 하는 것이 좋다.
이제 '데이터베이스 생성' 버튼을 눌러 DB를 생성해주도록 한다. 상태가 사용 가능이 될 때까지 기다려준다.
2. 운영 환경에 맞는 파라미터 설정
EC2와 연결
ec2에서 rds로 접근 가능하게 하기 위해서 포트를 열어주는 과정이 필요하다. 앞서 생성했던 보안 그룹을 클릭하여 접근한다.
인바운드 규칙에 MySQL을 추가하고 사용자 지정으로 ec2의 보안그룹 코드를 설정해주고 저장한다.
외부에서 rds 접근 확인
Datagrip을 사용하여 외부에서 rds 접근이 가능한지 확인한다. 이때 Host에는 RDS의 엔드포인트를 넣고, 계정은 RDS 생성 시 만든 admin 계정으로 로그인하면 된다. 이후 Test Connection 버튼을 눌러 Succeeded가 뜨면 연결에 성공한 것이다. Apply > OK 순으로 버튼을 눌러준다.
접속이 잘 되었으면 다음 명령어를 입력하여 SQL을 작동시켜본다.
show variables like 'c%';
이를 통해 DB 문자형 관련 설정을 확인할 수 있다. 아직 utf8 설정이 제대로 안되었으므로 인코더 설정을 해야한다.
타임존 설정 이후 인코더 설정을 할 것이다.
타임존 설정
우선 RDS의 시간을 서울로 수정해준다. 수정하기 위해서 AWS RDS의 파라미터 그룹으로 이동한다.
기본적으로 default 파라미터가 존재하지만 default 파라미터 그룹은 수정이 불가능하기 때문에 새로운 그룹을 생성한다.
이때 RDS의 데이터베이스 이름을 yanolja가 아닌 anolja로 만들어버렸단 걸 알아버렸다..... 그래서 파라미터 그룹 이름은 hazel-db-group1로 해주었다..... 그리고 파라미터 그룹 패밀리는 mysql8.0으로 설정해준다.
생성 후 그 파라미터 그룹에 들어가서 time_zone이라고 검색한다. 수정 버튼을 누르고 time_zone의 값을 Asia/Seoul로 설정해준다.
변경 사항을 저장해준다.
서울 시간(현 시간)으로 잘 나오는 것을 확인할 수 있다.
Character_set utf-8 설정
타임존을 설정과 마찬가지로 character_set이라고 검색하여 해당 요소들을 모두 utf8(이모지 저장x)이나 utf8mb4(이모지 저장o)로 설정해준다. 이후 변경 사항을 저장해준다.
이번에는 collation을 검색하여 다음과 같이 설정해준다.
- collation_connection : utf8mb4_general_ci
- collation_server : utf8mb4_general_ci
이후 변경 사항을 저장해준다.
앞서 말했다시피 RDS 파라미터 그룹은 default가 기본으로 설정되어 있다. 따라서 새로 생성한 파라미터 그룹을 기본으러 설정해주어야 한다.
데이터베이스에서 만들어놓은 db를 선택해주고 수정 버튼을 누른다.
데이터베이스 옵션 부분에서 DB 파라미너 그룹을 default에서 새로 만든 파라미터 그룹으로 수정해준다.
계속 버튼으로 누르고 수정사항을 즉시 적용 시켜준다. 수정되는데 약간의 시간이 걸릴 수 있다.
수정이 완료되었다면 수정사항을 적용시키기 위해 재부팅해준다. 재부팅 또한 시간이 좀 걸린다.
RDS 한글 테스트
한글이 잘 출력되는지 확인하기 위해 다음과 같이 test라는 table을 생성한다.
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;
한글이 깨지지 않고 잘 나오는 것을 확인할 수 있다.
3. EC2에서 RDS 접속
ec2 인스턴스 서버 터미널에 다음과 같이 입력하여 mysql에 접속한다.
mysql -u 사용자명 -p -h Host주소
사용자명에는 rds 사용자명, host주소에는 rds 앤드포인트를 넣으면 된다.
앞서 한글이 잘 나왔는지 테스트해본 test table이 잘 있는지 확인해본다.
reference
https://luminitworld.tistory.com/94?category=975147'Study > Server' 카테고리의 다른 글
Node.js 환경구축 (0) 2021.07.22 야놀자 한방쿼리~ (0) 2021.07.20 서브 도메인 + Redirection (0) 2021.07.11 AWS 서버 구축 - 도메인(feat.가비아) + HTTPS(feat.let's encrypt) (3/3) (0) 2021.07.11 AWS 서버 구축 - MySQL 외부에서 접속하기, phpMyAdmin (2/3) (0) 2021.07.10