AWS 에서 데이터베이스를 서비스할 수 있는 RDS 설정 방법을 정리해보겠습니다.
(본 포스팅은 이동욱님이 집필하신 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스" 를 공부한 내용으로 작성되었습니다.)
1. 데이터베이스 생성하기
AWS 메뉴에서 RDS 메뉴를 클릭하면 메인에 표시되는 "데이터베이스 생성" 을 클릭합니다.
데이터베이스는 MariaDB 로 생성해보겠습니다. 아래처럼 선택합니다.
밑으로 내려보면 템플릿을 설정하는 부분이 있습니다. 현재 프리티어 계정을 사용하시면, 프리티어로 선택해주시면 됩니다.
엔진버전은 특별하게 버전을 신경쓰는 상황이 아니라면, 기본으로 선택된 버전을 선택해줍니다.
설정부분에선 RDS 인스턴스의 이름과 마스터 계정 정보를 입력합니다.
(마스터 계정 암호를 까먹으면 여러모로 귀찮아지니 까먹을거 같으면 어딘가에 따로 적어놓는걸 추천드립니다...)
인스턴스 구성은 db.t3.micro 로 설정해줍니다. 프리티어는 기본적으로 t2/t3/t4 micro 에 인스턴스를 생성할 수 있습니다. 별 다른 이유가 없다면 기본 선택된 db.t3.micro 로 설정합니다.
연결 항목에선 네트워크 유형이 IPv4로 되어있는지 확인해주시고, 하단에 퍼블릭 엑세스를 "예" 로 선택해주시면 됩니다.
그래야 공인 IP를 할당받아 DB접속 tool을 사용하여 쿼리를 날려볼 수 있습니다.
마지막으로 추가 구성에서 초기 데이터베이스 이름과 백업여부를 설정합니다.
초기 데이터베이스 이름은 RDS 가 생성될 때, 기본적으로 생성할 데이터베이스의 이름을 지정합니다.
백업의 경우, 프리티어에서는 지원되지 않는 기능입니다.(자동으로 백업하면 추가요금이 부과될 수 있습니다.)
프리티어 계정인 경우 반드시 백업 활성화 체크박스를 꺼주세요.
하단에 데이터베이스 생성 버튼을 클릭하여 데이터베이스를 생성합니다.
생성이 완료되면, 데이터베이스 메뉴에서 방금 생성한 데이터베이스가 목록에 조회됩니다.
2. 파라미터 그룹 설정
생성된 RDS에 적용해야할 설정들을 하나씩 해보겠습니다.
2.1 파라미터 그룹 생성
데이터베이스에 적용할 새로운 파라미터 그룹을 생성합니다.
파라미터 그룹 메뉴 우측에 파라미터 그룹 생성 버튼을 클릭합니다.
생성할 파라미터 그룹의 이름과 설명을 입력합니다.
파라미터 그룹 패밀리는 앞서 생성했던 데이터베이스의 버전에 따라 생성합니다.
앞에서 mariadb 10.6.11 버전을 생성했으므로, 파라미터 그룹 패밀리는 mariadb 10.6 으로 설정합니다.
설정이 완료됐으면, 하단에 "생성"버튼
생성한 파라미터 그룹은 목록에서 확인됩니다.
2-2. 타임존 설정
생성된 파라미터 그룹을 클릭하면, 우측에 "파라미터 편집" 버튼을 클릭합니다.
그리고 파라미터 필터링 입력란에 "time_zone" 을 입력하면, time_zone 항목이 조회됩니다.
해당 항목의 값을 "Asia/Seoul" 로 변경해줍니다.
2-3. character set 설정
데이터베이스의 character set 을 설정합니다.
파라미터 필터링 입력란에 "char" 로 검색합니다. 필터링 결과로 나온 항목 중에 변경할 항목은 아래와 같습니다.
- character_set_client
- character_set_connection
- character_set_database
- character_set_filesystem
- character_set_results
- character_set_server
해당 항목들을 "utf8mb4" 로 변경해줍니다.
(문자만 작성하는 경우, utf8 로도 충분하지만, 이모지 같은 이모티콘을 저장하기 위해 utf8mb4 를 많이 사용합니다.)
위 설정을 했다면, 파라미터 필터링 입력란에 "collation" 을 입력하면, 아래 두 항목이 조회됩니다.
- collation_connection
- collation_server
위 항목들을 "utf8mb4_general_ci" 로 변경해줍니다.
2-4. Max Connections 설정
RDS 의 max connections 를 아래처럼 설정합니다.
2-5. 변경내용 저장 및 데이터베이스에 연결
여태까지 수정한 파라미터 그룹을 적용시키기 위해 일단 변경사항을 저장합니다.
목록 상단 우측에 있는 "변경 사항 저장" 버튼을 클릭합니다.
변경 사항을 저장한 후, 변경된 파라미터 그룹을 생성한 데이터베이스에 적용시킵니다.
생성한 데이터베이스를 선택하여, "수정" 버튼을 클릭합니다.
수정 항목 중 "추가 구성" 항목에서 "DB 파라미터 그룹" 을 방금 생성한 파라미터 그룹으로 변경해줍니다.
하단에 "계속" 버튼을 클릭하면, 아래와 같이 현재 변경된 항목들이 나오고, 언제 수정사항을 적용할지 선택하는 항목이 나옵니다.
수정 예약은 "즉시 적용"을 선택하여, 바로 적용하도록 해줍니다.
그리고 하단에 "DB 인스턴스 수정" 버튼을 클릭합니다.
즉시 적용으로 적용해도, 데이터베이스에 적용되지 않을 수 있어서 수동으로 재부팅을 해주도록 합니다.
3. RDS 접속
이제 생성된 데이터베이스에 접속해보도록 하겠습니다. mariadb 는 mysql 과 비슷한 부분이 많기 때문에 mysql 에 사용하는
"MySQL Workbench" 를 사용해서 접속해보겠습니다.
3-1. RDS 보안그룹 설정
RDS 도 EC2 처럼 보안그룹을 설정해서 인바운드 규칙을 적용해야 합니다.
RDS 연결&보안 탭에서 VPC보안그룹을 클릭해줍니다.
해당 보안그룹에 아래 2가지 규칙을 적용합니다.
- 내 IP 에서 접속하는 3306 포트
- EC2에서 접속하기 위한 3306 포트
위 2개 중 "EC2에서 접속하기 위한 3306 포트" 는 EC2의 보안그룹 ID 를 가져와 ID 로 매핑을 해줍니다.
적용 후, 아래 "규칙 저장" 버튼을 클릭해 보안그룹을 적용해줍니다.
3-2. MySQL Workbench 로 RDS 접속
이제 MySQL Workbench를 이용해 방금 생성한 RDS로 접근해보겠습니다.
(MySQL Workbench 설치는 되어있다고 가정하겠습니다.)
먼저, 접속 host 확인을 위해 RDS 정보 중 "앤드포인트 및 포트" 정보를 확인해 줍니다.
해당 엔드포인트 정보를 복사해둡니다. 외우기가 힘드니까요..ㅎ
미리 설치해놓은 MySQL Workbench를 실행해줍니다.
커넥션 정보를 추가하는 버튼을 클릭해서, 새 데이터베이스의 접속 정보를 입력해줍니다.
Hostname 에 아까 확인해둔 RDS의 엔드포인트를 입력하고, Username 에는 RDS 생성 시 만든 마스터 계정 정보를 넣어줍니다.
연결 과정에서 패스워드 입력을 요구하면, RDS 생성 시 만든 마스터 암호 정보를 넣어줍니다.
접속에 성공하면, "use" 명령어를 사용해 최초에 생성된 데이터베이스를 사용하도록 해줍니다.
3-3. RDS 설정 확인
앞서 파라미터 그룹 에서 변경한 사항들이 데이터베이스에 잘 적용되었는지 확인해보도록 하겠습니다.
time_zone 은 아래 명령어로 확인해줍니다.
select @@time_zone, now();
변경한 character set 을 확인해보기 위해 아래 SQL 을 실행합니다.
show variables like 'c%';
해당 character set 중에 utf8mb4 로 변경이 안된 두 항목이 존재합니다.
- character_set_database
- collation_connection
해당 항목들은 RDS 파라미터 그룹으로는 변경되지 않아, 직접 쿼리를 통해 변경해주어야 합니다.
아래 쿼리를 실행하여 변경해줍니다.
ALTER DATABASE [데이터베이스명]
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';
마지막으로, 한글 데이터가 잘 들어가는지 확인해보도록 하겠습니다.
테스트 테이블을 임의로 생성하여 한글 데이터를 insert 하고 select 해보도록 합니다.
한글 데이터도 잘 들어가는 것을 확인할 수 있습니다.
'AWS' 카테고리의 다른 글
[AWS] EC2 접속 및 설정 추가 내용(for. Mac) (0) | 2023.03.28 |
---|---|
[AWS] EC2 생성하기(for. Mac) (0) | 2023.03.21 |
댓글