Hayden's Archive
[AWS] AWS RDS로 DB 구축 및 EC2 서버와 연동 본문
참고 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
RDS 인스턴스 생성
- RDS(Relational Database Service)는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스
- 서버에 직접 데이터베이스를 설치할 수도 있지만 AWS에서는 모니터링, 알람, 백업, HA 구성 등을 지원하는 관리형 서비스인 RDS를 제공
- 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있도록 지원
- 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스가 가능
RDS 서비스 화면으로 가서 좌측 메뉴 Databases 선택 - Create database 선택
토이 프로젝트에서 데이터베이스로 MariaDB를 사용할 계획이므로 MariaDB를 선택하겠다.
프리티어 선택
DB 인스턴스 이름을 입력하고 마스터 사용자 이름과 비밀번호를 입력한다.
프리티어에서는 t2.micro 사양만 제공해서 자동 선택되므로 패스
스토리지 설정은 일단 기본 세팅(스토리지 유형 : 범용(SSD) / 할당된 스토리지 : 20GiB / 스토리지 자동 조정 활성화)으로 가겠다
역시 해당되지 않으므로 패스
Public access만 Yes로 변경한다.(이후 보안 그룹에서 지정된 IP만 접근하도록 막을 예정)
Additional configuaration 토글을 열면 DB 포트를 지정할 수 있는데 나는 MariaDB 기본값인 3306으로 가겠다
데이터베이스 이름만 정해주고 나머지는 기본값으로 가겠다
(DB parameter Group은 이후 진행)
Create database를 누르고 데이터베이스가 다 생성되면 아래와 같은 화면이 뜬다.
RDS 운영환경에 맞는 파라미터 설정
좌측 메뉴 Parameter groups 클릭 - Create parameter group 클릭
세부 정보 위쪽에 DB 엔진을 선택하는 항목이 있는데, 위에서 생성한 MariaDB와 같은 버전으로 맞추고 Parameter group 이름과 설명을 적고 Create 선택
이렇게 생성된 파라미터 그룹을 선택해서
Modify 클릭해서 편집 모드로 전환
time_zone을 Asia/Seoul로 설정
character_set_ 항목들은 utf8mb4로, collation_ 항목들은 utf8mb4_general_ci로 변경
(utf8은 이모지를 저장할 수 없지만, utf8mb4는 이모지를 저장할 수 있어서 보편적으로 utf8mb4를 많이 사용함)
RDS의 Max Connection은 인스턴스 사양에 따라 자동으로 정해짐. 현재 프리티어 사양으로는 약 60개의 커넥션만 가능.
그러니까 좀 넉넉한 값으로 지정하자
(이후에 RDS 사양을 높이게 되면 기본값으로 다시 돌려놓으면 됨)
설정이 완료되었다면 Continue 선택 - Apply Changes 선택
이렇게 생성된 파라미터 그룹을 데이터베이스에 연결해보자.
좌측 메뉴 Databases 선택하고 데이터베이스를 선택해서 Modify를 클릭한다.
Additional configuration의 DB parameter group에서 위에서 생성된 파라미터 그룹으로 변경하고 아래 Continue 버튼을 클릭한다.
수정 사항 적용 시점을 선택할 수 있는데 예정된 다음 유지 관리 기간에 적용하지 않고 즉시 적용을 선택하고 Modify DB instance를 클릭한다.
(서비스가 오픈되었을 경우에는 예정된 다음 유지 관리 기간에 적용하는 것이 좋다)
간혹 파라미터 그룹이 제대로 반영되지 않을 수도 있으므로 정상 적용을 위해 한 번 더 재부팅한다.
RDS의 Security Group에 내 PC IP 추가
- RDS 서비스의 Databases에서 DB 선택하고 Connectivity & security - Security에서 VPC security groups 선택
- EC2 서비스의 INSTANCES - Instances에서 해당되는 인스턴스의 Security Groups 클릭한 뒤 Security group ID 복사
- 복사한 EC2에 사용된 Security group ID와 내 IP를 RDS Security Group의 Inbound Rules에서 Edit inbound rules로 변경
- 인바운드 규칙 유형 : MYSQL/Aurora(프로토콜 TCP / 포트 3306 자동 선택됨)
- 첫번째 줄 : EC2의 Security Group 추가
- 이렇게 하면 EC2와 RDS 간 접근 가능
- EC2의 경우 이후에 2대, 3대가 될 수도 있는데, 매번 IP를 등록할 수는 없으니 보편적으로 이렇게 Security Group 간에 연동 진행
- 두번째 줄 : 현재 내 PC의 IP 등록
EC2에서 RDS 접근 확인
PuTTY로 EC2에 접속한다 (참고 포스팅 : https://hayden-archive.tistory.com/460 )
아래 명령어로 MySQL CLI를 설치한다(실제 EC2의 MySQL을 설치해서 쓰는 게 아니라 명령어 라인만 쓰기 위한 설치)
$ sudo yum install mysql
설치가 완료되면 RDS에 접속한다
$ mysql -u 계정 -p -h Host주소
패스워드를 입력하라는 메시지가 뜨면 비밀번호를 입력한다.
아래는 EC2에서 RDS로 접속된 화면
실제로 생성한 RDS가 맞는지 데이터베이스를 확인해보자
SHOW DATABASES;