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

:: 백업과 복원 정리 ::
작성자 : 13 김영철
등록날짜 : 2009.01.24 23:02
2,009

이번 강좌에서는 복원에 대한 전체적인 내용을 살펴 보도록 하겠습니다. 즉, 전체 백업과 차등 백업 및 로그 백업을 받은 상태에서 복원을 하는 순서와 방법을 살펴보게 됩니다.

1. 테스트를 위한 임시 테이블 만들기와 데이터 추가하기

우선 현재의 sqlworld 데이터베이스에 테스트 테이블을 만들고 백업을 받도록 하겠습니다.

1) 테이블 만들기

다음과 같이 테스트 테이블 Test_Log를 만들도록 하겠습니다.

USE sqlworld
GO

CREATE TABLE Test1
(
col1 int,
col2 char(05)
)
GO

2) 데이터 추가하기

다음과 같이 스크립트를 이용해서 레코드를 추가하도록 하겠습니다.

INSERT INTO Test1 VALUES(1,'AAAAA')
INSERT INTO Test1 VALUES(2,'BBBBB')
INSERT INTO Test1 VALUES(3,'CCCCC')
INSERT INTO Test1 VALUES(4,'DDDDD')
INSERT INTO Test1 VALUES(5,'EEEEE')
GO

위 작업을 통해서 다섯개의 레코드가 Test1 테이블에 추가되었습니다.

2. 데이터베이스 백업

1) 데이터베이스 백업을 위한 백업 장치 만들기

다음과 같이 데이터베이스를 백업 받기 위한 백업 장치를 만들도록 하겠습니다.

EXEC sp_addumpdevice 'disk', 'sqlworld_dump', 'E:\Data\sqlworld_dump.bak'
GO

※ 백업 장치 만드는 방법에 대해서 이해하고 있지 못하신 분들은 예전에 진행된 백업 장치 만들기 강좌를 참고하여 주시기 바랍니다.

2) 데이터베이스 전체 백업

앞에서 만든 sqlworld_dump 백업 장치에 현재까지의 sqlworld 데이터베이스를 전체 백업 받도록 하겠습니다.

BACKUP DATABASE sqlworld TO sqlworld_dump WITH INIT
GO

이 전체 백업 작업으로 인해서 다섯개의 레코드가 추가된 Test1 테이블이 백업된 것을 알 수 있습니다.

※ 전체 백업에 대해 이해하고 있지 못하신 분들은 예전에 진행된 전체 백업 받기강좌를 참고하여 주시기 바랍니다.

3) 데이터 추가하기

다음과 같이 스크립트를 이용해서 다섯개의 레코드를 더 추가하도록 하겠습니다.

INSERT INTO Test1 VALUES(6,'FFFFF')
INSERT INTO Test1 VALUES(7,'GGGGG')
INSERT INTO Test1 VALUES(8,'HHHHH')
INSERT INTO Test1 VALUES(9,'IIIII')
INSERT INTO Test1 VALUES(10,'JJJJJ')
GO

위 작업을 통해서 다섯개의 레코드가 Test1 테이블에 추가되었습니다. 이제 Test1 테이블에는 col1 컬럼이 1 에서 10까지의 값을 갖는 열개의 레코드가 기록되어 있습니다.

4) 데이터베이스 차등 백업

앞에서 만든 sqlworld_dump 백업 장치에 현재까지의 sqlworld 데이터베이스를 차등 백업 받도록 하겠습니다.

BACKUP DATABASE sqlworld TO sqlworld_dump WITH DIFFERENTIAL
GO

이 차등 백업에 의해 앞의 3) 번에서 이루어진 다섯개의 레코드를 추가한 내용이 백업되었습니다.

※ 전체 백업에 대해 이해하고 있지 못하신 분들은 예전에 진행된 차등백업 받기 강좌를 참고하여 주시기 바랍니다.

5) 데이터 또 추가하기

다음과 같이 스크립트를 이용해서 다섯개의 레코드를 더 추가하도록 하겠습니다.

INSERT INTO Test1 VALUES(11,'KKKKK')
INSERT INTO Test1 VALUES(12,'LLLLL')
INSERT INTO Test1 VALUES(13,'MMMM')
INSERT INTO Test1 VALUES(14,'NNNNN')
INSERT INTO Test1 VALUES(15,'OOOOO')
GO

위 작업을 통해서 다섯개의 레코드가 Test1 테이블에 추가되었습니다. 이제 Test1 테이블에는 col1 컬럼이 1 에서 10까지의 값을 갖는 열개의 레코드가 기록되어 있습니다.

6) 데이터베이스 차등 백업

앞에서 만든 sqlworld_dump 백업 장치에 현재까지의 sqlworld 데이터베이스를 차등 백업 받도록 하겠습니다.

BACKUP DATABASE sqlworld TO sqlworld_dump WITH DIFFERENTIAL
GO

이 차등 백업에 의해 앞의 3)번과 5) 번에서 이루어진 열개의 레코드를 추가한 내용이 백업되었습니다.

7) 데이터 변경

다음과 같이 스크립트를 이용해서 col1 컬럼이 6보다 작은 다섯개의 레코드에 대하여 col2 컬럼을 전부 'XXXXX' 로 변경하였습니다.

UPDATE Test1 SET col2 = 'XXXXX' WHERE col1 < 6
GO

8) 트랜잭션 로그 백업

7) 번에서 이루어진 변경 처리를 로그 백업을 받도록 하겠습니다. 로그 백업을 위해 새로운 백업장치 sqlworld_log_dump 를 만들어 이 장치에 로그를 백업 받도록 하겠습니다.

EXEC sp_addumpdevice 'disk', 'sqlworld_log_dump', 'E:\Data\sqlworld_log_dump.bak'
GO

BACKUP LOG sqlworld TO sqlworld_log_dump WITH INIT
GO

9) 데이터 추가 변경 (문제 발생)

다음과 같이 스크립트를 이용해서 col1 컬럼이 5보다 큰 코드에 대하여 col2 컬럼을 전부 'YYYYY' 로 변경하였습니다.

UPDATE Test1 SET col2 = 'YYYYY'
GO

앗! WHERE 절을 적지 않아서 모든 레코드의 col2 컬럼이 'YYYYY'로 바뀌어 버렸습니다.

3. 현재까지 백업된 내용 정리

지금까지 이루어진 4번의 백업 작업에 의해 Test1 테이블에 대해서는 다음과 같은 내용이 백업되었습니다.

1) 전체 백업 : col1 컬럼에 1 부터 5 까지 다섯개의 레코드
2) 첫번째 차등 백업 : col1 컬럼에 6 부터 10 까지 다섯개의 레코드
3) 두번째 차등 백업 : col1 컬럼에 6 부터 15 까지 열개의 레코드
4) 로그 백업 : col1 컬럼이 6 보다 작은 다섯개의 레코드에 대해 col2 컬럼을 'XXXXX' 로 변경 한 행위

4. T-SQL을 이용한 데이터베이스 복원

현재의 상황에서 앞에서 수행되었던 모든 백업을 복원하여 col2 컬럼이 'YYYYY'로 바뀐 사태를 수습하도록 하겠습니다.

1) 전체 백업 복원

USE master
GO

RESTORE DATABASE sqlworld FROM sqlworld_dump WITH FILE =1, NORECOVERY
GO

o NORECOVERY 옵션으로 전체 백업 받은 내용을 복원 했습니다.
o FILE = 1은 sqlworld_dump 백업 장치에 여러 가지 백업(한번의 전체 백업과 두번의 차등 백업)이 있으므로 이 중에서 첫번째, 즉 전체 백업을 선택한다는 의미입니다.

2) 차등 백업 복원

RESTORE DATABASE sqlworld FROM sqlworld_dump WITH FILE = 3, NORECOVERY
GO

o NORECOVERY 옵션으로 차등백업 받은 내용을 복원 했습니다.
o FILE = 3 은 sqlworld_dump 백업 장치에 여러 가지 백업(한번의 전체 백업과 두번의 차등 백업)이 있으므로 이 중에서 세번째, 즉 두번째의 차등 백업을 선택한다는 의미입니다.
o 결국 첫번째의 차등 백업은 사용될 필요가 없습니다.

3) 로그 백업 복원

RESTORE LOG sqlworld FROM sqlworld_log_dump WITH RECOVERY
GO

o 로그 복원이 복원의 마지막 단계 이므로 RECOVERY 옵션을 사용하였습니다.

5. 과제

다음의 내용을 구현해 보시기 바랍니다.

1) 위에서 T-SQL로 구현한 복원을 EM(Enterprise Manager)를 이용해서 구현해 보세요.
2) 첫번째 차등 백업, 즉 col1 컬럼이 1부터 10까지만 가지고 있는 내용을 복원해 보세요.

부족한 부분은 관련된 강좌를 다시한번 확인하신 후 처리해 보시기 바랍니다.

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

출처 : http://www.sqlworld.pe.kr

 

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

Comments

번호 제목 글쓴이 날짜 조회
2685 :: 사용자 정의 함수(User Defined Function) :: 13 김영철 01.24 2680
2684 :: 트리거(Trigger) :: 13 김영철 01.24 2375
2683 :: 백업(Backup) 이란? :: 13 김영철 01.24 2500
2682 :: 백업 장치 만들기 :: 13 김영철 01.24 2318
2681 :: 전체 백업 받기 :: 13 김영철 01.24 2294
2680 :: 전체 백업으로부터의 복원 :: 13 김영철 01.24 2500
2679 :: 차등 백업 받기와 복원 :: 13 김영철 01.24 2121
2678 :: 데이터베이스 옵션을 이용한 트랜잭션 로그 제어 :: 13 김영철 01.24 2885
2677 :: 트랜잭션 로그 줄이기 테스트 :: 13 김영철 01.24 2304
열람중 :: 백업과 복원 정리 :: 13 김영철 01.24 2010
2675 :: SQL Server Agent 서비스 이해 :: 13 김영철 01.24 2820
2674 :: [작업 만들기 마법사] 이용하기 :: 13 김영철 01.24 2725
2673 :: 등록된 작업 살펴보기 :: 13 김영철 01.24 2447
2672 :: 새로운 작업 등록하기 :: 13 김영철 01.24 2057
2671 :: 데이터베이스 유지 관리 계획 마법사 :: 13 김영철 01.24 2354
2670 ::[데이터 가져오기 및 보내기]를 이용한 데이터 변환 :: 13 김영철 01.24 2694
2669 :: 기본적인 웹 페이지 만들기 :: 13 김영철 01.24 2108
2668 :: 템플릿을 이용한 웹 페이지 만들기 :: 13 김영철 01.24 2322
2667 ▒엑셀파일을 ms-sql DB테이블로 전환하기 13 김영철 01.24 3252
2666 :: INFOEMATION_SCHEMA 뷰 이용하기 :: 13 김영철 01.24 2119
2665 :: 인증모드와 로그인 관리 :: 13 김영철 01.24 2404
2664 :: 데이터베이스 사용자 추가 13 김영철 01.24 2242
2663 :: 연결된 서버 만들기 13 김영철 01.24 2933
2662 :: 엑셀 워크시트를 연결된 서버로 만들기 13 김영철 01.24 3115
2661 mssql 함수모음 13 김영철 01.24 3402
2660 :: text타입의 본문 문자열바꾸기 Sql 13 김영철 01.24 2346
2659 오라클과 MSSQL 의 날짜 비교 13 김영철 01.24 3564
2658 MSSQL 백업복구 13 김영철 01.24 3114
2657 [MSSQL]쿼리 분석기 더 잘 사용하기 13 김영철 01.24 3414
2656 SQL Injection 기법 정리(MSSQL) 13 김영철 01.24 4173
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취