mySQL에서는 mySQL을 관리하기 위한 유틸을 여러 가지 지원합니다.

그 중에서 오늘 우리는 mysqldump 라는 유틸을 사용해서 백업을 할 것입니다.

해보시면 아마도 여러분께서 생각하셨던 것보다 훨씬 쉽다고 느끼실 겁니다.


일단 테스트를 위해 임의로 데이터베이스와 테이블이 있다고 가정하겠습니다.

아래는 임의로 만든 mytest라는 데이터베이스와 employee라는 테이블을 보여주고 있습니다.






mytest라는 데이터베이스에 employee라는 테이블과 데이터들이 있는 것을 확인하셨죠?

그러면 이제 이 데이터베이스 전체를 백업하도록 하겠습니다.


먼저 root 권한으로 변경하시구요.

# su

일단 mySQL의 유틸들이 있는 디렉토리로 이동합니다.

# cd /usr/local/mysql/bin

그런 다음 이제 mysqldump를 실행합니다.

형식은 이렇습니다.

mysqldump -p 데이터베이스명 > '파일명'

실행해 볼까요?

# ./mysqldump -p mytest > '/tmp/mytestbackup.txt'

이렇게 해서 데이터베이스 전체가 /tmp 디렉토리 밑에 mytestbackup.txt 라는 파일로 백업이 되었습니다.

정말 간단하죠?

여러분은 이제 이 mytestbackup.txt 라는 파일을 잘 관리하시면 됩니다.

이번엔 mytestbackup.txt 라는 파일이 어떻게 생겼는지 볼 차례입니다.

# vi /tmp/mytestbackup.txt

# MySQL dump 8.12
#
# Host: localhost    Database: mytest
#--------------------------------------------------------
# Server version        3.23.32

#
# Table structure for table 'employee'
#

CREATE TABLE employee (
emp_id varchar(4) NOT NULL default '',
emp_name varchar(15) NOT NULL default '',
emp_salary int(11) default NULL,
PRIMARY KEY (emp_id)
) TYPE=MyISAM;

#
# Dumping data for table 'employee'
#

INSERT INTO employee VALUES ('1301','김호',80);
INSERT INTO employee VALUES ('1302','짱가',155);
INSERT INTO employee VALUES ('1305','가가멜',200);
INSERT INTO employee VALUES ('1303','나그네',110);

 얼핏 봐도 무슨 내용인지 아시겠죠? SQL 문장들이 쭈욱 써있습니다. 



물론 #로 되어있는 부분은 주석처리된 부분이구요...
복구시에는 이 SQL 문장들을 그대로 실행하게 됩니다.
그러면 테이블이나 데이터들이 원래 있던 그대~로 만들어지겠죠?
홋홋홋..  자, 이제 복구를 테스트해 보도록 하겠습니다.
그러기 위해서 일단 mytest 데이터베이스 안에 있는
데이터들을 모두 삭제하겠습니다. mysql> DROP TABLE employee;
저는 DELETE나 DROP 명령을 실행할 때는 항상 긴장을 하게 됩니다.
소심해서일까요? 하지만 이 녀석들은 잘못하면 돌이킬 수 없는 결과를
초래할지 모르는 무서운 명령들입니다. 여러분께서도 이럴 때 쬐~끔은
긴장해 주시길 바랍니다. 그래야 제가 소심하단 소릴 안 들을테니까요.....^^;
 어쨌든 이렇게 해서 데이터베이스를 와장창 없애 버렸습니다. 이제는  
mysql> show tables; 라고 명령해봤자 mytest 데이터베이스 안에는 테이블이
하나도 없습니다.  아까 백업해 놓은 mytestbackup.txt 파일만이 유일한 복구
방책이 되는 것이죠. 이제 그 파일을 가지고 테이블들을 복구해 보도록 하겠습니다.
자, 이때 유심히 보아야 할 사항!! 그것은...  복구시에는 mysqldump가
아니라 mysql이라는 유틸을 명령으로 사용한다는 것이지요. 따라서 복구 명령은
이렇게 내리게 됩니다. # ./mysql -p mytest < '/tmp/mytestbackup.txt'
꺾임쇠가 오른쪽(>)이 아니라 왼쪽(<)임을 유심히 봐주세요. 이렇게 명령을 내리신
후 데이터를 확인해 보면.. employee라는 테이블이 다시 만들어져 있고 데이터들도
제대로 들어가 있는 것을 확인하실 수 있습니다. 하하.. 별로 어려운게 없죠?
혹시 너무 쉬워서 실망하셨나요? ^^  덧붙여서 주의하실 사항을 말씀드리자면요...
지금은 테스트를 위해 /tmp 디렉토리 밑에 백업을 했습니다만,  실제로는 임의의
디렉토리를 만드셔서 백업하시기 바랍니다. /tmp 디렉토리 밑의 파일들은 때에 따라
저절로 지워지는 경우가 발생하기도 하니까요. 그리고 mysqldump나 mysql 유틸 역시
꼭 백업,복구에만 쓰이는 것은 아닙니다. SQL문장을 저장해서 쓴다든가 아니면
다른 목적으로도 사용될 수 있습니다. 아시겠죠?  오늘 강좌는 여기까지입니다.
즐거우셨는지요? 그럼 즐백업복구하시구요... 항상 행복하세요..^^








Posted by gala
l