반응형
- /**********************************************************************************************
-- Title :[2k] 전체-차등-로그-비상로그 활용한 복구
-- Reference : hanbitbook.co.kr
-- Key word : backup log recovery 비상 로그 no_truncate restore
**********************************************************************************************/
USE master;
DROP DATABASE testDB1;
--데이터베이스 생서
CREATE DATABASE [testDB1] ON PRIMARY
( NAME = N'testDB1'
, FILENAME = N'd:\testDB1.mdf'
)
LOG ON
( NAME = N'testDB1_log'
, FILENAME = N'd:\testDB1_log.ldf'
);
USE [testDB1];
--테이블 생성
CREATE TABLE tbl1 (no int);
--데이터 저장 후 전체 백업
INSERT INTO tbl1 VALUES(10);
BACKUP DATABASE testDB1 to DISK='d:\testDB1_bak' WITH INIT;
--데이터 저장 후 차등 백업
INSERT INTO tbl1 VALUES(20);
INSERT INTO tbl1 VALUES(30);
BACKUP DATABASE testDB1 to DISK='d:\testDB1_bak' WITH DIFFERENTIAL;
--데이터 저장 후 로그 백업
INSERT INTO tbl1 VALUES(40);
INSERT INTO tbl1 VALUES(50);
BACKUP LOG testDB1 to DISK='d:\testDB1_bak';
--데이터 저장 후 로그 백업
INSERT INTO tbl1 VALUES(60);
BACKUP LOG testDB1 to DISK='d:\testDB1_bak';
--백업 확인(BackupType 필드 확인)
RESTORE HEADERONLY FROM DISK='d:\testDB1_bak';
--데이터 추가
INSERT INTO tbl1 VALUES(70);
INSERT INTO tbl1 VALUES(80);
INSERT INTO tbl1 VALUES(90);
SELECT * FROM tbl1;
--장애 임의 발생
USE master;
ALTER DATABASE testDB1 SET OFFLINE; -- 이후 testDB1.mdf 삭제
ALTER DATABASE testDB1 SET ONLINE; --에러 발생
/*
-- 복구 시작
*/
--백업 받지 못한 비상 로그 백업(NO_TRUNCATE 옵션 증요)
BACKUP LOG testDB1 TO DISK='d:\임시로그백업.bak'
WITH NO_TRUNCATE, INIT;
--전체 백업분 복구
RESTORE DATABASE testDB1 FROM DISK='d:\testDB1_bak'
WITH FILE=1
, NORECOVERY;
--차등 백업분 복구
RESTORE DATABASE testDB1 FROM DISK='d:\testDB1_bak'
WITH FILE=2
, NORECOVERY;
--처음 로그 백업분 복구
RESTORE LOG testDB1 FROM DISK='d:\testDB1_bak'
WITH FILE=3
, NORECOVERY;
--두번째 로그 백업분 복구
RESTORE LOG testDB1 FROM DISK='d:\testDB1_bak'
WITH FILE=4
, NORECOVERY;
--비상 로그 백업분 복구(RECOVERY설정)
RESTORE LOG testDB1 FROM DISK='d:\임시로그백업.bak'
WITH RECOVERY;
--복구 확인
USE testDB1;
SELECT * from tbl1;
반응형