AWS

RDS_hands-on

JAEJUNG 2021. 8. 14. 14:37

RDS는 관계형 데이터베이스를 쉽게 생성하고 확장할 수 있는 AWS 서비스이다.

MySQL, Oracle, PostgreSQL 등의 상용 DB 뿐 아니라 AWS가 개발한 Aurora DB 또한 구축하여 사용할 수 있다. 

 

Overview

1. RDS 인스턴스 생성하기

2. EC2 인스턴스 생성하기

3. RDS 인스턴스에 접속 후 테이블 생성하기

4. RDS 스냅샷 생성하기

 

Step1. RDS 인스턴스 생성하기

[RDS] 서비스에서 [데이터베이스 생성]을 클릭한다.

 

여러 DB 엔진 중 이번 실습에선 MySQL을 사용한다.

 

Database에 접속하기 위한 로그인 정보를 설정하는 과정이며, 아래와 같이 마스터 ID와 PWD를 설정한다.

 

간단한 실습을 위해 t2.micro 유형을 선택한다.

 

실습을 위한 최소 용량인 20GB로 설정해주고, [스토리지 자동 조정 활성화] 옵션은 이번 실습에서 불필요하므로

비활성화 시켜준다.

 

[다중 AZ 배포] 기능은 장애가 발생했을 경우를 대비하여 다른 가용영역에 미리 예비 인스턴스를 프로비저닝하여

빠른 조치가 가능하도록 해주는 기능이다.

이번 실습에선 [대기 인스턴스를 생성하지 마세요]를 체크하여 진행하도록 한다.

 

[퍼블릭 액세스]에서 "예"를 체크해서 외부에서의 접속을 허용한다.

 

[초기 데이터베이스 이름]을 설정하고 아래 [백업]의 두 가지 옵션은 비활성화 시켜준다.

 

월별 추정 요금을 확인하고 [데이터베이스 생성]을 클릭한다.

 

기존 Database 서버를 설치하기 위해 겪었던 여러 복잡한 절차들이 RDS 서비스의 몇 번이 클릭만으로 데이터베이스가 생성되는 것을 확인할 수 있다.

 

Step2. EC2 인스턴스 생성하기

EC2 인스턴스를 생성하는 상세한 과정은 생략하며, 가용영역을 "ap-northeast-2a"로,

보안그룹을 기존 default 보안그룹으로 설정한다.

 

 

default 보안그룹에서 외부 SSH 접속을 위해 인바운드 규칙을 수정한다.

 

키 페어를 이용하여 EC2 인스턴스로 접속한다.

ssh -i [pem 파일] ec2-user@[인스턴스의 퍼블릭 ip]

 

아래와 같이 필요한 패키지 파일들을 설치한다.

[root@ip-172-31-0-231 ~]# yum -y update
[root@ip-172-31-0-231 ~]# yum -y install mysql

 

Step3. RDS 인스턴스에 접속 후 테이블 생성하기

이제 데이터베이스에 접속할 준비가 끝났다.

RDS 대시보드에서 조금 전 생성했던 RDS 인스턴스의 엔드포인트를 확인해보자.

 

다시 EC2 인스턴스로 돌아와서 DB 서버로 접속한다.

명령어는 다음과 같다.

mysql -h [RDS 엔드포인트] -u master -p

후에 Enter password: 가 표시되면 설정했던 패스워드를 입력해준다.

 

아래와 같이 DB 생성, 사용자 생성, 권한 할당, 테이블 생성 등을 테스트해본다.

MySQL [(none)]> create database mydb;
Query OK, 1 row affected (0.01 sec)

MySQL [(none)]> create user myuser@'%' identified by 'mypassword';
Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> grant all privileges on mydb.* to myuser@'%';
Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> use mydb
Database changed

 

실습에 사용할 Addr 테이블을 아래와 같은 스키마로 생성한다.

CREATE TABLE Addr(
       No                            int(3) not null auto_increment, 
       UserId                        varchar(10) not null, 
       Password                      varchar(10) not null, 
       Name                          varchar(15) not null, 
       Age                           int(1), 
       City                          varchar(10), 
       Phone                         varchar(12), 
       Country                       varchar(10), 
       PRIMARY KEY(No), 
       KEY UserId(UserId), 
       KEY Name(Name)
);

 

스키마를 생성한 후 Addr 테이블에 아래 데이터를 Insert한다.

INSERT INTO Addr VALUES('', 'user1', 'user1passwd', 'Hong Kil Dong', '17', 'Seoul', '010-1111-2222', 'KOREA');
INSERT INTO Addr VALUES('', 'user2', 'user2passwd', 'Kim Chel Hee', '15', 'Busan', '010-3333-4444', 'KOREA');
INSERT INTO Addr VALUES('', 'user3', 'user3passwd', 'Kim Yeong Hee', '27', 'Daejeon', '010-5555-6666', 'KOREA');
INSERT INTO Addr VALUES('', 'user4', 'user4passwd', 'Kim Cheol Soo', '57', 'DaeGu', '010-7777-8888', 'KOREA');
INSERT INTO Addr VALUES('', 'user5', 'user5passwd', 'Ahn Yeong', '31', 'Incheon', '010-9999-9999', 'KOREA');
INSERT INTO Addr VALUES('', 'user6', 'user6passwd', 'Lee Chel Soo', '29', 'Anhyang', '010-8888-7777', 'KOREA');
INSERT INTO Addr VALUES('', 'user7', 'user7passwd', 'John Jones', '44', 'Chicago', '010-7777-9999', 'USA');

 

아래 명령어를 통해 스키마와 실제 저장된 데이터를 확인한다.

MySQL [mydb]> DESC Addr;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| No       | int(3)      | NO   | PRI | NULL    | auto_increment |
| UserId   | varchar(10) | NO   | MUL | NULL    |                |
| Password | varchar(10) | NO   |     | NULL    |                |
| Name     | varchar(15) | NO   | MUL | NULL    |                |
| Age      | int(1)      | YES  |     | NULL    |                |
| City     | varchar(10) | YES  |     | NULL    |                |
| Phone    | varchar(12) | YES  |     | NULL    |                |
| Country  | varchar(10) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
MySQL [mydb]> select * from Addr;
+----+--------+------------+---------------+------+---------+--------------+---------+
| No | UserId | Password   | Name          | Age  | City    | Phone        | Country |
+----+--------+------------+---------------+------+---------+--------------+---------+
|  1 | user1  | user1passw | Hong Kil Dong |   17 | Seoul   | 010-1111-222 | KOREA   |
|  2 | user2  | user2passw | Kim Chel Hee  |   15 | Busan   | 010-3333-444 | KOREA   |
|  3 | user3  | user3passw | Kim Yeong Hee |   27 | Daejeon | 010-5555-666 | KOREA   |
|  4 | user4  | user4passw | Kim Cheol Soo |   57 | DaeGu   | 010-7777-888 | KOREA   |
|  5 | user5  | user5passw | Ahn Yeong     |   31 | Incheon | 010-9999-999 | KOREA   |
|  6 | user6  | user6passw | Lee Chel Soo  |   29 | Anhyang | 010-8888-777 | KOREA   |
|  7 | user7  | user7passw | John Jones    |   44 | Chicago | 010-7777-999 | USA     |
+----+--------+------------+---------------+------+---------+--------------+---------+
7 rows in set (0.00 sec)

 

Step4. RDS 스냅샷 생성하기

현재 Database의 상태를 저장하기 위해 스냅샷 기능을 제공한다.

 

생성했던 데이터베이스를 선택하고 [작업] - [스냅샷 생성]을 클릭한다.

 

[스냅샷 이름]을 지정하고 [스냅샷 생성] 버튼을 클릭한다.

 

스냅샷 생성에는 시간이 다소 소요되며, 생성이 완료되면 복원, 공유 등 여러 작업이 가능하다.

 

이것으로 RDS 실습을 마치도록 한다.

생성했던 EC2 인스턴스, RDS 인스턴스는 모두 삭제하도록 한다.