data engineering (AWS로 DB 만들기)

AWS RDB 만들기

AWS RDS 생성

  • 개발자나 필자 처럼 데이터를 분석하는 분들을 제외한 분들은 아마 Amazon이라는 단어를 듣게 된다면, 물건을 사고파는 뭐 그런 웹사이트 페이지를 떠올리는 분들이 많을 것이다. 허나, Amazon Web Service(AWS)는 Amazon의 그런 이미지와는 다르다. Cloud Service를 제공해주는 것이다.

  • 우선 가입을 해야한다. 참고로 대학생인 분들은 AWS educate로 가입하면 Credit을 받는 방법이 있는데, 뭐 꼭 현재 재학중이지 않아도 자신의 대학교 이메일로 인증이 가능하다면 AWS Educate에 Student신분으로 가입이 가능하다. 만약 대학생이 아닌 분들은 그냥 AWS(AWS와 AWS educate는 다르다.)를 가입해서 사용하면 된다. 참고로 1년 동안은 어느정도 free tier를 주어서 몇몇 서비스들은 무료로 오래 이용가능할 것이다. 필자도 작년 이용했었는데 기간이 만료되어 이번에 다시 다른 계정을 만들었는데, 새로운 계정을 만들면 또 free tier 이용이 가능한 것 같다.(개인적인 생각이지만 아마도 가입시에 적는 신용카드 번호가 다른 것이면 가능한듯 하다.) 또한, 가입시에 적는 신용카드는 결제 카드로 설정되며 free tier로 이용하는 것을 제외한 다른 이용료를 결제할 수 있다. 물론, 자동결제는 아니고 자신이 결제해줘야 하며, 결제를 해주지 않는다면 휴면 계정으로 전환시켜 서비스 이용이 불가능하다.(처음 결제되는 $1는 결제가 되는 카드인지 확인하는 확인용으로 알고있는데 나중에 결제 취소 해주므로 걱정하지 않아도 된다.)

  • 다음의 서비스 중에 우선 RDM을 생성해 줄 것이다.

AWS에서 제공하는 서비스

  • step 1) Create database를 클릭, method에서 직접 Customize하려면 Standard를 체크!(easy 방법은 이미 Instancd Size와 ram 등 사양들을 AWS Image처럼 만들어 놓은 형태로 되어있다.) 또한, Python을 통해 사용할 것이므로 MySQL로 만들 것이다.

AWS에서 DB 생성

  • version은 제일 stable한 5.7.22 version을 선택! Templete은 Free-Tier를 선택! 만약 바로 실무에서 사용해야 한다면 Production을 사용하면 된다. 필자는 연습용으로 만드는 것이므로 Free를 선택 !!!

AWS에서 DB 생성 1

  • DB instance identifier는 DB의 이름이고, 그 아래 Credentials Settings의 Master username은 DB 접속시 Master 권한을 인증할 ID와 password이다.

AWS에서 DB 생성 2

  • 아래로 내려 갈수록 저사양 DB이며, 아마 필자와 동일하게 Free-Tier를 선택했다면, 이미 맨 아래 단계로 설정 되어있을 것이다. Free-Tier의 경우에는 다른 사양을 선택할 수 없다.

AWS에서 DB 생성 3

  • Storage type
    • General Purpose : 주로 저장할 때 사용
    • Provisioned IOPS(Input Output Per Second): 데이터의 입출력을 빠르게 접근할 수 있게 해야할 경우 사용
  • Storage autoscaling
    • Enable storage autoscaling은 할당한 자원이 초과되어 다른 여유자원이 있다면, 자동으로 여유자원을 가져와 사용할 수 있게끔해주는 설정이다.

AWS에서 DB 생성 4

아래에 있는 설정 사항들은 모두 기본값을 설정했다. 이제 맨 아래로 가서 생성을 클릭하면 된다.

  • 참고) Multi-AZ deployment

    • 접속하는 User의 지역에 상관없이 동일하게 Performance를 내도록 할 때 사용
  • 왼쪽의 Database 탭을 클릭하면, 다음과 같이 본인의 DB에 대한 창이 나올 것이다. 아직 생성중일 것이다. 우선, 본인의 DB명을 클릭하자.

AWS에서 DB 생성 5-1
AWS에서 DB 생성 5-2

  • Connectivity & Security 탭을 살펴보면 Public accessibility가 No로 되어있을 텐데 이것을 Yes로 설정을 바꿔주어야 접속이 가능하다.

AWS에서 DB 생성 5-3
AWS에서 DB 생성 5-4
AWS에서 DB 생성 5-5

  • 아래 Connectivity & Security 탭에서 Security의 빨간네모칸 부분을 누르면 앞으로 DB에 접속이 가능한 프로토콜 설정하거나 관리할 수 있는 페이지로 이동한다.

AWS에서 DB 생성 6

  • edit 버튼을 눌러 DB에 connect 할 때 접속가능한 프로토콜을 설정해준다.

AWS에서 DB 생성 7

  • MySQL로 접속이 가능하게끔 설정을 추가해주고 저장한다.

AWS에서 DB 생성 8-1
AWS에서 DB 생성 8-2

  • 다시 Database 탭으로 돌아가면, 아마도 여러분의 DB가 만들어졌을 것이다.

AWS에서 DB 생성 9

Command Line으로 DB 접속하기

command 도움말을 먼저 확인하여 접속시 필요한 옵션들을 알아보자.

1
mysql --help

접속시에 필요한 간단한 옵션들은 다음과 같다.

-h, —host=name => Connect to host.
-p,—password[=name] => Password to use when connecting to server. If password is not given it’s asked from the tty.
-P, —port=# => Port number to use for connection or 0 for default to, in order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default (3306).
-u, —user=name => User for login if not current user.

접속!!

  • -p 옵션까지만 치면 password를 입력하라고 할 텐데, 입력하면 접속이 된다.
  • 아래에서의 end-point는 DB 생성한 후 해당 DB페이지를 보면 나와있다.
  • 혹시라도 잘 이해가 안가시는 분들을 위해 아래 필자의 접속 커맨드를 예시로 들 것이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# mysql -h end-point -P 3306 -u userId -p
mysql -h spotify.cgaj5rvtgf25.ap-northeast-2.rds.amazonaws.com -P 3306 -u hb0619 -p

# ----- MySQL DB 접속 후 -----------
# 생성되어 있는 DB목록 확인
SHOW TABLES;

# Create Table
CREATE TABLE people(first_name VARCHAR(20), last_name VARCHAR(20), age INT);

# 생성된 DB 사용
USE people

# 접속시 이미 만들어져 있는 테이블로 바로 사용가능하게 끔 하는 방법
# 이 방법은 생성되어 있는 데이터베이스에 한해서만 작동 가능하다.
mysql -h spotify.cgaj5rvtgf25.ap-northeast-2.rds.amazonaws.com -P 3306 -D people -u hb0619 -p