▪️ AWS에 데이터베이스 환경을 만들어보자 - AWS RDS
여기서는 mariaDB를 쓰는데, 오픈소스이므로 사양대비 가격이 저렴하고,두번째로 Amazon Aurora 교체 용이성 때문에 이를 사용한다. Amazon Aurora는 MySQL와 PostreSQL을 클라우드 기반에 맞게 재구성한 데이터베이스이다. 기존 MYSQL,PostgreSQL보다 3배이상의 성능을 제공한다. 더군다나 AWS에서 직접 엔지니어링 하고 있기때문에, 계속 발전하고 있다.
하지만 Aurora는 최저비용이 월 10만원 이상이기 때문에 필자는 MariaDB를 선택했다.
- DBMS에서 MariaDB를 선택한다.
- 프리티어를 선택한다.
- 스토리지 20으로 설정.
- 네트워크에서 퍼블릭 액세스를 [예]로 변경한다.
▪️RDS 운영환경에 맞는 파라미터 설정하기
- 타임존
- Character Set
- Max Connection
1. 왼쪽 카테고리에서 [파라미터 그룹] 탭을 클릭해서 이동한다.
2. 화면 오른쪽 위의 [파라미터 그룹 생성] 버튼을 클릭한다.
3. 방금 생성한 MariaDB와 같은 버전을 맞춰 그룹 패밀리를 생성한다.
4. 파라미터 그룹 클릭 후 이동한 상세페이지 오른쪽 위 파라미터 편집을 누른다.
5. time_zone을 검색하여 [Asia/Seoul]을 선택한다.
6. Character Set(8개 항목)을 모두 Utf8mb4로 변경한다. utf8은 이모지를 저장할 수 없지만, utf8mb4는 이모지를 저장할 수 있으므로 보편적으로 이를 많이 사용한다.
7. 마지막으로 Max Connection을 수정한다. 이는 원래 인스턴스 사양에 따라 자동으로 정해지지만, 현재 사양으로는 60개의 커넥션만 가능해서 좀더 넉넉한 값(150정도)으로 지정한다.
8. 설정이 다 되었다면 오른쪽 위의 [변경 사항 저장] 버튼을 클릭해 최종 저장한다.
이제 위에서 생성된 파라미터 그룹을 데이터베이스에 연결해보자.
- 데이터베이스에서 생성했던 DB를 누르고 수정을 누른다.
- 데이터베이스 옵션 > DB 파라미터 그룹을 위에서 만들었던 파라미터 그룹으로 변경한다.
- 저장을 누르고, 반영 시점을 [즉시 적용] 으로 한다.
- 간혹 파라미터 그룹이 제대로 반영되지 않을 때가 있으므로, 정상 적용을 위해 한번 더 재부팅을 진행한다.
▪️내 PC에서 RDS에서 접속해 보기
RDS의 보안 그룹에 본인 PC의 IP를 추가해보자.
EC2에 사용된 VPC 보안그룹의 그룹 ID를 복사해, 복사된 보안 그룹 ID와 본인의 IP를 RDS 보안 그룹의 인바운드로 추가한다.
위와 같이 설정한다.
이렇게 하면 EC2와 RDS 간에 접근이 가능하다.
이제 인텔리제이에서 Database Navigator 플러그인을 설치한다.
그 후 [ctrl+shift+a] 클릭 후 mariaDB를 클릭해 설정 정보를 등록한다. (책에서는 mySQL로 하라는데 나는 mySQL로 접속이 안되었다.)
use freelec_springboot3_webservice;
show variables like 'c%';
DB가 선택한 상태에서 위 명령을 입력해 현재의 character_set,collation 설정을 확인해본다.
아래 쿼리를 설정해 utf8mb4가 적용되지않고 latin1로 되어있는것을 바꾸어준다.
ALTER DATABASE freelec_springboot3_webservice
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
타임존도 아시아인지 아래로 확인
select @@time_zone, now();
+ 테이블 생성은 인코딩 설정 변경전에 생성되면 안된다. 만들어질 당시 설정값을 그대로 유지하고 있어, 자동 변경이 되지 않고 강제로 변경해야만 한다. 왠만하면 테이블은 모든 설정이 끝난 후 설정하는 것이 좋다.
▪️EC2에서 RDS에서 접근 확인
EC2에 접속 후 MySQL CLI 설치
sudo yum install mysql
설치가 다 되었으면 로컬에서 접근하듯 RDS 접속
mysql -u 계정 -p -h Host주소
RDS에 접속되었으면 실제로 생성한 RDS가 맞는지 아래 쿼리를 한번 실행해보기.