[SQL] AWS RDS, SQL File

쩡이·2023년 8월 26일
0

SQL

목록 보기
6/10

AWS RDS(Amazon Relational Database Service) : 아마존 웹서비스에서 제공하는 관계형 데이터베이스 서비스

AWS RDS

mysql -h "엔드포인트" -P 3306(포트) -u admin(username) -pPW(password)

AWS RDS 중지

RDS-데이터베이스-중지할 데이터베이스 선택 후 작업 버튼 클릭- 일시적으로 중지 클릭

AWS RDS 시작

RDS-데이터베이스-중지할 데이터베이스 선택 후 작업 버튼 클릭- 시작 클릭

SQL File

환경설정

miniconda에서
mkdir sql_ws : sql_ws파일 생성
C:\Users\yujeo\Documents\sql_ws>code . 현재 위치 폴더를 vscode로 연다

mysql -u root -ppassword : p뒤에 바로 비밀번호 입력시 바로 접속됨
mysql -u root -p databasename : databasename이라는 database로 접속한다는 의미, 이후에 비밀번호를 입력하면 해당 database로 바로 접속됨

MySQL에 접속해서 파일 실행시키는 방법

mysql -u root -p비밀번호 
source /path/파일이름
source 파일이름(현재경로에 있는 파일일 경우 path 생략가능)
또는
\. /path/파일이름

MySQL에 접속하지 않고 외부에서 파일을 실행

mysql -u root -p databasename < 파일명

mysql -u root -p비밀번호 
use databasename;
show tables;
desc tablename;
exit #연결종료

Database 백업

mysqldump -u username -p dbname > filename #특정 데이터베이스 백업하여 파일이름으로 저장
mysqldump -u username -p --all-databases > filename #모든 데이터베이스 백업하여 파일이름으로 저장

sql_ws 폴더에 zerobase라는 데이터베이스의 백업파일인 zerobase.sql이라는 파일이 생성

Table 백업

mysqldump -u username -p dbname tablename > filename #테이블을 백업하여 파일이름으로 저장

sql_ws 폴더에 celeb.sql이라는 파일명으로 zerobase라는 데이터베이스의 celeb 테이블의 백업파일이 생성

Table Restore

테이블을 백업한 SQL File을 실행하여 해당 테이블을 복구하거나 이전할 수 있다

Table Schema Backup

데이터를 제외하고 테이블 생성 쿼리만 백업

mysqldump -d -u username -p dbname tablename > filename # 특정 Table Schema Backup
mysqldump -d -u username -p dbname > filename # 모든 Table Schema Backup

zerobase라는 데이터베이스에 snl_show라는 테이블을 snl.sql파일로 데이터는 제외하고 백업

실습

문제1.
AWS RDS(database-1)의 zerobase 데이터베이스를 백업(AWS RDS database를 백업할 경우
--set-gtid-purged=OFF 추가)

mysqldump --set-gtid-purged=OFF -h "엔드포인트" -P 3306 -u admin -pPW zerobase > backup_zerobase.sql

문제2.
AWS RDS(database-1)에 admin계정으로 로그인

mysql -h "엔드포인트" -P 3306 -u admin -pPW

문제3.
zerodb라는 database 생성
(default character set utf8mb4)

create database zerodb defauly character set utf8mb4;

확인

문제4.
사용자(zero)에게 zerodb의 모든 권한 부여

grant all on zerodb.* to 'zero'@'%';

show grants for 'zero'@'%; 로 확인

문제5.
앞서 백업한 zerobase 백업 파일을 zerodb에서 실행

source backup_zerobase.sql
or
\. backup_zerobase.sql

확인하니 백업파일이 실행되어 zerobase의 모든 테이블이 들어가있다.

문제6.
police_station 테이블에 아래 데이터를 insert 하기 위한 SQL 파일을 생성

police_data.sql 이라는 파일을 생성해서

INSERT INTO police_station VALUES('서울특별시경찰청', '서울시 종로구 사직로8길 31');
INSERT INTO police_station VALUES('서울중부경찰서', '서울특별시 중구 수표로27');
INSERT INTO police_station VALUES('서울종로경찰서', '서울특별시 종로구 율곡로 46');
INSERT INTO police_station VALUES('서울남대문경찰서', '서울특별시 중구 한강대로 410');

위와 같이 작성후 저장

문제7.
SQL 파일을 실행하여
AWS RDS (database-1) zerobase의 police_station 테이블에 데이터를 insert하고 확인
데이터 파일이름을 police_data.sql로 하였음

source police_data.sql 

그런데 실행을 해보니 한글이 깨져서 나온다.

직접 insert 하면 한글이 제대로 나오지만, sql file로 insert를 하니까 깨져서 나온다. 원인을 찾아보니 명령 프롬프트의 인코딩 문제라고 한다.

명령 프롬프트에서 chcp를 입력하면 활성화 코드 페이지 : 949 라고 나온다.
파일을 읽어와서 명령 프롬프트에서 깨진 인코딩으로 넣어버려서 테이블이 utf8로 인코딩 되었더라도 계속 한글이 깨져서 나온다고 한다.
명령 프롬프트에 chcp 65001를 입력하고, sql file로 insert를 하면 제대로 나온다.

문제8.
AWS RDS (database-1) zerobase의 police_station 테이블을 SQL 파일로 백업
backup_police.sql을 파일명으로 했음

mysqldump --set-gtid-purged=OFF -h "엔드포인트" -P 3306 -u admin -p zerobase police_station > backup_police.sql 

문제9.
SQL 파일을 실행하여 AWS RDS (database-1) zerodb의 police_station 테이블을 zerobase와 동일하게 만들고 확인

mysql -h "엔드포인트" -P 3306 -u admin -p비밀번호 zerodb #aws rds(database-1)의 admin 계정 로그인

source backup_police.sql
또는
police_station 테이블이 있다면 insert 파일을 이용해도 됨
source police_data.sql

0개의 댓글