DBAtlas · 데이터베이스 운영 아틀라스

복원 전 tail-log 백업 수행 (NORECOVERY / NO_TRUNCATE)

SQL Server복원 및 복구

명령어

-- A) Healthy DB: back up the tail and put the DB into RESTORING (no new writes):
BACKUP LOG [Musteri]
TO DISK = N'D:\Backup\Musteri_tail.trn'
WITH NORECOVERY, CHECKSUM, INIT;

-- B) Damaged DB / data file lost, log file intact:
-- BACKUP LOG [Musteri]
-- TO DISK = N'D:\Backup\Musteri_tail_damaged.trn'
-- WITH NO_TRUNCATE, CONTINUE_AFTER_ERROR, INIT;

SELECT name, state_desc FROM sys.databases WHERE name = N'Musteri';

하는 일

마지막 로그 백업 이후 기록된 로그 부분(tail)을 백업하여 복원 체인이 장애 시점까지 도달하고 마지막 몇 분의 트랜잭션을 잃지 않게 한다.

사용 시점

같은 데이터베이스 위에 복원하기 전, 데이터 파일 디스크 장애 시, 또는 마이그레이션의 최종 전환 시.

주의

NORECOVERY는 데이터베이스를 RESTORING 상태로 만들고 사용자 접근을 종료하므로 잘못된 데이터베이스에서 실행하지 않는다. tail-log 백업 없이 WITH REPLACE로 복원하면 마지막 로그 백업 이후의 트랜잭션이 영구 폐기된다. NO_TRUNCATE로 수행한 백업은 메타데이터가 불완전할 수 있으므로 복원 후 DBCC CHECKDB를 실행한다. SIMPLE 복구 모델에서는 tail-log 백업이 불가능하다.

DBAtlas에서 열기 →

관련 항목