개요
여기서는 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 |
참고
데이터베이스의 데이터파일과 로그파일 모두 손상일 경우
- 로그 파일이 손상 되었을 경우 비상로그를 백업받을 수 없기 때문에 비상로그에 대한 백업 및 복구는 진행 할수 없다. 이때는 백업받은 파일(전체,로그백업)을 사용하여 복원(불완전 복구)이 가능하다.
'DBMS > MS-SQL' 카테고리의 다른 글
[MS-SQL] 데이터베이스 복원 - 지정 시간 복구 (0) | 2020.02.13 |
---|---|
[MS-SQL] SQL Server 2019 백업 옵션 (0) | 2020.02.12 |
[MS-SQL] 복구 모델 (0) | 2020.02.11 |
[MS-SQL] SQL Server Management Studio (0) | 2020.02.11 |
[MS-SQL] 서버 인증 모드 변경 (0) | 2020.02.10 |