[MYSQL] Dump기능을 사용하여 백업, 복구

반응형
백업

 

  1. 논리적 백업 (mysqldump를 이용하여 텍스트 형식으로 테이블의 내용을 저장하는 백업)
    -. mysql 서버에 접속해서 데이터를 복구 하기 위한, create table, insert .. 문을 만들어 내기 때문에 물리적 백업보다 오래걸린다. 
    -. 테이블에 존재하는 index에 대한 정보는 백업 내용에 포함되어 있지 않지만, 덤프파일을 이용해서 데이터를 복구 시에는 인덱스가 생성된다.
    -. 설정파일이나, 로그파일 등은 백업되지 않는다.
    -. --opt옵션을 사용하면 덤프과정을 최적화 시키지만, --opt를 사용하는 순간 모든 테이블에  lock을 설정하기 때문에 다른 세션에서 DML이 불가능하다.
    -. --opt옵션은 기본적으로 extended-insert를 활성화 시켜서, 한 건 한 건 insert하는 구문이 아니기 때문에 로그 사이즈가 줄어든다. 
    -. 전체 데이터 베이스를 백업 받을 때는 --flush-logs 옵션을 같이 사용하면 좋다.
    -. 기본적으로 테이블과 연관된 데이터만 백업을 받게 되므로 --routines --triggers --events 옵션을 사용하여 덤프 파일에 추가해야한다.
    -. --master-data는 복제 슬레이브 서버를 만들 목적으로 master서버에서 덤프 파일을 생성할 때 유용하다. 

  2. 물리적 백업 (실제 사용되는 data file, log file, 설정파일 등을 직접 복사하여 저장하는 백업)
    -. cp, tar, rsync를 사용하여 물리적 백업
    -. 서버중단필요

 

백업 복구 예제

1. 특정 데이터베이스의 table 하나만 백업

mysqldump -u root -p test1 test_tab1 > test1_test_tab1_2020_10_06.dmp
- drop table 구문까지 포함되어있다. 

 

1.1 백업받은 특정 데이터베이스의  table 하나 복구

mysql -u root -p test1 < test1_test_tab1_2020_10_06.dmp

 

2. 특정 데이터베이스 

mysqldump -u root -p  --add-drop-table --set-charset --default-character-set=utf8 test1 > db_test1_backupfile.dump

 

2.1 백업받은 특정 데이터베이스 복구

mysql> use test1;
Database changed
mysql> show tables;
Empty set (0.00 sec)


mysql -u root -p test1 < db_test1_backupfile.dump

mysql> use test1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------+
| Tables_in_test1 |
+-----------------+
| test_tab1       |
| test_tab2       |
+-----------------+
2 rows in set (0.00 sec)

 

※Dump 옵션 참고 블로그 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=islove8587&logNo=220954068077

반응형