본문 바로가기

DBMS/MS-SQL

[MS-SQL] 데이터베이스 복원 - 실패 지점 복원

반응형

개요

여기서는 T-SQL을 이용한 데이터베이스 장애시점까지 실패 지점 복원(완전 복원) 방법에 대해서 다룬다.

구성환경

 

시나리오

00:00 데이터베이스 풀 백업

-- 데이터 입력/수정/삭제등 데이터 변경 발생

01:00 Log 백업

-- 데이터 입력/수정/삭제등 데이터 변경 발생

02:00 Log 백업

-- 데이터 입력/수정/삭제등 데이터 변경 발생

02:30 데이터베이스 장애(hoyadb.mdf 데이터 파일 손상)

 

** 복원할려는 데이터베이스의 복구 모델은 전체(FULL)

1> alter database hoyadb set recovery full
2> go 
1>

참고) T-SQL에서 백업 복구 모델 변경

ALTER DATABASE databaseName SET RECOVERY { FULL | BULK_LOGGED | SIMPLE }

 

데이터베이스 백업

 1. 00:00 데이터베이스 풀 백업

1> BACKUP DATABASE hoyadb TO DISK = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\hoyadb.bck' WITH FORMAT  
2> go
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb'에 대해 408개의 페이지를 처리했습니다 .
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb_log'에 대해 2개의 페이지를 처리했습니다 .
BACKUP DATABASE이(가) 410개의 페이지를 0.547초 동안 처리했습니다(5.848MB/초).
1> 

2. 01:00 로그 백업

1> BACKUP LOG hoyadb TO DISK = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\hoyadblog1.bck' WITH FORMAT  
2> go
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb_log'에 대해 22개의 페이지를 처리했습니다 .
BACKUP LOG이(가) 22개의 페이지를 0.084초 동안 처리했습니다(2.046MB/초).
1>

3. 02:00 로그 백업

1> BACKUP LOG hoyadb to DISK = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\hoyadblog2.bck' WITH FORMAT  
2> go
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb_log'에 대해 5개의 페이지를 처리했습니다 .
BACKUP LOG이(가) 5개의 페이지를 0.059초 동안 처리했습니다(0.595MB/초).
1>

4. 02:30 데이터베이스 장애

데이터 베이스 오류 메시지

 

데이터베이스 복원 절차

1. 비상로그백업 및 복구 모두로 변경

 - 비상 로그 : 백업되지 않은 트랜잭션 로그

1> BACKUP LOG hoyadb TO DISK = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\taillog.bck' WITH NORECOVERY, NO_TRUNCATE
2> go
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb_log'에 대해 9개의 페이지를 처리했습니다 .
BACKUP LOG이(가) 9개의 페이지를 0.074초 동안 처리했습니다(0.950MB/초).
1>

2. 데이터베이스 풀 백업 복구

1> RESTORE DATABASE hoyadb FROM DISK = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\hoyadb.bck' WITH NORECOVERY 
2> go
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb'에 대해 408개의 페이지를 처리했습니다 .
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb_log'에 대해 2개의 페이지를 처리했습니다 .
RESTORE DATABASE이(가) 410개의 페이지를 0.448초 동안 처리했습니다(7.141MB/초).
1>

3. 로그 파일 복구

 3.1 01시에 백업된 로그 파일 복구

1> RESTORE LOG hoyadb FROM DISK = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\hoyadblog1.bck' WITH NORECOVERY 
2> go
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb'에 대해 0개의 페이지를 처리했습니다 .
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb_log'에 대해 22개의 페이지를 처리했습니다 .
RESTORE LOG이(가) 22개의 페이지를 0.091초 동안 처리했습니다(1.888MB/초).
1>

 3.2 02시에 백업된 로그 파일 복구

1> RESTORE LOG hoyadb FROM DISK = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\hoyadblog2.bck' WITH NORECOVERY
2> go
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb'에 대해 0개의 페이지를 처리했습니다 .
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb_log'에 대해 5개의 페이지를 처리했습니다 .
RESTORE LOG이(가) 5개의 페이지를 0.042초 동안 처리했습니다(0.837MB/초).
1>

4. 비상로그 복구 및 데이터베이스 복원

1> RESTORE LOG hoyadb FROM DISK = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\taillog.bck' WITH RECOVERY 
2> go
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb'에 대해 0개의 페이지를 처리했습니다 .
파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb_log'에 대해 9개의 페이지를 처리했습니다 .
RESTORE LOG이(가) 9개의 페이지를 0.055초 동안 처리했습니다(1.278MB/초).
1>

 

참고

 데이터베이스의 데이터파일과 로그파일 모두 손상일 경우

 - 로그 파일이 손상 되었을 경우 비상로그를 백업받을 수 없기 때문에 비상로그에 대한 백업 및 복구는 진행 할수 없다. 이때는 백업받은 파일(전체,로그백업)을 사용하여 복원(불완전 복구)이 가능하다.

반응형