AWS RDS – MySQL – Amazon 아마존 RDS (1)

Last Updated on 5월 15, 2021 by 태랑(정현호)

1. Amazon RDS

Amazon Relational Database Service(RDS) 를 사용하면 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영 및 확장할 수 있습니다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시간 소모적인 관리 작업을 자동화하면서 비용 효율적이고 크기 조정 가능한 용량을 제공합니다. 사용자가 애플리케이션에 집중하여 애플리케이션에 필요한 빠른 성능, 고가용성, 보안 및 호환성을 제공할 수 있도록 지원합니다.


[Understanding Amazon Relational Database Service (RDS)]

Relational Database 의 PaaS형 클라우드 서비스를 의미하며 PaaS 형 Database 서비스를 표현하는 단어 중 많이 사용 되는 용어로 완전 관리형 이라는 표현이 여러 클라우드사에서 공통적으로 사용되며 그 단어의 의미대로 클라우드 서비스사가 데이터베이스에 대한 모든 관리를 해주는 서비스 형 데이터베이스를 의미 합니다.



2. RDS 데이터베이스 엔진 종류

AWS RDS 에서는 여러 데이터베이스 인스턴스 유형을 제공하며 Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle Database  및 SQL Server  6개 의 데이터베이스에 대해서 서비스를 제공되고 있습니다.



Oracle Database 는 BYOL(Bring-Your-Own-License) 이고 , SQL Server 는 license-included 로 되어 있습니다.
Amazon Aurora 는 MySQL, PostgreSQL 의 호환되는 관계형 데이터베이스 완전 관리형 서비스 입니다. Amazon Aurora 는 향후 별도 포스팅 예정 입니다.



3. RDS MySQL 생성

Amazon RDS 에서 제공 되는 관계형 데이터베이스중에서 MySQL RDS 생성을 진행 하겠습니다.

[참고] 포스팅에서 사용한 계정은 프리티어 계정에서 이벤트나 웨비나 참석 에 따른 크레딧이 포함된 계정을 사용하여 테스트를 진행하였습니다. 보통의 프리티어 에서도 RDS 를 사용할 수 있습니다. 그리고 리전은 서울 리전을 사용하였습니다.


1.  RDS 선택

메인 대시보드 에서  RDS 를 선택합니다.





2. 데이터베이스 생성

RDS Dashboard -> 데이터베이스 생성 을 선택 합니다.





3. 생성 방식 및 엔진 옵션

포스팅에서는 MySQL RDS 를 사용할 예정임으로 MySQL 을 선택을 하였습니다.





4. 버전 선택

포스팅 하는 시점에서 사용가능한 버전은 아래와 같습니다.





5. 템플릿 선택

운영(프로덕션) 인지 , 개발 테스트 유형인지 또는 프리티어 인지를 선택 합니다 포스팅에서는 프리티어를 선택 하였습니다.





6. DB 정보 입력

인스턴스 식별자(이름) 및 관리자 아이디,비밀번호 를 입력 합니다. 포스팅에서는 관리자 아이디를 admin 으로 사용하였으나 master 나 다른 아이디로도 사용 가능합니다.





7. 인스턴스 크기 와 스토리지 사이즈

인스턴스 크기 유형 과 스토리지 사이즈를 설정 합니다. 프리티어에서는 단일 AZ 에서 db.t2.micro 인스턴스를 사용 해야 함에 따라 프리티어로 선택하면 기본적으로 아래와 같이 선택되어 있습니다 또한 프리티어에서는 범용 SSD 20GB까지 제공됨에 따라 스토리지 사이즈도 기본적으로 20GB 로 설정되어 있습니다.





8. AZ 와 연결

가용성 및 내구성은 프리티어 같은 경우 단일 AZ 로 됨으로 선택이 불가합니다. 연결 항목에서는 VPC 를 선택해야 하며 퍼블릭 엑세스 가능 여부를 선택 할 수 있습니다 클라우드 서비스 마다 외부접속의 선택 가능은 각각 다르고 AWS RDS 에서는 퍼블릭 엑세스 선택이 가능 합니다.  포스팅에서는 퍼블릭 엑서스 : 아니요 를 선택 하고 진행 하겠습니다.





9. 보안 그룹 및 데이터베이스 인증

기존의 VPC 보안 그룹 선택하거나 새로 생성을 선택 가능하며 가용영역을 선택 할 수 있습니다.  EC2 에서 연결할 것임으로 EC2 에서 사용중인 기존 VPC 보안 그룹을 선택 하였습니다.

데이터베이스 포트는 기본 3306 을 선택하였으며, 데이터베이스 인증은 아래와 같이 선택할 수 있으며 포스팅에서에서는 암호 인증을 선택 하겠습니다.




EC2 에서 사용중인 보안 그룹 현황 





10. 추가 구성

추가 구성 을 클릭하면 상세 설정 옵션을 확인 할 수 있으며 아래와 같은 설정을 할 수 있습니다. 옵션이 다양하게 있는 만큼 원하는 유형으로 설정하시면 됩니다.








11. 데이터베이스 생성

모든 설정을 완료 하였다면 하단의 데이터베이스 생성 을 클릭 합니다. 아래는 프리티어를 선택하고 진행하였기 때문에 나타나는 화면 입니다.




프로덕션이나 개발,테스트 용으로 선택하였을 경우(프리티어가 아닐경우) 아래 처럼 월 과금 추정 금액이 표기 됩니다.





12. 생성 완료

생성이 완료 되면 아래와 같이 상태 : 사용 가능  으로 확인 됩니다.





4. 보안 그룹 설정

위에서 RDS 생성시 퍼플릭 엑세스 :아니요  로 선택하여 생성하였기 때문에 중간 EC2 인스턴스를 배스천 호스트로 사용하여 접속 하도록 하겠습니다.

[참고] bastion host(배스천 호스트) 는 외부망과 내부망이 분리된 환경에서 중간 역활을 하는 서버나 시스템을 의미하며 게이트웨이 역활 또는 방화벽 역활 등을 수행 합니다.


1. 엔드포인트 확인 및 보안 그룹 설정

RDS 를 선택 후 하단에서 연결&보안 탭을 선택 합니다 해당 탭에서 먼저 접속을 위한 엔드포인트 정보를 확인 합니다. 엔드포인트 정보가 접속 가능 주소 입니다. 그 다음 VPC 보안 그룹을 선택 합니다.





2. 인바운드 규칙 

보안 그룹에서 -> 인바운드 규칙 탭 -> 인바운드 규칙 편집 을 선택 합니다.





3. 규칙 추가

아래와 같이 TCP 3306 를 선택 하고 접속지는 사용자 정의 -> 보안 그룹 을 선택 합니다. 보안 그룹은 현재 사용중인 보안그룹을 선택 하면 됩니다 (EC2 와 같은 보안 그룹)

이렇게 설정하면 같은 보안 그룹내 서버(EC2나 라이트세일 등) 에서 생성한 MySQL RDS 로의 접속이 가능 합니다(직접 적인 외부 접속은 불가)





4. 규칙 저장

설정이 완료 되었다면 하단의 규칙 저장을 선택 합니다.



여기 까지 완료 되었다면 배스천 호스트에서 접속이 가능한 상태로 설정이 된 것 입니다.



5. RDS 접속

RDS 생성시 포스팅에서는 퍼블릭 접속 불가 형태로 생성하였기 때문에 배스천 호스트를 통해 사용할 것입니다.



1. 배스천 호스트를 통한 접속


1-1 MySQL 클라이언트 설치

배스천 호스트에서 접속을 RDS 로 접속하기 위해서는 배스천 호스트에 MySQL 클라이언트의 설치가 필요 합니다. 각 배포판 별로 설치는 아래와 같습니다.

# 우분투
user# wget https://dev.mysql.com/get/mysql-apt-config_0.8.16-1_all.deb
user# sudo dpkg -i mysql-apt-config_0.8.16-1_all.deb
user# sudo apt update
user# sudo apt -y install mysql-shell mysql-community-client rsync iputils-ping vim net-tools


# RHEL/CentOS7 기준
user# sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
user# sudo yum install -y mysql-community-client mysql-shell



1-2 Endpoint 확인

RDS 정보 하단에 연결&보안 탭에서 접속 주소인 엔드포인트 와 포트를 확인 합니다.





1-3 접속 

설치한 mysql 이나 mysqlsh 로 아래와 같이 접속 합니다.

• MySQL Client

User$ mysql -u admin -p -h rds1.xxxxxxxxxxx.rds.amazonaws.com
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 323
Server version: 8.0.23 Source distribution

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


• MySQL-Shell

User$ mysqlsh -u admin -p -h rds1.xxxxxxxxxxx.rds.amazonaws.com
Please provide the password for 'admin@rds1.xxxxxxxxxxx.rds.amazonaws.com': *************
MySQL Shell 8.0.23

Copyright (c) 2016, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type '\help' or '\?' for help; '\quit' to exit.
Creating a session to 'admin@rds1.xxxxxxxxxxx.rds.amazonaws.com'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 325
Server version: 8.0.23 Source distribution
No default schema selected; type \use <schema> to set one.
 MySQL  rds1.cntvcgghbl6c.ap-northeast-2.rds.amazonaws.com:3306 ssl  JS > \sql
Switching to SQL mode... Commands end with ;
 MySQL  rds1.cntvcgghbl6c.ap-northeast-2.rds.amazonaws.com:3306 ssl  SQL >




2. Workbench 를 통한 접속

2-1 SSH 키 교환

MySQL GUI 툴인 Workbench 를 사용하여 RDS 접속이 가능하며 중간 서버인 배스천 호스트를 이용해서 접속하는 방식을 사용 합니다. 배스천 호스트를 이용해서 접속해야 함으로 배스천 호스트의 개인키를 소지하거나 PC의 SSH 공개키를 배스천 호스트에 입력하는 둘 중 하나의 방식으로 배스천 호스트에 연결이 가능하도록 사전에 설정이 되어있어야 합니다.


2-2 Workbench 접속 설정

Workbench 를 실행 후 접속 설정에서 아래와 같이 입력을 합니다.

1. Connection Method 는 Standard TCP/IP over SSH 를 선택
2. SSH Hostname : 배스천 호스트의 IP와 SSH 포트인 :22 를 입력
3. SSH Key File : 배스천 호스트에 접속이 가능한 개인키 선택
4. MySQL Hostname : RDS 의 Endpoint 주소를 입력
5. User ID 와 패스워드 입력




2-3 Test Connection 

입력한 정보가 모두 정상이라면 아래와 같이 접속 성공 메세지를 확인 할 수 있습니다. 




여기 까지 RDS 기본 생성 및 접속 방법에 대해서 확인해보았습니다. 다음 포스팅에서는 읽기 복제본 생성(복제) 등을 다루도록 하겠습니다.




연관된 다른 글 

 

 

 

답글 남기기