풀 백업을 받고 그 다음에 트랜잭션 로그 백업을 받게 되면 이전 트랜잭션 로그 백업과의 로그체인이 끊어질까?라는 의문에서 아래와 같이 테스트를 해 보았습니다.
/* 테스트 시나리오 */
각각의 스텝을 시간 차를 두어 실행합니다. 문제가 있다는 가정하에 7번 스텝 바로 이전의 시점으로 돌아가려고 합니다.
- 데이터 입력
- 풀 백업
- 데이터 입력
- 데이터 입력
- 트랜잭션 로그 백업
- 데이터 입력
- 풀 백업
- 데이터 입력
- 트랜잭션 로그 백업
/* 테스트 전 사전 준비 SCRIPT */
CREATE DATABASE BED GO
USE BED GO
CREATE TABLE TBL1 (A INT) GO
INSERT INTO TBL1 VALUES(1) GO
--1차 FULLBACKUP BACKUP DATABASE BED TO DISK = 'C:\TEST\FULL1.BAK' GO
INSERT INTO TBL1 VALUES(2) GO
INSERT INTO TBL1 VALUES(3) GO
--1차 트랜잭션 로그 백업 BACKUP LOG BED TO DISK = 'C:\TEST\TRN1.BAK' GO
INSERT INTO TBL1 VALUES (4) GO
SELECT * FROM TBL1 GO
--2차 트랜잭션 로그 백업 BACKUP LOG BED TO DISK = 'C:\TEST\TRN2.BAK' GO
INSERT INTO TBL1 VALUES (5) GO
--2차 FULLBACKUP BACKUP DATABASE BED TO DISK = 'C:\TEST\FULL2.BAK' GO
INSERT INTO TBL1 VALUES (6) GO
--3차 트랜잭션 로그 백업 BACKUP LOG BED TO DISK = 'C:\TEST\TRN3.BAK' GO |
/* 복원 시나리오 SCRIPT */
RESTORE DATABASE BED FROM DISK = 'C:\TEST\FULL1.BAK' WITH NORECOVERY GO
RESTORE LOG BED FROM DISK = 'C:\TEST\TRN1.BAK' WITH NORECOVERY GO
RESTORE LOG BED FROM DISK = 'C:\TEST\TRN2.BAK' WITH NORECOVERY GO
RESTORE LOG BED FROM DISK = 'C:\TEST\TRN3.BAK' WITH STOPAT = '2015-03-13 10:19:14.000', RECOVERY GO |
/* BACKUP 실행 HISTORY 확인 QUERY */
SELECT DATABASE_NAME, TYPE, BACKUP_SIZE, RECOVERY_MODEL, first_lsn,last_lsn, backup_start_date, backup_finish_date FROM MSDB.DBO.backupset |
실행 결과 값
=>풀 백업 이후 트랜잭션 로그 백업의 LSN의 값과 풀 백업 이전의 트랜잭션 로그 백업의 LSN값이 동일합니다.
이러한 결과 값으로 보아 풀 백업을 하더라도 로그 체인이 끊기지 않기 때문에 로그 백업만 잘 되어 있다라는 가정하에 특정 시점의 복원이 가능합니다.
결론 트랜잭션 로그 체인이 정상, 연결되어 있다는 가정하에 트랜잭션 로그 파일을 잘 보관하고 있다면 원하는 시점으로 복원이 가능합니다. |
'Database > Microsoft SQL Server' 카테고리의 다른 글
로그인 감사 설정 변경 (0) | 2015.05.18 |
---|---|
Pssdiag 수집 방법 (0) | 2015.03.13 |
SQL Server Native Client (0) | 2014.09.30 |
파일을 이용한 백업 및 복원 (0) | 2014.09.14 |
패스워드 분실 / 로그인 불가 (0) | 2014.08.25 |