MySQL 풀 레벨의 백업 및 복구 (mysqldump) > MySQL

STUDY ROOM

MySQL

MySQL 풀 레벨의 백업 및 복구 (mysqldump)

페이지 정보

작성자 JMStudy 작성일05-06-26 01:36 조회7,759회 댓글0건

본문

레벨의 백업 및 복구

'풀 레벨의 백업'은 테이블도 아닌 데이터베이스 전체를 백업하는 것입니다.

여러분이 CREATE DATABASE mydb; 같은 명령어로 만들었던 바로 그 데이터베이스 전체를 백업한다는 뜻이지요. 따라서 이렇게 백업해 놓으면 데이터베이스 어디에서 문제가 발생했는지 알 수 없는 경우에도 일단은 복구가 가능해 집니다. 복구시 무조건 데이터베이스를 새로 만들게 되니까요.

mySQL에서는 mySQL을 관리하기 위한 유틸을 여러 가지 지원합니다.
mysqldump 라는 유틸을 사용해서 백업을 할 것입니다.

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

아래는 임의로 만든 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 ('1001','박정민',170);
INSERT INTO employee VALUES ('1002','장진영',200);
INSERT INTO employee VALUES ('1003','정우성',250);
INSERT INTO employee VALUES ('1004','김삼순',300);


얼핏 봐도 무슨 내용인지 아시겠죠? SQL 문장들이 쭈욱 써있습니다.
복구시에는 이 SQL 문장들을 그대로 실행하게 됩니다.
그러면 테이블이나 데이터들이 원래 있던 그대로 만들어지겠쬬...


이제 복구를 테스트해 보도록 하겠습니다.
그러기 위해서 일단 mytest 데이터베이스 안에 있는 데이터들을 모두 삭제하겠습니다.

mysql> DROP TABLE employee;

mysql> show tables;

라고 명령해봤자 mytest 데이터베이스 안에는 테이블이 하나도 없습니다.
아까 백업해 놓은 mytestbackup.txt 파일만이 유일한 복구 방책이 되는 것이죠.

이제 그 파일을 가지고 테이블들을 복구해 보도록 하겠습니다.

복구시에는 mysqldump가 아니라 mysql이라는 유틸을 명령으로 사용한다는 것이지요.

# ./mysql -p mytest < '/tmp/mytestbackup.txt'

꺾임쇠가 오른쪽(>)이 아니라 왼쪽(<)임을 유심히 봐주세요.

이렇게 명령을 내리신 후 데이터를 확인해 보면..

employee라는 테이블이 다시 만들어져 있고 데이터들도 제대로 들어가 있는 것을 확인하실 수 있습니다.

그리고 mysqldump나 mysql 유틸 역시 꼭 백업,복구에만 쓰이는 것은 아닙니다.

SQL문장을 저장해서 쓴다든가 아니면 다른 목적으로도 사용될 수 있습니다.
댓글목록

등록된 댓글이 없습니다.