SQL > MYSQL - LIBRARY > MySQL 덤프방법(dump)
 
SQL
MYSQL
MS-SQL
ORACLE
 
 
MYSQL - LIBRARY
  HOME > SQL > MYSQL - LIBRARY
 
MySQL 덤프방법(dump)
작성일 : 09-08-10
조회 : 4,610  
estuser 라는 디비계정의 사용자가 testdb 라는 디비에 대해 작업을 하고
해당 디비에 testtable1,testtable2,testtable3 이라는 테이블이 있을 경우



1. testdb 의 모든 테이블의 스키마 및 데이타를 모두 덤프 받으려 할 경우

$ mysqldump -u testuser -p testdb > testdb.sql



2. testdb 의 모든 테이블의 스키마만 덤프받으려 할 경우

$ mysqldump -u testuser -p -d testdb > testdb.sql



3. testdb 의 testtable1 테이블의 스키마 및 데이타를 모두 덤프 받으려 할 경우

$ mysqldump -u testuser -p testdb testtable1 > testdb_testtable1.sql



4. testdb 의 testtable1 테이블의 스키마 및 데이타중 일부를 덤프 받으려 할 경우 ( no 가 testtable1 의 필드명일 경우 )

$ mysqldump -u testuser -p testdb testtable1 -w 'no > 1 and no < 100' > testdb_testtable1.sql



옵션설명 :

-u : 사용자명 입력
-p : 비밀번호 입력
-d : 데이타 덤프 안함
-w : WHERE 절 입력함 (단일 따옴표인것에 주의)
<scRIPT language=javascript>AC_FL_RunContent = 0;</scRIPT> <scRIPT language=javascript src="../js/AC_RunActiveContent.js"></scRIPT> <scRIPT language=javascript> if (AC_FL_RunContent == 0) { alert('This page requires AC_RunActiveContent.js.'); } else { AC_FL_RunContent( 'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0', 'width', '185', 'height', '75', 'src', 'recommend_bt', 'quality', 'high', 'pluginspage', 'http://www.macromedia.com/go/getflashplayer', 'align', 'middle', 'play', 'true', 'loop', 'true', 'scale', 'showall', 'wmode', 'window', 'devicefont', 'false', 'id', 'recommend_bt', 'bgcolor', '#ffffff', 'name', 'recommend_bt', 'menu', 'true', 'allowFullScreen', 'false', 'allowscriptAccess','sameDomain', 'movie', 'recommend_bt', 'salign', '', 'flashVars', 'bo_table=tip_mysql&wr_id=6&good=good&good_name=추천&wr_good=0&view_token=17b3ce0849f915746002267dbb41d694' ); //end AC code } </scRIPT>




----------------------------------------------------------------------------------------------------------



MySQL의 데이터를 백업하는 방법은 크게 두가지로 분류 할 수 있다.

1. mysqldump를 이용한 text타입의 백업 방법.
2. 데이터파일 자체를 복사하는 백업 방법.

두가지 방법모두 장단점이 있으므로 용도와 필요에 맞게 사용하는 것이 좋다.



1. mysqldump를 이용한 백업(출처 : http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html)

 mysqldump는 Igor Romanenko라는 사람이 만든 백업 프로그램이다. 이는 database나 database의 일부를 백업하는 목적이나 다른 시스템으로 옮길때 사용된다. 그리고 원하는 분리 문자를 넣을 수 있어 CSV파일 등으로 만들 수 있으며, XML포맷으로 만들 수도 있다.
 굉장히 많은 옵션들을 제공하고 있는 만큼 사용하는 방법과 용도 또한 여러가지이다. 먼저 가장 기본적인 사용법 부터 알아 보자. 아래에 옵션표를 첨부할 것이다.

1) database백업

shell> mysqldump -u user -p 백업할 db_name > 파일명
shell> mysqldump -u comnic -p database1 > database1_20090321000000.sql

위는 comnic이라는 유저로 database1이라는 database를 database1_20090321000000.sql파일로 백업하라는 내용이다.


2) table백업
shell> mysqldump -u user -p 백업할 db_name table_name > 파일명
shell> mysqldump -u comnic -p database1 table1 > table1_20090321000000.sql

위는 comnic이라는 유저로 database1의 table1이라는 table을 table1_20090321000000.sql파일로 백업하라는 내용이다.


3) Table 구조만 백업
shell> mysqldump --no-data -u user -p 백업할 db_name > 파일명
shell> mysqldump --no-data -u comnic -p database1 > 20090321000000.sql

위는 comnic이라는 유저로 database1의 table구조를 20090321000000.sql파일로 백업하라는 내용이다.
--no-data 옵션은 create table문장만을 백업하기를 원할때 유용한다.


4) Table별로 백업 파일 생성
shell> mysqldump -u user -p --tab=백업Path 백업할 db_name
shell> mysqldump -u comnic -p --tab=/backup database1

/backup이라는 폴더에 table마다 각각 tbl_name.sql파일과 tbl_name.txt파일을 생성한다. 이는 Table의 구조와 데이터를 분리 하여 백업하는 것을 의미 한다. .sql파일은 구조를 .txt파일은 데이터를 저장한다. 이때 분리 문자가 사용되는데 기본적을 tab이 사용된다. 이 분리문자를 변경하면 원하는 분리 문자로 구성된 파일을 만들 수 있다.


5) CSV파일로 백업 및 다른 분리 문자로 백업
shell> mysqldump -u user -p --tab=백업Path  --fields-terminated-by='분리문자' 백업할 db_name
shell> mysqldump -u comnic -p --tab=/backup --fields-terminated-by=',' database1

기본적인 분리문자인 tab대신 ,를 사용해 백업을 한다. 즉, CSV파일로 생성된다. 


6) XML포맷으로 백업
shell> mysqldump -u user -p --xml 백업할 db_name > 파일명
shell> mysqldump -u comnic -p --xml database1 > 20090321000000.xml

 

2. 복구하기

 위와 같은 방법들로 백업된 파일을 복구하는 방법은 아래와 같다.

shell> mysql -u user -p db_name < 파일명
shell> mysql -u comnic -p database1 < 20090321000000.sql

복구시 한글이 깨지는 경우가 종종 있다. 그럴때는 아래와 같이 --default-character-set 옵션을 사용해 복구한다.
 
shell> mysql -u user -p --default-character-set=euckr db_name < 파일명



3. 바이너리 백업(파일 복사 혹은 압축을 이용)

 MySQL을 사용하는 사용자들은 흔히 data파일을 복사하는 방식의 백업이 쉽고 빠르다고 얘기들을 한다. 나 또한 그런식으로 백업을 많이 하고 있다. shell 프로그램으로 자동 백업 후 다른 시스템으로 ftp를 이용해 옮기는 방법으로 자동화를 많이 사용 하고 있다. shell를 이용한 자동화 부분은 다음에 다루도록 하겠다.

1) 복사 및 압축을 이용한 백업
 cp와 tar를 이용하면 쉽게 백업을 할 수 있다. 복사전에 lock을 걸어주고 복사가 끝난후 unlock를 꼭 해 주어야 한다.
복구는 파일 그냥 다시 복사 해 주면 된다. 데이터를 옮기는 과정이라면 복사 이후 추가된 데이터를 다시 추가 해 주어야 한다.

2) mysqlhotcopy를  이용한 백업(출처:http://dev.mysql.com/doc/refman/5.1/en/mysqlhotcopy.html)
 DB전체를 백업할때는 mysqldump보다 이를 이용하면 더욱 빠르게 백업을 할 수 있다고 한다.
mysqlhotcopy는 LOCK TABLES, FLUSH TABLES 그리고 cp나 scp를 이용해 파일을 생성한다.
주의 할점은  MyISAMARCHIVE table만 가능하다는 것이다.
사용방법은 다은과 같다.

shell> mysqlhotcopy db_name [/path/to/new_directory]
shell> mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory

정규식을 이용하는 방법도 있다.

shell> mysqlhotcopy db_name./regex/
shell> mysqlhotcopy db_name./~regex/

 


 
 

Total 13
번호 제   목 조회
13 mysqladmin 사용법 1342
12 mysql 스트링 함수들 1874
11 PHP 와 MySQL 을 사용시 트랜잭션을 처리하는 방법 입니다. 2337
10 mysql DB 자동 백업 설정 하기 (1) 5306
9 Mysql 날짜관련 함수 모음 4247
8    Mysql 날짜함수를 이용한 데이터 가져오기 (date_add, date_sub… 4002
7 JOIN 문 left outer join 2814
6 MySql 기본명령어 모음[콘솔사용시] 3554
5 MySQL 덤프방법(dump) 4611
4 MySQL 에서 사용되는 sql문 정리[DB 자체 처리] 2297
3 mysql 유저 생성, 권한 부여 2885
2    mysql 유저 생성, 권한 부여 4920
1    mysql 유저 생성, 권한 부여 13
 
개인홈페이지 덤벙닷컴은 프로그래머와 디자이너위한 IT커뮤니티 공간입니다.
Copyright ⓒ www.dumbung.com. All rights reserved.