트랜잭션 로그 백업 적용(SQL Server)
이 항목에서는 전체 복구 모델 또는 대량 로그 복구 모델과 관련된 내용을 다룹니다.
이 항목에서는 SQL Server 데이터베이스 복원의 일부로 수행되는 트랜잭션 로그 백업 적용에 대해 설명합니다.
항목 내용:
트랜잭션 로그 백업 복원을 위한 요구 사항
트랜잭션 로그 백업을 적용하려면 다음 요구 사항을 충족해야 합니다.
복원 시퀀스를 위한 충분한 로그 백업: 복원 순서를 완료하려면 백업된 로그 레코드가 충분히 있어야 합니다. 복원 시퀀스를 시작하려면 필요한 로그 백업(필요한 경우 비상 로그 백업 을 포함)을 반드시 확보해야 합니다.
올바른 복원 순서: 즉시 이전의 전체 데이터베이스 백업 또는 차등 데이터베이스 백업을 먼저 복원해야 합니다. 그런 후 전체 또는 차등 데이터베이스 백업 후에 생성된 모든 트랜잭션 로그를 시간순으로 복원해야 합니다. 이 로그 체인의 트랜잭션 로그 백업이 손실되거나 손상된 경우 손실된 트랜잭션 로그 이전의 트랜잭션 로그만 복원할 수 있습니다.
데이터베이스가 아직 복구되지 않음: 최종 트랜잭션 로그가 적용될 때까지 데이터베이스를 복구할 수 없습니다. 로그 체인이 끝나기 이전의 중간 트랜잭션 로그 백업 중 하나를 복원한 후 데이터베이스를 복구할 경우 해당 시점 이후의 데이터베이스를 복원하려면 전체 데이터베이스 백업부터 시작하여 전체 복원 시퀀스를 다시 시작해야 합니다.
팁
최선의 방법은 모든 로그 백업을 복원하는 것입니다(RESTORE LOG database_name WITH NORECOVERY). 그런 후 마지막 로그 백업을 복원한 후 데이터베이스를 별도의 작업으로 복구합니다(RESTORE DATABASE database_name WITH RECOVERY).
복구 및 트랜잭션 로그
복원 작업을 완료하고 데이터베이스를 복구할 때 완료되지 않은 트랜잭션은 모두 롤백되는데 이것을 실행 취소 단계라고 합니다. 롤백은 데이터베이스의 무결성을 복원하는 데 필요합니다. 롤백 후 데이터베이스는 온라인 상태가 되고 트랜잭션 로그 백업이 더 이상 데이터베이스에 적용되지 않습니다.
예를 들어 일련의 트랜잭션 로그 백업은 장기 실행 트랜잭션을 포함합니다. 트랜잭션의 시작은 첫 번째 트랜잭션 로그 백업에 기록되지만 트랜잭션의 끝은 두 번째 트랜잭션 로그 백업에 기록됩니다. 첫 번째 트랜잭션 로그 백업에는 커밋 또는 롤백 작업의 기록이 없습니다. 첫 번째 트랜잭션 로그 백업이 적용될 때 복구 작업이 실행되면 장기 실행 트랜잭션은 완료되지 않은 것으로 취급되고 해당 트랜잭션에 대한 첫 번째 트랜잭션 로그 백업에 기록된 데이터 수정이 롤백됩니다. SQL Server 에서는 이 시점 이후에 두 번째 트랜잭션 로그 백업을 적용할 수 없습니다.
참고
경우에 따라서는 로그 복원 중에 파일을 명시적으로 추가할 수 있습니다.
로그 백업을 사용하여 오류 지점까지 복원
예를 들어 다음과 같은 순서의 이벤트가 발생한다고 가정합니다.
Time | 이벤트 |
---|---|
8:00 A.M. | 데이터베이스를 백업하여 전체 데이터베이스 백업을 만듭니다. |
정오 | 트랜잭션 로그를 백업합니다. |
오후 4:00 | 트랜잭션 로그를 백업합니다. |
오후 6:00 | 데이터베이스를 백업하여 전체 데이터베이스 백업을 만듭니다. |
8:00 P.M. | 트랜잭션 로그를 백업합니다. |
9:45 P.M. | 오류가 발생합니다. |
참고
이 백업 예제 시퀀스에 대한 설명은 트랜잭션 로그 백업(SQL Server)을 참조하세요.
데이터베이스를 9:45 P.M.(오류 시점)의 상태로 복원하려면 다음 절차 중 하나를 사용합니다.
대체 1: 가장 최근의 전체 데이터베이스 백업을 사용하여 데이터베이스 복원
오류 발생 시점에 활성화되어 있던 트랜잭션 로그의 비상 로그 백업을 만듭니다.
8:00 A.M.의 전체 데이터베이스 백업을 복원하지 말고 대신 가장 최근의 6:00 P.M. 전체 데이터베이스 백업을 복원한 다음 8:00 P.M. 로그 백업 및 비상 로그 백업을 적용합니다.
대체 2: 이전의 전체 데이터베이스 백업을 사용하여 데이터베이스 복원
참고
이 대체 프로세스는 문제로 인해 6:00 P.M.의 전체 데이터베이스 백업을 사용할 수 없는 경우에 유용하며 6:00 P.M.의 전체 데이터베이스 백업에서 복원하는 것보다 시간이 오래 걸립니다.
오류 발생 시점에 활성화되어 있던 트랜잭션 로그의 비상 로그 백업을 만듭니다.
8:00 A.M.의 전체 데이터베이스 백업을 복원한 다음 4개의 트랜잭션 로그 백업을 순서대로 복원합니다. 이렇게 하면 완료된 모든 트랜잭션을 9:45 P.M.까지 롤포워드합니다.
이 대체 프로세스를 통해 일련의 전체 데이터베이스 백업에서 트랜잭션 로그 백업 체인을 유지함으로써 제공되는 중복 보안을 확인할 수 있습니다.
참고
경우에 따라 트랜잭션 로그를 사용하여 데이터베이스를 지정 시간으로 복원할 수도 있습니다. 자세한 내용은 SQL Server 데이터베이스를 특정 시점(전체 복구 모델)으로 복원합니다.
관련 작업
트랜잭션 로그 백업을 적용하려면
복구 지점으로 복원하려면
SqlRestore (SMO)
WITH NORECOVERY를 사용하여 백업을 복원한 후 데이터베이스를 복구하려면