SQL File

eunbi kim·2024년 4월 4일
0
  • SQL File 실행
  • Database Backup / Restore
  • Table Restore / Restore
  • Exercises

SQL File 실행

SQL File 실행하기:

  1. 로그인 이후

비주얼 스튜디오를 이용하여 sql파일을 하나 만들어주었고,

비주얼 스튜디오 터미널에서 접근하려 했는데 ㅠ powershell에서 작동이 안돼
-> 실행 구문 앞에 .\ 붙이니까 해결됨 .\mysql -u root 이런식으루

  1. 외부에서 바로 실행

접속하지 않고 터미널에서 바로 실행하는 방법이다.

mysql -u root -p 접속db < sql파일명

'<'를 활용한다.

Database Backup / Restore

SQL File로 데이터베이스를 백업할 수 있다.

# 특정 db 백업
% mysqldump -u username -p dbname > backup.sql

# 모든 db 백업
% mysqldump -u username -p --all-databases > backup.sql

데이터베이스를 백업한 SQL file을 실행하여
그 시점으로 복구하거나 이전할 수 있다.

Sql file을 실행하는 방법과 동일하다.

백업한 sql 파일을 source로 실행

mysql> source zerobase.sql

Table Restore / Restore

테이블 단위로도 백업을 진행할 수 있다.
db명, table명을 명시

sql_ws % mysqldump -u username -p dbname tablename > backup.sql

Local에서 celeb 테이블을 백업하기!

sql_ws % mysqldump -u root -p zerobase celeb > celeb.sql

마찬가지로 table을 백업한 sql file을 실행하여
해당 테이블을 복구하거나 이전할 수 있다.

  • Table Schema Backup
    데이터를 제외하고 테이블 생성 쿼리만 백업할 수 있다.

-d <- 데이터는 빼고, 스키마만 백업하도록 함

# 특정 table schema backup
% mysqldump -d -u username -p dbname tablename > backup.sql

# 모든 table schema backup
% mysqldump -d -u username -p dbname > backup.sql

Local db에서 snl_show 스키마 백업하기!

sql_ws % mysqldump -d -u root -p zerobase snl_show > celeb.sql

Exercises

  • 실습 (1)
    mysqldump 과정에서 엑세스 거부 때문에 구글링의 늪에 또 빠졌었지
mysqldump -u root -p testdb > c:\sqldump\test.sql

결과적으로는 경로 설정을 잘못한 나의 문제였음.

testdb를 백업해주자!

zerobase.sql 파일 이름으로
만들어둔 폴더에 덤프파일 생성해주었고,

백업 받은 파일을
remote db에 보내주기!

RDS 사용가능으로 활성화하고
zerobase라는 이름으로 만든 db에 보내주었다.

source C:\Users\ekim1\Documents\SQL_WS\zerobase.sql  # 백업파일 경로

이제 로컬에서 작업한 celeb 테이블만 백업해보자!
sqldump이용하여 파일 생성해주고,
AWS 서버에 만든 remote db에 접속해서 source로 가져왔다.

source C:\Users\ekim1\Documents\SQL_WS\celeb.sql

Query OK, ...뜨면서 잘 백업되었고

로컬에서 실습했던 celeb 테이블 그대로 잘 백업하여 보인다.


  • 실습 (2)

전체적인 과정을 복습하는 예제 문제들로,

내가 보기 쉽게 정리하고자하는 데에 의미가 이뜸..ㅎㅎ

  1. AWS RDS (database-1)의 zerobase 데이터를 백업하세요.
    -> AWS RDS database를 백업할경우
    --set-gtid-purged=OFF 옵션을 추가한다.
mysqldump --set-gtid-purged=OFF -h "엔드포인트" -P 3306 -u admin -pzerobase zerobase > C:\Users\ekim1\Documents\SQL_WS\backup_zerobase.sql
  1. AWS RDS (database-1)에 admin 계정으로 로그인하세요.
mysql -h "엔드포인트" -P 3306 -u admin -pzerobase
  1. Database (zerodb)를 생성하세요.
create database zerodb default character set utf8mb4;
  1. 앞서 생성한 사용자(zero@%)에게 zerodb의 모든 권한을 부여하세요.
grant all on zerodb.* to 'zero'@'%';

  1. 앞서 백업한 zerobase 백업 파일(backup_zerobase.sql)을 zerodb에서 실행하세요.
use zerodb;
source C:\Users\ekim1\Documents\SQL_WS\backup_zerobase.sql

  1. police_station 테이블에 아래 데이터를 insert하기 위한 SQL 파일을 생성하세요.

  1. SQL 파일을 실행하여
    AWS RDS (database-1) zerobase db의 police_station 테이블에 데이터를 INSERT 하고 확인하세요.
use zerobase;
source C:\Users\ekim1\Documents\SQL_WS\insert.sql

허허

-> cmd 인코딩을 UTF-8로 바꿔주면 된다고 한다.

chcp 65001

를 입력하여 변경해주고~~ 다시 실행하면~~

한글이 잘 출력되었다.

  1. AWS RDS (database-1) zerobase의 police_station 테이블을 SQL 파일로 백업하세요.

여기서 백업을 할 땐
--set-gtid-purged=OFF 옵션을 추가해야 했고,
zerobase db 안에 있는 police_station만 backup_police.sql 파일로 저장해줘

mysqldump --set-gtid-purged=OFF -h "엔드포인트" -P 3306 -u admin -p zerobase police_station > C:\Users\ekim1\Documents\SQL_WS\backup_police.sql

덤프파일 잘 생성되었다.

  1. SQL 파일을 실행하여
    AWS RDS (database-1) zerodb의 police_station 테이블을 zerobase와 동일하게 만들고 확인하세요.
    -> 즉, 방금 백업한 파일을 zerodb에도 넣어라.
use zerodb;
source C:\Users\ekim1\Documents\SQL_WS\insert.sql

zerodb로 이동만 하고 방금 했던 insert 파일 source로 넣어주는 작업만 똑같이 하면 된다.


방법은 어렵지 않은데
이런저런 에러가 많아 구글링의 파도를 많이 탔던 sql file 백업과 복원

0개의 댓글