SQL 심화2 - 05~08 - Database Backup, Database Backup Restore, Database Backup Table Restore_(Chapter 12. SQL File)

HA_·2024년 4월 11일

Chapter 12-3. Database Backup

1. Database Backup

SQL File 로 Database 를 백업할 수 있다.

  • 특정 Database Backup
mysqldump -u username -p dname > backup.sql
  • 모든 Database Backup
mysqldump -u username -p --all-databases > backup.sql

2. Database Backup 예제

• zerobase Database Backup

mysqldump -u root -p zerobase > zerobase.sql

  • VSCode에서 zerbase sql 확인

Chapter 12-4. Database Restore

1. Database Restore

데이터베이스를 백업한 SQL File 을 실행하여 그 시점으로 복구하거나 이전 할 수 있다.
(SQL File 을 실행하는 방법과 동일함)

2. Database Restore 예제

• AWS RDS (database-1) 서비스가 사용 가능한 상태에서 접속

sql_ws % mysql -h "엔드포인트" -P 3306 -u admin -p

• zerobase Database 이동

SHOW DATABASES;

USE zerobase;

• AWS RDS (database-1) 의 zerobase Database 를 복원

source zerobase.sql


• 결과 확인

show tables;

Chapter 12-5. Table Backup

1. Table Backup

Table 단위로도 백업할 수 있다.

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

2. Table Backup 예제

• Local Database 에서 celeb Table 을 백업합니다.

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

• VSCode 에서 celeb.sql 파일을 확인합니다

cf) 한글이 깨지는 문제가 있어 이를 해결하기 위해 다음의 명령어 실행

Chapter 12-6. Table Restore

1. Table Restore

Table 을 백업한 SQL File 을 실행하여, 해당 테이블을 복구하거나 이전할 수 있다.
(SQL File 을 실행하는 방법과 동일함)

2. Table Restore 예제

• AWS RDS (database-1) 의 zerobase 에서 celeb 테이블을 삭제합니다.

sql_ws % mysql -h 엔드포인트 -P 3306 -u admin -p zerobase
...
mysql> drop table celeb;
  • aws 서버에 만들어준 데이터베잇로 옮기는 작업
  • 테이블 확인
  • 'celeb' 테이블 삭제 및 테이블 확인

• AWS RDS (database-1) 의 zerobase 에서 celeb 테이블을 복구

mysql> source celeb.sql

• 결과 확인

  • 어떻게 내용이 들어가 있는지 확인

  • 테이블 내용(데이터)도 확인

Chapter 12-7. Table Schema Backup

1. Table Schema Backup

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

  • 특정 Table Schema Backup
%mysqldump -d -u username -p dname tablename > backup.sql
  • 모든 Table Schema Backup
%mysqldump -d -u username -p dname > backup.sql

2. Table Schema Backup 실습

• Local Database 에서 snl_show Table Schema 백업

sql_ws % mysql -d -u username -p zerobase snl_show > snl.sql

cf) 아래의 코드로 진행함. 제로베이스 데이터베이스에 snl.sql이라는 이름으로 snl_show 테이블을 백업하기

mysqldump -d -u root -p zerobase snl_show > snl.sql

• VSCode 에서 snl.sql 확인 (Data 는 포함하지 X)

  • 결과는 강의교안과 같게 나옴.

혼자서 해봅시다.

문제1. AWS RDS (database-1) 의 zerobase 데이터베이스를 백업하세요.

• 주의> AWS RDS database 를 백업할 경우 다음의 옵션을 추가합니다.

% mysqldump --set-gtid-purged=OFF -h "<hostname>" -P <port> -u <username> -p <databasename> > <filename>.sql
% mysqldump --set-gtid-purged=OFF -h "엔드포인트" -P 3306 -u admin -pzerobase zerobase > backup_zerobase.sql


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

mysql -h "앤드포인트" -P 3306 -u admin -p패스워드 mysql

문제3. Database (zerodb) 를 생성하세요. (DEFAULT CHRACTER SET utf8mb4)

show databases;

create database zerodb default character set utf8mb4;

show databases;

문제4. 앞서 생성한 사용자 (zero@%) 에게 zerodb 의 모든 권한을 부여하세요.

grant 'zero'@'%' on zerbase to zerodb;

틀림!
풀이)

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

  • 부여된 권한 확인하기
show grants for 'zero'@'%';

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

  1. zerodb 데이터베이스로 이동
use zerodb;

  1. 테이블 확인
show tables;


테이블이 비어있는 것을 확인할 수 있음.

  1. 백업한 zerobase 백업 파일을 zerodb 에서 실행
source backup_zerobase.sql

  1. zerodb 데이터베이스 확인하기
show tables;

만들었던 테이블들이 zerodb에 들어가 있는 것을 확인할 수 있음.

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

  1. insert.sql 이름의 새 파일 만들기

문제7. SQL 파일을 실행하여 AWS RDS (database-1) zerobase 의 police_station 테이블에 데이터를 INSERT 하고 확인하세요.

  1. zerobase 데이터베이스로 이동
use zerobase;

  1. 테이블 확인
show tables;

  1. police_station 테이블 안의 데이터 확인
select * from police_station;

  1. 현재 데이터베이스에서 테이블이 생성됨?
source insert.sql


5. 각각 데이터에 맞게 들어갔는지 확인하기

select * from police_station;


한글 깨짐

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

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

틀림!

  • 내가 작성한 코드는 zerobase 데이터베이스에 접속하는 코드?
    풀이)
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 와 동일하게 만들고 확인하세요.

  • sql파일을 실행시켜서 zerodb의 police_station 테이블과 zerobase가 동일하면 됨!
    1. 먼저 접속하기
mysql -h "엔드포인트" -P 3306 -u admin -p패스워드

    1. 데이터베이스 확인하기
show databases;

zerbase에서 만든 policestation을 zerodb에 똑같이 만들면 됨.
![](https://velog.velcdn.com/images/ha
/post/c5afd056-3d42-4497-aa43-78fd212de96c/image.png)

    1. zerodb 사용하기
use zerodb;

    1. zerodb의 테이블 확인
show tables;

이미 policestation이 있는 것을 확인함.
![](https://velog.velcdn.com/images/ha
/post/ccd651ee-c116-4190-a9f0-48d1ef58d9ee/image.png)

    1. police_station 테이블 확인
select * from police_station;

테이블 안에 내용이 비어있는 것을 알 수 있음.

    1. insert.sql 파일을 실행함. (backup_police.sql 파일을 실행할 수 도 있지만)
source insert.sql

    1. 다시 한 번 테이블 조회해서 확인함.
select * from police_station;


한글깨지는 문제 해결 못함.

0개의 댓글