홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송
운.영.자.1대1.상담
온라이브 음악방송
음악방송 앱 다운로드
보안∵서버∵쿠키
윈도우∵프레임
이미지∵배경
시간∵달력∵계산
상태바∵타이틀바
음악∵영상
폼∵전송∵테이블
키보드∵마우스
효과∵링크∵메뉴
Script∵php
기타
PHP 강좌
윈도우관련팁
웹관련팁
홈페이지제작팁
기본강좌
레지스트리
윈도우서버
리눅스서버
Android
[MySQL - 데이터 백업과 복구]MySQL의 mysqldump 백업과 바이너리 백업 및 복구 방법
10년 전
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/
 




첨부.1

 
Format Config File Description Introduction
--add-drop-database add-drop-database Add a DROP DATABASE statement before each CREATE DATABASE statement  
--add-drop-table add-drop-table Add a DROP TABLE statement before each CREATE TABLE statement  
--add-locks add-locks Surround each table dump with LOCK TABLES and UNLOCK TABLES statements  
--all-databases all-databases Dump all tables in all databases  
--all-tablespaces all-tablespaces Adds to a table dump all SQL statements needed to create any tablespaces used by an NDB Cluster table 5.1.6
--allow-keywords allow-keywords Allow creation of column names that are keywords  
--comments comments Add comments to the dump file  
--compact compact Produce less verbose output  
--compatible=name[,name,...] compatible Produce output that is more compatible with other database systems or with older MySQL servers  
--complete-insert complete-insert Use complete INSERT statements that include column names  
--create-options create-options Include all MySQL-specific table options in the CREATE TABLE statements  
--databases databases Dump several databases  
--debug[=debug_options] debug Write a debugging log  
--debug-check debug-check Print debugging information when the program exits 5.1.21
--debug-info debug-info Print debugging information, memory and CPU statistics when the program exits 5.1.14
--delayed-insert delayed-insert Write INSERT DELAYED statements rather than INSERT statements  
--delete-master-logs delete-master-logs On a master replication server, delete the binary logs after performing the dump operation  
--disable-keys disable-keys For each table, surround the INSERT statements with disable and enable keys statements  
--dump-date dump-date Include dump date in "Dump completed on" comment if --comments is given 5.1.23
-E events Dump events from the dumped databases  
--extended-insert extended-insert Use multiple-row INSERT syntax that include several VALUES lists  
--fields-enclosed-by=string fields-enclosed-by This option is used with the -T option and has the same meaning as the corresponding clause for LOAD DATA INFILE  
--fields-escaped-by fields-escaped-by This option is used with the -T option and has the same meaning as the corresponding clause for LOAD DATA INFILE  
--fields-optionally-enclosed-by=string fields-optionally-enclosed-by This option is used with the -T option and has the same meaning as the corresponding clause for LOAD DATA INFILE  
--fields-terminated-by=string fields-terminated-by This option is used with the -T option and has the same meaning as the corresponding clause for LOAD DATA INFILE  
--lock-all-tables first-slave Deprecated. Now renamed to --lock-all-tables  
--flush-logs flush-logs Flush the MySQL server log files before starting the dump  
--flush-privileges flush-privileges Emit a FLUSH PRIVILEGES statement after dumping the mysql database  
--help   Display help message and exit  
--hex-blob hex-blob Dump binary columns using hexadecimal notation (for example, 'abc' becomes 0x616263)  
--ignore-table=db_name.tbl_name ignore-table Do not dump the given table  
--insert-ignore insert-ignore Write INSERT statements with the IGNORE option  
--lines-terminated-by=string lines-terminated-by This option is used with the -T option and has the same meaning as the corresponding clause for LOAD DATA INFILE  
--lock-all-tables lock-all-tables Lock all tables across all databases  
--lock-tables lock-tables Lock all tables before dumping them  
--log-error=file_name log-error Append warnings and errors to the named file 5.1.18
--master-data[=value] master-data Write the binary log file name and position to the output  
--max_allowed_packet=value max_allowed_packet The maximum packet length to send to or receive from the server  
--net_buffer_length=value net_buffer_length The buffer size for TCP/IP and socket communication  
--no-autocommit no-autocommit Enclose the INSERT statements for each dumped table within SET autocommit = 0 and COMMIT statements  
--no-create-db no-create-db This option suppresses the CREATE DATABASE statements  
--no-create-info no-create-info Do not write CREATE TABLE statements that re-create each dumped table  
--no-data no-data Do not write any table row information (that is, do not dump table contents)  
--no-set-names no-set-names Turn off complete-insert  
--opt opt This option is shorthand; it is the same as specifying --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset.  
--order-by-primary order-by-primary Sorts each table's rows by its primary key, or by its first unique index  
--password[=password] password The password to use when connecting to the server  
--pipe   On Windows, connect to server via a named pipe  
--port=port_num port The TCP/IP port number to use for the connection  
--quick quick Retrieve rows for a table from the server a row at a time  
--quote-names quote-names Quote database, table, and column names within backtick characters  
--replace replace Write REPLACE statements rather than INSERT statements  
--result-file=file result-file Direct output to a given file  
-R routines Dump stored routines (procedures and functions) from the dumped databases  
--set-charset set-charset Add SET NAMES default_character_set to the output  
--single-transaction single-transaction This option issues a BEGIN SQL statement before dumping data from the server  
--skip-add-drop-table skip-add-drop-table Do not add  
--skip-add-locks skip-add-locks Do not add locks  
--skip-comments skip-comments Do not add comments to the dump file  
--skip-compact skip-compact Turn off compact  
--skip-disable-keys skip-disable-keys Do not disable keys  
--skip-extended-insert skip-extended-insert Turn off extended-insert  
--skip-opt skip-opt Turn off the options set by opt  
--skip-quick skip-quick Do not retrieve rows for a table from the server a row at a time  
--skip-quote-names skip-quote-names Turn off quote names  
--skip-set-charset skip-set-charset Suppress the SET NAMES statement  
--skip-triggers skip-triggers Turn off triggers  
--skip-tz-utc skip-tz-utc Turn off tz-utc  
--ssl-ca=file_name ssl-ca The path to a file that contains a list of trusted SSL CAs  
--ssl-capath=directory_name ssl-capath The path to a directory that contains trusted SSL CA certificates in PEM format  
--ssl-cert=file_name ssl-cert The name of the SSL certificate file to use for establishing a secure connection  
--ssl-cipher=cipher_list ssl-cipher A list of allowable ciphers to use for SSL encryption  
--ssl-key=file_name ssl-key The name of the SSL key file to use for establishing a secure connection  
--ssl-verify-server-cert ssl-verify-server-cert The server's Common Name value in its certificate is verified against the host name used when connecting to the server  
--tab=path tab Produce tab-separated data files  
--tables tables Override the --databases or -B option  
--triggers triggers Dump triggers for each dumped table  
--tz-utc tz-utc Add SET TIME_ZONE='+00:00' to the dump file  
--verbose   Verbose mode  
--version   Display version information and exit  
--where='where_condition' where Dump only rows selected by the given WHERE condition  
--xml xml Produce XML output
추천추천 : 399 추천 목록
번호 제목
3,024
 [CSS] 박스 세로 가운데 중앙 정렬 6가지
3,023
 CSS Layout 수평 & 수직 정렬
3,022
 여러 도메인들 간 쿠키 공유하기
3,021
 태그 사이에 있는 텍스트를 추출
3,020
 [JQuery] textbox focus on off일때 숫자 콤마 보여주기
3,019
 쿠키 생성,가져오기,삭제
3,018
 사용자 함수 모음
3,017
 마우스,키보드 제한 ( 오른쪽클릭,드래그,영역선택등..)
3,016
 [HTML5] <video> - DOM으로 제어하기
3,015
 HTML5 video 태그에서 영상 좌우반전
3,014
 PHP - 특정 태그 및 문자열 추출, 제거
3,013
 [PHP] define과 defined의 차이
3,012
 우클릭 완벽차단 스크립트
3,011
 iframe 높이 100% 맞추기
3,010
 curl 함수를 이용한 HTTP REFERER 변경
3,009
 윈도우10 시스템 파일 및 Dism 검사
3,008
 텍스트 줄바꿈, 글자자르기 CSS
3,007
 jQuery Mobile에서 유용한 코드 10가지.
3,006
 [PHP] dirname()함수와 $_SERVER 관련 상수들
3,005
 [PHP] 파일 크기, 사이즈 불러오는 함수, filesize()
3,004
 [jQuery] jQuery Quick API
3,003
 [ transition ] 링크 hover 색상 변화 속도 조절
3,002
 PHP 5.3.0 에서 사라진 함수들 대체
3,001
 어떤 파일들이 include 나 require 되었는지 확인하는 함수(get_included_files)
3,000
 PHP 날짜 형식 및 계산하기(날짜 더하고 빼기)
목록
환상의뽕짝카페
트로트티비
뽕짝아가씨
트롯맘
종합성인가요방
카바레 음악
트롯디스코팡팡
관광 메들리
트롯카페
가요감상실
추억의옛노래
스페셜가요광장
BillBoard Free
추천가요모음
경음악.전자올겐
스페셜음악여행
WOLRD POPs
K-POP\BillBoard
POP TOP BEST

최신인기가요특집
추천가요\인기
F뮤직 인기\발라드
F뮤직 애창\트로트
트로트성인가요
인기가요
프리미엄 POP
경음악\기타
프리미엄 최신가요
프리미엄 성인가요
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.