AWS RDS 인스턴스 초기 설정
RDS
인스턴스를 생성했으면, 초기 설정을 해보자.
Maria DB(MySQL)
가 설치된 RDS
를 기준으로 작성되었습니다.
파라미터 그룹 설정
[AWS] RDS 인스턴스 생성하기 - 글의 설정을 기본으로 따르고, DBMS만 Maria DB
로 설정했다고 생각하고 진행합니다.
먼저 RDS
의 파라미터를 수정하기 위해 파라미터 그룹을 생성할 필요가 있습니다.
RDS
서비스 콘솔로 들어와서, 왼쪽 메뉴 중 파라미터 설정
을 클릭
파라미터 그룹 생성
버튼을 눌러 그룹을 생성할 것입니다.
나는 이미 일련의 과정을 수행했기 때문에 aws-springboot-webservice
라는 파라미터 그룹이 있습니다.
세 개의 옵션이 있는데, 파라미터 그룹 패밀리
옵션이 가장 중요하며
반드시 이전에 생성한 RDS
의 DBMS와 같은 버전을 선택해야 합니다.
예를 들어 Maria DB 10.6.xx
버전을 선택했다면, 위 그림과 같이 mariadb 10.6
을 선택하면 됩니다.
그룹 이름
, 설명
칸에는 자기 나름의 파라미터 그룹 이름과 설명을 기입하면 됩니다.
다 되었으면 생성
버튼을 클릭
이제 생성된 파리미터 그룹 이름을 클릭하면
해당 그룹이 가지고 있는 파라미터 목록을 볼 수 있습니다.
파라미터 편집
을 누릅니다.
Time Zone
이제 Time Zone
을 수정하기 위해
파라미터 검색 칸에 time_zone
을 검색하면 아래에 time_zone
행이 나온다. 해당 행의 값을 Asia/Seoul
로 설정해야 합니다.
Character Set
다음으로 Character Set
을 변경하기 위해
time_zone
을 수정했던 페이지에서 똑같이 검색해서 수정하면 됩니다.
기본적으로 Maria DB
는 한글 데이터 값을 받지 않으므로, 파라미터를 수정하여 한글 데이터도 저장할 수 있도록 합니다.
변경해야하는 항목과 변경 값은 다음과 같습니다.
character_set_client
-utf8mb4
character_set_connection
-utf8mb4
character_set_database
-utf8mb4
character_set_filesystem
-utf8mb4
character_set_results
-utf8mb4
character_set_server
-utf8mb4
collation_connection
-utf8mb4_general_ci
collation_server
-utf8mb4_general_ci
character_set
항목들은 utf8mb4
,
collation
항목들은 utf8mb4_general_ci
로 바꾸면 됩니다.
utf8
과 utf8mb4
의 차이는 이모지(이모티콘) 저장 가능 여부입니다.
많이들 utf8
이 익숙하겠지만 이왕이면 상위호환인 utf8mb4
로 설정
Max Connection
RDS
의 Max Connection
은 인스턴스 사양에 따라 자동으로 정해집니다.
현재 프리티어는 기본적으로 60
개의 커넥션만 가능해서 좀 더 넉넉한 값으로 수정합니다.
max_connections
를 검색한 뒤 값을 150
으로 설정하고
이후에 RDS
사양을 높이게 된다면 기본값으로 다시 돌려놓으면 됩니다.
RDS
에서 자동으로 커넥션 값을 조정할 것입니다.
오른쪽 위 변경 사항 저장
버튼을 눌러 저장
Wait Timeout
만약에 자기 프로젝트 빌드시 too many connections
라는 옵션이 뜰 수 있습니다.
MySQLdb.OperationalError: (1040, 'Too many connections')
이 오류는 현재 프로젝트에서 유지되고 있는 커넥션의 수가 너무 많다는 뜻입니다.
Amazon Aurora MySQL 인스턴스에 연결할 때 [“너무 많은 연결(Too Many Connections)”] 오류가 발생하는 이유는 무엇인가요?
RDS
의 커넥션 연결 수를 늘려서 해결할 수도 있지만, 커넥션의 timeout
대기 시간을 줄이는게 더 효율적입니다.
파라미터 그룹에서 wait_timeout
파라미터의 값을 수정하여
기존에는 28,800
로 8시간으로 지정이 되어있을 텐데, 이 값을 180
, 즉 3분으로 줄입니다.
작은 프로젝트라면 10
까지 낮춰도 되며
MySQLdb.OperationalError: (2006, 'Server has gone away')
만약 위와 같은 오류가 뜬다면, wait_timeout
값을 너무 적게 줬다는 뜻이니 늘이도록 합니다.
파라미터 그룹과 데이터베이스 연결
이제 이렇게 설정한 파라미터 그룹을 데이터베이스와 연결하기 위해
메뉴에서 데이터베이스
-> 인스턴스 클릭 -> 수정
버튼 클릭
수정 페이지에서 내리면 추가 구성
- 데이터베이스 옵션
항목에서 DB 파라미터 그룹
과 옵션 그룹
이 보입니다.
처음에 DB 파라미터 그룹
은 default
로 설정되어 있을텐데, 이를 방금 만든 파라미터 그룹으로 바꾸어주고
스크롤을 끝까지 내려 계속
버튼을 누릅니다.
수정 예약
항목에서 기본으로 설정되어 있는 옵션 대신 즉시 적용
을 선택하고 DB 인스턴스 수정
버튼을 클릭
데이터베이스 상태가 수정 중
에서 사용 가능
으로 바뀌면, 변경 사항 정상 적용을 위해 작업
- 재부팅
으로 재부팅을 하면 성공입니다.
마무리
프로젝트를 진행하다 Character Set
파라미터를 수정하지 않아서 MySQL Workbench
에서 수정하려고 했다가, 세션이 겹치는 문제가 있어
이왕이면 RDS
를 생성하자마자 바로바로 적용해주자.