Amazon RDS DB 인스턴스 생성 및 연결하기

콜트·2021년 1월 25일
2

라이징 프로그래머2

목록 보기
15/18
post-thumbnail

5주차가 시작되었다. 이번주차의 과제로는 현재 진행중인 클론 코딩 프로젝트에 RDS와 JWT를 적용하는 것이었다. 여기서는 AWS RDS를 적용하는 과정을 정리하고자 한다.

1. DB 인스턴스 생성

먼저 AWS에 로그인을 한 뒤 RDS를 검색해서 해당 서비스 화면으로 접근한다.

잊지말고 아래에서 보이는 것과 같이 우측 상단에 존재하는 지역(리전) 설정을 서울로 해주도록 하자.

접근한 화면에서 데이터베이스 탭에 들어가보면 우측에 데이터베이스 생성이라는 버튼을 통해 데이터베이스를 생성한다.

그러면 다음과 같은 화면이 나오게 되는데, 우리는 MySQL을 사용할 것이므로 MySQL을 선택하도록 한다.

아래에 보면 버전을 선택할 수 있는데, 본인이 사용하는 버전에 맞게 선택해주면 된다.

템플릿이라고 선택지가 있는데, 나는 무료로 AWS RDS를 이용할 수 있는 프리티어를 선택했다.

다음은 설정이다. DB 인스턴스 식별자에는 원하는 이름을 지정해주면 되며, 마스터 사용자 이름과 마스터 암호를 입력해야 한다. 여기서 사용된 사용자 정보로 실제 데이터베이스에 접근하게 되므로 반드시 기억하도록 해야한다.

그리고 다음과 같이 설정을 진행해준 뒤 데이터베이스를 생성해준다.





다음과 같이 데이터베이스가 잘 생성된 것을 확인할 수 있었다.

2. 파라미터 그룹 설정

데이터베이스를 사용하기에 앞서, RDS 운영환경에 맞는 파라미터를 설정해줘야 한다.

이를 위해서 초기 AWS RDS를 셋팅할 때 파라미터 그룹을 하나 생성하여 character setcollation 그리고 Amazon RDS MySQL DB 인스턴스의 함수, 절차 및 트리거를 활성화 하기 위한 log_bin_trust_function_creators 설정이 필요하다.

다음과 같이 파라미터 그룹 탭에 접근한 뒤, 우측 상단의 파라미터 그룹 생성 버튼을 통해 파라미터 그룹을 생성하도록 한다.

여기서 세부 정보 위쪽에 DB 엔진을 선택하는 항목이 있는데, 여기서 방금 생성한 MySQL과 같은 버전을 맞춰줘야 한다. 앞선 과정에서 5.7.xx 버전으로 생성했기 때문에 같은 버전대인 5.7을 선택해야 한다.

생성이 완료되면 다음과 같이 생성된 파라미터 그룹을 확인할 수 있는데, 우측 상단의 메뉴를 통해 해당 파라미터 그룹을 편집한다.

먼저 char을 검색하여 다음의 항목들을 utf8mb4로 변경해준다.

마찬가지로 collation을 검색하여 아래의 항목들을 utf8mb4_general_ci로 변경해준다. 여기서 utf8utf8mb4의 차이는 이모지 저장 가능 여부이다. utf8은이모지를 저장할 수 없지만, utf8mb4는 이모지를 저장할 수 있으므로 보편적으로 utf8mb4를 많이 사용하는 편이라고 한다.


다음으로는 time_zone을 검색해서 Asia/Seoul로 변경해주도록 한다.

그리고 Max Connection을 수정해준다. RDSMax Connection인스턴스 사양에 따라 자동으로 정해지는데, 현재 프리티어 사양으로는 약 60개의 커넥션만 가능하기 때문에 좀 더 넉넉한 값으로 지정해준다(150으로 지정). 이는 이후에 RDS 사양을 높이게 된다면 기본값으로 다시 돌려놓으면 된다.

마지막으로 log_bin을 검색한 뒤, log_bin_trust_function_creators1로 설정해준다.

log_bin_trust_function_creators 옵션은 MySQL이 function, trigger 생성에 대한 제약을 강제할 수 있는 기능이다. 해당 옵션의 default는 OFF이며, OFF상태의 경우 권한이 있더라도 trigger를 생성할 수 없고, function을 생성할 수 없다. 결론적으로 해당 옵션이 OFF 상태일 경우, root 권한이 없는 user가 생성한 function을 일반 user가 실행할 수 없게된다.

변경사항을 모두 확인한 뒤 저장하면 파라미터 설정은 완료된 것이다. 다만, 변경된 파라미터 설정을 데이터베이스에 적용하기 위해서 데이터베이스를 재부팅 해주어야 한다.

3. 파라미터 그룹과 데이터베이스 연결

파라미터 그룹 설정을 마치고 재부팅까지 완료한 뒤, 다음과 같이 데이터베이스가 사용 가능한 상태에서 다음 과정을 진행하도록 한다.

먼저, 해당 데이터베이스를 체크한뒤 수정 버튼을 통해 진입하도록 한다.

여러가지 설정을 변경할 수 있는데, 그 중에서 데이터베이스 옵션 - DB 파라미터 그룹에 방금 만든 파라미터 그룹을 선택해준다.

변경점을 확인한 뒤 아래에 보이는 것처럼 즉시 적용을 체크하고 DB 인스턴스 수정 버튼을 통해 설정을 변경하도록 한다.

만약 예약된 다음 유지 시간으로 하면 지금 하지 않고, 새벽 시간대에 수정이 진행되게 된다. 이 수정사항이 반영되는 동안 데이터베이스가 작동하지 않을 수 있으므로 예약 시간을 걸어두라는 의미지만, 지금은 크게 의미있지 않으므로(서비스를 오픈한 것이 아니기 때문) 즉시 적용하는 것이다.


간혹 파라미터 그룹이 제대로 반영되지 않을 때가 있는데, 정상 적용을 위해 한 번 더 재부팅을 진행해주도록 하자.

이제 로컬 PC에서 RDS에 접속하기 위해서 RDS의 보안 그룹에 본인 PC의 IP를 추가하도록 하자. RDS의 세부정보 페이지에서 [보안 그룹] 항목을 클릭해서 앞전의 EC2 인스턴스에서 보안 그룹을 설정해줬던 것과 마찬가지로 보안 그룹을 설정해주면 된다.

본인의 경우에는 앞서 RDS 인스턴스를 생성할 때 EC2 인스턴스의 보안 그룹으로 보안 그룹을 지정해주어 이미 설정이 다 되어있는 상태이다. 다음과 같이 확인할 수 있었다.

4. RDS 데이터베이스 연결

인텔리제이 Ultimate 버전(제가 사용중인)에서는 Database 플러그인을 제공하는데, 해당 플러그인을 이용하면 손쉽게 데이터베이스를 연결할 수 있다. 만약 해당 플러그인을 사용할 수 없다면 MySQL의 대표적인 클라이언트인 Workbench, SQLyog(유료), Sequel Pro(맥 전용), DataGrip(유료) 등등 여러가지 클라이언트 중에서 선택해서 이용하면 된다(저는 인텔리제이의 Database 플러그인을 이용해서 진행했습니다).

먼저, 인텔리제이를 실행하면 우측에 보이는 Database 탭을 눌러보면 아래와 같은 화면이 나오게 되며, +버튼을 눌러서 Data Source - MySQL을 선택해준다.

그리고 방금 생성했던 RDS의 엔드포인트를 확인하여 Host에 입력해준다.

또, RDS를 생성할 때 입력해주었던 사용자 정보를 각각 UserPassword에 입력해준 뒤, Test Connection 버튼을 통해 연결이 잘 되는지 확인해본다.

연결이 잘 되는걸 확인하였으면, Apply 버튼을 눌러 연결을 적용하면 다음과 같이 잘 연결된 모습을 확인할 수 있다.

5. EC2에서 RDS로의 접근 확인

추가적으로, EC2에서 RDS로의 접근은 다음과 같이 할 수 있다.

앞서 진행한 과정중에 WinSCP와 Putty로 EC2에 접근하기를 참고하여, EC2 인스턴스에 접속을 하였다면 로컬에서 MySQL에 접속했을 때와 마찬가지로 접근해주면 된다.

명령어는 다음과 같다.

mysql -u 계정 -p -h host주소

여기서 host주소란, RDS엔드포인트를 말한다.

패스워드를 입력하라는 메시지가 나오면 패스워드까지 입력해주면, EC2에서 RDS로 접속되는 것을 확인할 수 있을 것이다. 접속이 잘 되었다면 임의로 데이터베이스를 생성한 뒤, 그에 대한 확인을 통해 실제로 생성한 RDS가 맞는지 확인해보는 것도 좋을 것이다.


참고자료


profile
개발 블로그이지만 꼭 개발 이야기만 쓰라는 법은 없으니, 그냥 쓰고 싶은 내용이면 뭐든 쓰려고 합니다. 코드는 깃허브에다 작성할 수도 있으니까요.

0개의 댓글