강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

백업 및 복구 - 첫번째
작성자 : 13 김영철
등록날짜 : 2009.01.29 15:46
2,485
백업의 방법에는 여러가지가 있겠지만, 여기서는 두 가지 방법을 설명하려고 합니다.

그 두 가지란,

1. SQL레벨의 백업 및 복구
2. 풀레벨의 백업 및 복구

입니다. 이 외에도 방법은 여러 가지가 있을 수 있습니다.

용도와 방식에 따라 그때 그때 상황에 맞게 사용하시면 되겠습니다.

자, 그럼 먼저 오늘 설명할 것은 1번 SQL레벨의 백업 및 복구입니다.


일단 실전에 들어가기에 앞서 알아두셔야 할 것이 있습니다.

그게 뭐냐면... 백업이나 복구를 하기 전에는 항상 LOCK를 걸어놓아야 한다는 것입니다.

LOCK에 대한 설명은 얼마 전 강좌를 통해 설명을 드렸습니다.

실은 제가 이 백업 및 복구를 설명하기 위해서 LOCK을 먼저 설명드렸던 것이었습니다....... 그랬던 것이죠.....

우오... 감동의 파도가 밀려옵니다...


어쨌든 다시 본론으로 들어와서...^^;

다시말해 백업이나 복구가 일어나는 동안은 외부에서 끼어드는 것을 차단해야 하는 것입니다.

그래야만 오류가 없는 백업 및 복구가 일어날 수 있습니다.

그럼 이제 실전에 들어가보겠습니다.

테스트를 위해서 임의의 테이블을 하나 만들었습니다.





테이블 이름은 employee이고 4개의 로우가 데이터로 들어가 있습니다. 어떤 구조인지 아시겠죠?

이제 첫 단계로 테이블에 대해 락(LOCK)을 걸도록 하겠습니다.

mysql> LOCK TABLES employee READ;

employee 테이블에 대해 READ 락을 걸었습니다.

이제 다른 곳에서 접속한 사람은 이 테이블에 대해 select문장만 수행할 수 있고, update나 delete처럼

테이블의 변경은 할 수 없는 상태가 됩니다. 이 상태에서 백업을 하는 것이지요.

그럼 백업을 하겠습니다.

mysql> SELECT * INTO OUTFILE '/tmp/backup.sql' FROM employee;

SELECT ~ INTO OUTFILE 이라는 구문을 사용하였습니다.

이 문장을 쓰게되면 employee 테이블의 테이타가 문장상에 적어놓은 backup.sql 이라는 파일로 저장됩니다.

어디 backup.sql 파일을 열어볼까요?


# vi /tmp/backup.sql




테이블에 있던 데이터들이 보이죠?

간단히 파일로 입력되었지만, 나름대로 법칙에 따라 입력이 된 상태입니다.

예를 들어 칼럼과 칼럼사이는 TAB키로 떨어져있습니다. 절대 스페이스바를 이용한 공백이 아닙니다.

어쨌든 우리는 이 구조를 이용해서 데이타가 유실된 경우에 복구를 할 수 있게 되는 것입니다.

그럼 한번 복구 테스트를 해보도록 하지요.

일단 테이블의 데이타를 유실했다는 가정을 만들기 위해 employee 테이블의 모든 데이타를 지웁니다.

mysql> delete from employee;

이로써 employee 테이블에는 아무 데이터도 없습니다. 테이블 구조만 있는 테이블이 된 것이죠.

참고로 mysql에서는 백업이 안된 상태에서 delete로 데이터를 삭제했을 때

복구시킬 수 있는 방법이 없습니다.

따라서 delete나 update문장을 수행할 때는 항상 세심한 주의가 필요합니다.


이제 아까 백업해 놓은 파일을 이용해서 복구를 하겠습니다. 지워진 데이터를 다시 살리겠다는 뜻이죠.


복구시에는 LOAD DATA INFILE이라는 SQL문장을 사용합니다.

LOAD DATA INFILE '파일명' INTO TABLE 테이블명;

이 문장으로 복구를 실시해 보겠습니다.





문장이 수행되었다고 나옵니다.

복구가 되었는지 확인해보면...





이렇게 원상태로 복구가 되었습니다.

모든 테스트가 완료 되었으므로 LOCK을 풀어주도록 하겠습니다.

# UNLOCK TABLES;

그러면 모든 것이 완료가 됩니다.

그리 어렵지 않죠? ^^

사실 이 SELECT INTO OUTFILE 구문이나, LOAD DATA INFILE 구문은 백업 및 복구뿐만아니라,

다른 용도로도 유용하게 사용할 수 있습니다.

반복되는 SQL문장을 저장해놓고 사용하고자 할 때 사용할 수도 있는 것이지요...

당장 테스트 해보고 싶은 마음이 솟아오르지 않습니까? ^^


그럼 한번 테스트 해보시구요...

다음 시간에는 백업 및 복구의 두 번째, '풀백업 및 복구'에 대해서 해보도록 하겠습니다.

잠깐 미리 귀뜸을 하자면, 풀백업 및 복구가 사실상의 백업 복구라고 할 수 있습니다.

레벨이 조금은 높다고 할 수 있지요... 

[출처] 민주가인

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
2805 Window Server 2003을 사용해 보자 M 최고의하루 12.20 2494
2804 Windows Server 2003 에서 IIS 6 + PHP 4.3.2 설정법 M 최고의하루 12.19 3959
2803 Windows Server 2003 완벽 재설치 M 최고의하루 12.19 3117
2802 SERVER 2003 섬네일(GD2) 기능 적용하기 M 최고의하루 12.18 2335
2801 윈도우2003 서버 SP1 환경에서 IIS에 php 설치 하기 M 최고의하루 12.18 2958
2800 PHP 4.4.3-dev, Zend 2.6.0, MySQL 4.0.26 버전 설치정보 M 최고의하루 12.04 2681
2799 Windows 2003 Server 설치 및 최적화 팁 모음 M 최고의하루 12.04 3242
2798 우편번호,주소 db 13 김영철 01.29 2366
2797 my-sql 을 좀 쉽게 다룰수 있는 프로그램입니다 13 김영철 01.29 2765
2796 Mysql 기본 사용법 13 김영철 01.29 2992
2795 mssql mysql 변환, asp 게시판 소스 수정 13 김영철 01.29 4832
2794 mysql함수 13 김영철 01.29 2628
2793 mySQL에서의 트랜잭션 13 김영철 01.29 2436
열람중 백업 및 복구 - 첫번째 13 김영철 01.29 2486
2791 백업 및 복구 - 두번째 13 김영철 01.29 2409
2790 사용자 및 권한 설정 13 김영철 01.29 2075
2789 [mysqld] Column Type => Timestamp 설정 13 김영철 01.29 2427
2788 MySQL, SQL문의 분류, Eclipse 셋팅, JDBC, 방명록 13 김영철 01.29 4120
2787 UNION 과 JOIN 의 차이점 13 김영철 01.29 2384
2786 mysql 한글 깨짐 13 김영철 01.29 3662
2785 Mysql 5.xxx 데몬 시작 및 중지 13 김영철 01.29 2588
2784 Mysql-5.0.37 설치 및 한글처리문제 13 김영철 01.29 2887
2783 윈도우 환경에서의 Mysql5 설치 및 설정방법 13 김영철 01.29 3231
2782 php5, mysql5.0 설치 13 김영철 01.29 2652
2781 mysql characterset 변경 13 김영철 01.29 2404
2780 Mysql 함수 총집합 13 김영철 01.29 3266
2779 Mysql 문자열 관련 함수 13 김영철 01.29 2734
2778 mysql 컬럼값 문자열 치환 - REPLACE() 13 김영철 01.29 2749
2777 Mysql 백업 하기 13 김영철 01.29 3129
2776 mysql 복구 13 김영철 01.29 2838
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취