Chapter
1. AWS RDS
(1) 계정 생성 및 데이터베이스 설정
(2) MYSql에 외부 접속하기
2. SQL File
(1) SQL File 생성 및 실행
(2) 데이터베이스 백업과 복원
(3) 테이블 백업과 복원
지난 시간까지 SQL 기초과정을 마치고, 이제는 좀 더 심화된 내용을 배우게 되었다. 이번 시간에는 AWS에서 제공하는 관계형 데이터베이스 서비스를 이용하여 coul상에 database를 구축해본다.
AWS 서비스는 처음이용해보는 것이어서 회원가입과 개인설정까지 전부 마친 다음, 데이터베이스까지 만들어 외부 접속 또한 가능케 설정해주는 기초작업을 해주었다.(https://portal.aws.amazon.com/billing/signup#/start/email)
설정할 때 알아두면 좋은 주의점이 몇 가지 있다.
이제 외부 접근 설정까지 마쳤다면 외부접속을 해본다.
지난시간까지 cmd로 mysql을 접속할 때는 다음과 같은 코드를 사용했다.
mysql -u root -p비밀번호
하지만 AWS RDS로 만든 데이터베이스를 이용해 mysql에 외부 접속하려면 부여된 정보를 이용해 코드를 작성해야 한다.
mysql -h "엔드포인트” -P 포트번호 -u 사용자이름 -p비밀번호
이제 새로운 데이터베이스와 외부 유저를 설정해주자.
# utf8mb4: 한글+이모지 사용 설정
CREATE DATABASE zerobase DEFAULT CHARACTER SET utf8mb4;
#확인
SHOW DATABASES
# 유저 생성
CREATE USER ‘zero’@’%’ IDENTIFIED BY ‘1234’
# 유저 확인
USE mysql;
SELECT host, user FOR user;
# ‘zero’권한 확인
SHOW GRANTS FOR ‘zero’@’%’;
# 모든 권한 부여
GRANT ALL ON zerobase.* TO ‘zero’@’%’;
# 확인
SHOW GRANTS FOR ‘zero’@’%’;
.
.
.
.
sql file은 sql쿼리를 모아놓은 파일로, 이번에는 SQL file을 여러 개 만들어서 다양한 작업을 해보자.
이번 실습은 작동을 좀더 편리하게 하고 결과를 쉽게보기 위해서 VSCode를 사용했다.
먼저 sql file을 모아놓을 새로운 폴더를 만들어서 그 안에서 VSCode를 작동시켰다. 시스템이 실행되었다면 새로운 파일을 만들 때 확장자명에 '.sql'를 입력하면 새로운 sql파일을 생성할 수 있다.
'police_station'테이블이 든 sql file(test01.sql)을 만들어서 로컬환경의 zerobase 데이터베이스에서 불러와보자.
다음과 같이 테이블 구조 생성 코드가 든 파일을 먼저 만들었다.
그 다음 zerobase db를 사용해서 코드 파일을 실행했다.
use zerobase;
# 파일 실행
source test01.sql
이번에는 외부환경에서 sql파일을 바로 실행해보자.
먼저 새로운 sql file(test2.sql)을 만들어서 서울시 관서별 5대 범죄 현황 정보를 테이블을 만들었다.
cmd에서 mysql로 진입할 때 바로 파일명까지 적어주면 되는데, 실행할 db 옆에 '> 실행파일.sql' 을 적으면 된다.
mysql -u 유저이름 -p db이름 < 실행파일.sql
테이블을 확인해보자.
.
.
이번에는 sql파일을 사용해서 db를 백업해보자.
다음과 같이 특정 db만을 백업할 수도 있고, 모든 db를 백업할 수도 있다.
mysqldump -u username -p dbname > backup.sql #특정 db backup
mysqldump -u username -p --all-databases > backup.sql # 모든 db backup
우선 zerobase.sql을 만들어서 zerobase데이터베이스를 백업해보자.
mysql -u root -p zerobase > zerobase.sql
다음과 같이 백업파일을 확인할 수 있다. 그런데 코드를 살펴보면 기존에 만들어졌던 테이블을 drop시킨다음에 새로 만들어서 실행된다는 것을 살펴볼 수 있다.
이제 데이터베이스를 복원해보자. 복원할 때에는 sql file을 실행하는 것으로 간단하게 해결할 수 있다.
AWS RDS서비스를 이용해서 데이터베이스를 복원해보자.
먼저 접속한 다음, 기존에 있던 zerobase db에 sql파일을 사용해서 로컬 db와 똑같게 복원해주었다.
복원이 완료되었으면 로컬 zerobase db와 테이블 목록이 같은지 확인한다.
복원이 잘 되었음을 확인할 수 있다.
.
.
데이터베이스뿐만 아니라 그 안의 하나의 테이블만을 복원할 수도 있다. 마찬가지로 sql파일을 이용한다.
mysql -u 유저이름 -p db이름 table이름 > 복원파일.sql
로컬 zerobase 데이터베이스의 celeb 테이블을 백업시켜보자.
mysql -u root -p zerobase celeb > celeb.file
복원파일이 확인이 되었으면 이번에도 AWS RDS의 zerobase db를 이용해서 테이블을 복원해본다.
먼저 이전에 로컬 db를 복원해서 테이블이 이미 존재하므로 celeb테이블을 삭제한 다음 복원시켰다.
# 이미 존재하는 celeb 테이블 확인
Show tables;
# celeb 테이블 제거
DROP celeb;
# celeb 테이블 복원
source celeb.sql
# 복원 확인
show tables;
# 구조와 전체 데이터 확인
desc celeb;
select * from celeb;
복원이 확인되었다.
뿐만아니라 테이블 복원 방법을 이용해서 sql file에 테이블 구조생성 코드를 넣어주면 구조만을 백업할 수도 있다.