개요
여기서는 T-SQL을 이용한 데이터베이스 지정 시간까지의 복원(불완전 복원) 방법에 대해서 다룬다.
구성환경
시나리오
12:00 데이터베이스 풀 백업
-- 데이터 입력/수정/삭제등 데이터 변경 발생
13:00 Log 백업
13:29 데이터 입력 오류
14:00 Log 백업
-- 데이터 입력/수정/삭제등 데이터 변경 발생
02:30 데이터 오류 발견
데이터베이스 백업
1. 12: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. 13: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. 14: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. 14: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, STOPAT = '2020-02-13 13:30:00.000' 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, STOPAT = '2020-02-13 13:30:00.000' 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,STOPAT = '2020-02-13 13:30:00.000' 2> go 파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb'에 대해 0개의 페이지를 처리했습니다 . 파일 1에서 데이터베이스 'hoyadb', 파일 'hoyadb_log'에 대해 5개의 페이지를 처리했습니다 . RESTORE LOG이(가) 5개의 페이지를 0.042초 동안 처리했습니다(0.837MB/초). 1> |
3.3 비상로그 복구
- 비상로그(또는 백업로그)가 지정시점의 트랜잭션로그를 포함하고 있지 않을 경우 오류 발생
1> RESTORE LOG hoyadb FROM DISK = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\taillog.bck' WITH NORECOVERY, STOPAT = '2020-02-13 13:30:00.000' |
4. 데이터베이스 복원
1> RESTORE DATABASE hoyadb WITH RECOVERY 2> go RESTORE DATABASE이(가) 0개의 페이지를 1.162초 동안 처리했습니다(0.000MB/초). 1> |
'DBMS > MS-SQL' 카테고리의 다른 글
[MS-SQL] master 데이터베이스 복원 (0) | 2020.02.13 |
---|---|
[MS-SQL] 데이터베이스 복원 - 로그 파일 복원 (0) | 2020.02.13 |
[MS-SQL] SQL Server 2019 백업 옵션 (0) | 2020.02.12 |
[MS-SQL] 데이터베이스 복원 - 실패 지점 복원 (0) | 2020.02.12 |
[MS-SQL] 복구 모델 (0) | 2020.02.11 |