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

Share

Last Updated on 10월 3, 2023 by Jade(정현호)

안녕하세요  
이번 포스팅은 AWS 클라우드의 데이터베이스 서비스인 RDS for MySQL 에 대해서 확인해보려고 합니다.   

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 를 사용할 수 있습니다. 그리고 리전은 서울 리전을 사용하였습니다.


3-1  RDS 선택

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




3-2 데이터베이스 생성

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




3-3 생성 방식 및 엔진 옵션

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




3-4 버전 선택

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




[참고] MySQL 8.0 버전을 사용하시면서 lower_case_table_names 를 적용 하시려면 8.0.19 버전 이상을 선택하셔서 진행하시면 되며 아래 포스팅을 참조하셔서 생성하시면 됩니다.


[참고] RDS for MySQL 8.0.30 버전 부터 추가 비용 없이 쓰기 처리량 최대 2배 증가 가능한 RDS Optimized Writes 기능이 도입 되었습니다. (현재는 일부 리전만 지원)



3-5 템플릿 선택

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




3-6 DB 정보 입력

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




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

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




3-8. AZ 와 연결

가용성 및 내구성은 프리티어 등급에서는 다중 AZ(Multi-AZ)는 불가하며 단일 AZ 만 선택 가능 합니다.

Multi-AZ의 장점은 Mater 인스턴스의 장애에 대한 대비를 할 수 있는 부분 이외에 RDS의 maintenance 작업 시 대기 인스턴스의 부터 작업 후 스위칭 하는 형태로 진행됩니다.

RDS maintenance 작업 시 Multi-AZ 이 사용되는 경우는 RDS의 OS 버전 업그레이드, hardware-maintenance 등의 작업이 있습니다.

이런 유형의 작업들에 대해서 Multi-AZ 를 사용할 경우 인스턴스 교체(Take-Over) 되는 기간 동안 다운타임이 발생함으로 Single-AZ 에 비해 다운 타임이 짧아진다는 장점이 있습니다.

Multi-AZ에 대한 더 자세한 사항은 다음 포스팅을 참조하시면 됩니다. (연재 3번째글)


연결 항목에서는 VPC 를 선택해야 하며 퍼블릭 엑세스 가능 여부를 선택할 수 있습니다 클라우드 서비스 마다 외부접속의 선택 가능은 각각 다르고 AWS RDS 에서는 퍼블릭 엑세스 선택이 가능 합니다.  

포스팅에서는 퍼블릭 엑서스 : 아니요 를 선택하고 진행하겠습니다.




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

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

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




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




3-10. 추가 구성

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

DB 파라미터 그룹은 사전에 생성 후에 RDS 생성시에 선택하는 방법을 하시는 것도 RDS 인스턴스를 한 번 더 재부팅 하지 않아도 되는 장점이 있으며, MySQL 8.0 에서 lower_case_table_names=1 을 설정하려고 할 경우에도 사전에 파라미터 그룹을 생성 후에 RDS 를 생성하는 지금 단계에서 선택을 해야 합니다.

• 관련 내용 포스팅 링크 : 파라미터 그룹 / lower_case_table_names




위에서 자동 백업 을 RDS 생성시에 비활성화를 하게 되면 2가지 경우에서 RDS 인스턴스의 재부팅이 한번 필요 합니다

1) 향후에 자동 백업 활성화시
RDS 생성시 자동 백업을 활성화하지 않고 생성 이후 활성화시(보존기간 1일 이상) 인스턴스 재기동이 필요합니다.
자동 백업이 활성화가 되어있지 않아도 별도로 생성하는 수동 스냅샷은 생성할 수 있습니다.
다만 수동 스냅샷으로는 "특정 시점으로 복구" 및 읽기 전용 복제본 생성/설정 이 불가 합니다.

자동 백업 활성화시 아래와 같이 인스턴스가 한번 재시작 후에 백업이 수행되는 것을 확인할 수 있습니다




2) 읽기 전용 복제본 설정시
위에서 설명한 것처럼 자동 백업 본이 없다면 읽기 전용 복제본을 설정 및 생성을 할 수가 없습니다.




그 외 추가적인 필요 유무에 따라서 체크 또는 언체크 해서 생성을 진행하시면 됩니다.



로그 보내기 기능은 선택한 로그를 CloudWatch Logs 서비스로 전송하여 활용하는 기능으로 인스턴스가 생성된 이후 기능을 활성화 할수 있으며 활성화 과정에서 인스턴스 재시작은 발생하지 않습니다.

March 01, 2022, 5:06:22 PM UTC
Backing up DB instance

March 01, 2022, 5:08:26 PM UTC
Finished DB Instance backup

March 01, 2022, 8:18:08 PM UTC
CloudWatch Logs Export enabled for logs [error, slowquery]



성능 개선 도우미 

프리티어 등급인 Micro 와 Small 클래스에서는 성능 개선 도우미(Performance Insights) 가 활성화되지 않으며 t클래스의 경우  Medium 부터 사용할 수 있습니다.





참고) Aurora MySQL 의 경우 성능 개선 도우미(Performance Insights) 를 db.t2, db.t3 지원되지 않으며, db.t4g 는 3 버전(MySQL 8.0과 호환) 및 2.10.1 이상 2 버전(MySQL 5.7과 호환)에서만 지원됩니다.



성능 개선 도우미 활성화시 RDS 인스턴스의 재시작 없이 사용 가능 합니다.
- 적용시 최근 발생 이벤트 현황

1) xxxxx 10, 2022, 3:55:04 PM UTC
   Performance Insights has been enabled

2) xxxxx 10, 2022, 3:55:04 PM UTC
   Monitoring Interval changed to 60

3) xxxxx 10, 2022, 3:56:15 PM UTC
   Finished updating DB parameter group



3-11. 데이터베이스 생성

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




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




3-12. 생성 완료

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


         

4. 보안 그룹 설정

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

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


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

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





4-2. 인바운드 규칙 

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





4-3. 규칙 추가

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

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





4-4. 규칙 저장

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



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

5. RDS 접속

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

배스천 호스트를 통한 접속

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 >

        

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 기본 생성 및 접속 방법에 대해서 확인해보았습니다. 다음 포스팅에서는 읽기 복제본 생성(복제) 등을 다루도록 하겠습니다.


이어지는 글




연관된 다른 글 

 

 

 

 

 

 

0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x