(SQL) Database Backup

임경민·2023년 11월 8일
1

Database


Database Backup


  • SQL File로 Database 백업 가능
  1. 특정 Database Backup
mysqldump -u username -p dbname > backup.sql

  1. 모든 Database Backup
mysqldump -u username -p --all-databases > backup.sql

Database Restore


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

Table


Table Backup


  • Table 단위로도 백업 가능
mysqldump -u user -p dbname tablename > backup.sql

Table Restore


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

Table Schema Backup


  • 데이터를 제외하고 테이블 생성 쿼리만 백업 가능
  1. 특정 Table Schema Backup
mysqldump -d -u user -p dbname tablename > backup.sql

  1. 모든 Table Schema Backup
mysqldump -d -u user -p dbname > backup.sql

Example


Ex 1. zerobase Database Backup


  • zerobase Database Backup
mysqldump -u root -p zerobase > zerobase.sql


  • VSCode에서 zerobase.sql 확인


Ex 2. Database Restore


  • AWS RDS (database-1) 서비스가 사용 가능한 상태에서 접속
  • zerobase Database 이동
mysql -h "database-1.ca5oct2z6zq8.us-east-2.rds.amazonaws.com" -P 3306 -u admin -p zerobase

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

  • 결과 확인
SHOW TABLES;


Ex 3. Table Backup


  • Local Database에서 celeb Table을 백업
mysqldump -u root -p zerobase celeb > celeb.sql

  • VSCode에서 movie.sql 파일 확인


Ex 4. Table Restore


  • AWS RDS (database-1)의 zerobase에서 celeb 테이블 삭제


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


Ex 5. Table Schema Backup


  • Local Database에서 snl_show Table Schema 백업
mysqldump -d -u root -p zerobase snl_show > snl.sql
  • VSCode에서 snl.sql 확인 (데이터 포함 X)


실습


Ex 1

AWS RDS (database-1)의 zerobase 데이터베이스 백업


주의 : AWS RDS database를 백업할 경우, 다음의 옵션을 추가

mysqldump --set-gtid-purged=OFF -h <hostname> -P <port> -u <username> -p <databasename> > <filename>.sql

  • AWS RDS (database-1) zerobase 데이터베이스 백업
mysqldump --set-gtid-purged=OFF -h "database-1.ca5oct2z6zq8.us-east-2.rds.amazonaws.com" -P 3306 -u admin -p zerobase > backup_zerobase.sql


Ex 2

AWS RDS (database-1)에 admin 계정으로 로그인


mysql -h "database-1.ca5oct2z6zq8.us-east-2.rds.amazonaws.com" -P 3306 -u admin -p

Ex 3

Database 생성


  • Database (zerodb) 생성 (DEFAULT CHARACTER SET utf8mb4)
CREATE DATABASE zerodb DEFAULT CHARACTER SET utf8mb4;


Ex 4

생성한 사용자 (zero@%) 에게 zerodb의 모든 권한 부여


GRANT ALL ON zerodb.* to 'zero'@'%';


Ex 5

zerobase 백업 파일을 zerodb 에서 실행


  • zerodb로 이동
USE zerodb

  • 백업파일 실행
SOURCE backup_zerobase.sql;


Ex 6

police_station 테이블에 아래 데이터를 INSERT 하기 위한 SQL 파일 생성



  • 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')


Ex 7

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


  • police_staion 테이블 확인
SELECT * FROM police_station;


  • insert SQL 파일 실행하여 데이터 넣기
SOURCE insert.sql


Ex 8

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


  • 백업파일 생성
mysqldump --set-gtid-purged=OFF -h "database-1.ca5oct2z6zq8.us-east-2.rds.amazonaws.com" -P 3306 -u admin -p zerobase police_station > backup_police.sql


Ex 9

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


  • AWS RDS 접속
mysql -h "database-1.ca5oct2z6zq8.us-east-2.rds.amazonaws.com" -P 3306 -u admin -p

  • zerobase 데이터베이스 이동
SHOW DATABASES;
USE zerobase;

  • insert.sql 실행
SOURCE insert.sql

0개의 댓글