트랜잭션 로그 백업 적용(SQL Server)Apply Transaction Log Backups (SQL Server)

이 항목 적용 대상: 예SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse 이 항목에서는 전체 복구 모델 또는 대량 로그 복구 모델과 관련된 내용을 다룹니다. The topic is relevant only for the full recovery model or bulk-logged recovery model.

이 항목에서는 SQL ServerSQL Server 데이터베이스 복원의 일부로 수행되는 트랜잭션 로그 백업 적용에 대해 설명합니다.This topic describes applying transaction log backups as part of restoring a SQL ServerSQL Server database.

트랜잭션 로그 백업 복원을 위한 요구 사항Requirements for restoring transaction log backups

트랜잭션 로그 백업을 적용하려면 다음 요구 사항을 충족해야 합니다.To apply a transaction log backup, the following requirements must be met:

  • 복원 순서를 위한 충분한 로그 백업: 복원 순서를 완료하려면 백업된 로그 레코드가 충분히 있어야 합니다.Enough Log Backups for a Restore Sequence : You must have enough log records backed up to complete a restore sequence. 복원 시퀀스를 시작하려면 필요한 로그 백업(필요한 경우 비상 로그 백업 을 포함)을 반드시 확보해야 합니다.The necessary log backups, including the tail-log backup where required, must be available before the start of the restore sequence.

  • 올바른 복원 순서: 바로 이전의 전체 데이터베이스 백업 또는 차등 데이터베이스 백업을 먼저 복원해야 합니다.Correct restore order: The immediately previous full database backup or differential database backup must be restored first. 그런 후 전체 또는 차등 데이터베이스 백업 후에 생성된 모든 트랜잭션 로그를 시간순으로 복원해야 합니다.Then, all transaction logs that are created after that full or differential database backup must be restored in chronological order. 이 로그 체인의 트랜잭션 로그 백업이 손실되거나 손상된 경우 손실된 트랜잭션 로그 이전의 트랜잭션 로그만 복원할 수 있습니다.If a transaction log backup in this log chain is lost or damaged, you can restore only transaction logs before the missing transaction log.

  • 데이터베이스가 아직 복구되지 않음: 마지막 트랜잭션 로그가 적용될 때까지 데이터베이스를 복구할 수 없습니다.Database not yet recovered: The database cannot be recovered until after the final transaction log has been applied. 로그 체인이 끝나기 이전의 중간 트랜잭션 로그 백업 중 하나를 복원한 후 데이터베이스를 복구할 경우 해당 시점 이후의 데이터베이스를 복원하려면 전체 데이터베이스 백업부터 시작하여 전체 복원 시퀀스를 다시 시작해야 합니다.If you recover the database after restoring one of the intermediate transaction log backups, that before the end of the log chain, you cannot restore the database past that point without restarting the complete restore sequence, starting with the full database backup.

    TIP! 최선의 방법은 모든 로그 백업을 복원하는 것입니다(RESTORE LOG database_name WITH NORECOVERY).A best practice is to restore all the log backups (RESTORE LOG database_name WITH NORECOVERY). 그런 후 마지막 로그 백업을 복원한 후 데이터베이스를 별도의 작업으로 복구합니다(RESTORE DATABASE database_name WITH RECOVERY).Then, after restoring the last log backup, recover the database in a separate operation (RESTORE DATABASE database_name WITH RECOVERY).

복구 및 트랜잭션 로그Recovery and transaction logs

복원 작업을 완료하고 데이터베이스를 복구할 때 완료되지 않은 트랜잭션은 모두 롤백되는데When you finish the restore operation and recover the database, recovery rolls back all incomplete transactions. 이것을 실행 취소 단계라고 합니다.This is known as the undo phase. 롤백은 데이터베이스의 무결성을 복원하는 데 필요합니다.Rolling back is required to restore the integrity of the database. 롤백 후 데이터베이스는 온라인 상태가 되고 트랜잭션 로그 백업이 더 이상 데이터베이스에 적용되지 않습니다.After rollback, the database goes online, and no more transaction log backups can be applied to the database.

예를 들어 일련의 트랜잭션 로그 백업은 장기 실행 트랜잭션을 포함합니다.For example, a series of transaction log backups contain a long-running transaction. 트랜잭션의 시작은 첫 번째 트랜잭션 로그 백업에 기록되지만 트랜잭션의 끝은 두 번째 트랜잭션 로그 백업에 기록됩니다.The start of the transaction is recorded in the first transaction log backup, but the end of the transaction is recorded in the second transaction log backup. 첫 번째 트랜잭션 로그 백업에는 커밋 또는 롤백 작업의 기록이 없습니다.There is no record of a commit or rollback operation in the first transaction log backup. 첫 번째 트랜잭션 로그 백업이 적용될 때 복구 작업이 실행되면 장기 실행 트랜잭션은 완료되지 않은 것으로 취급되고 해당 트랜잭션에 대한 첫 번째 트랜잭션 로그 백업에 기록된 데이터 수정이 롤백됩니다.If a recovery operation runs when the first transaction log backup is applied, the long-running transaction is treated as incomplete, and data modifications recorded in the first transaction log backup for the transaction are rolled back. SQL ServerSQL Server 에서는 이 시점 이후에 두 번째 트랜잭션 로그 백업을 적용할 수 없습니다. does not allow for the second transaction log backup to be applied after this point.

참고: 경우에 따라서는 로그 복원 중에 파일을 명시적으로 추가할 수 있습니다.NOTE: In some circumstances, you can explicitly add a file during log restore.

로그 백업을 사용하여 오류 지점까지 복원Use log backups to restore to the failure point

예를 들어 다음과 같은 순서의 이벤트가 발생한다고 가정합니다.Assume the following sequence of events.

TimeTime 이벤트Event
8:00 A.M.8:00 A.M. 데이터베이스를 백업하여 전체 데이터베이스 백업을 만듭니다.Back up database to create a full database backup.
정오Noon 트랜잭션 로그를 백업합니다.Back up transaction log.
오후 4:004:00 P.M. 트랜잭션 로그를 백업합니다.Back up transaction log.
오후 6:006:00 P.M. 데이터베이스를 백업하여 전체 데이터베이스 백업을 만듭니다.Back up database to create a full database backup.
8:00 P.M.8:00 P.M. 트랜잭션 로그를 백업합니다.Back up transaction log.
9:45 P.M.9:45 P.M. 오류가 발생합니다.Failure occurs.

참고: 이 백업 시퀀스의 예제에 대한 설명은 트랜잭션 로그 백업(SQL Server)을 참조하세요.NOTE: For an explanation of this example sequence of backups, see Transaction Log Backups (SQL Server).

데이터베이스를 오류 발생 시점인 오후 9:45의 상태로 복원하려면To restore the database to its state at 9:45 P.M. 다음 대체 절차 중 하나를 사용하십시오.(the point of failure), either of the following alternative procedures can be used:

대체 1: 가장 최근의 전체 데이터베이스 백업을 사용하여 데이터베이스 복원Alternative 1: Restore the database by using the most recent full database backup

  1. 오류 발생 시점에 활성화되어 있던 트랜잭션 로그의 비상 로그 백업을 만듭니다.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. 8:00 A.M.의 전체 데이터베이스 백업을Do not restore the 8:00 A.M. 시간이 오래 걸립니다.full database backup. 대신 가장 최근의 6:00 P.M. 전체 데이터베이스 백업을Instead, restore the more recent 6:00 P.M. 복원한 다음 8:00 P.M.full database backup, and then apply the 8:00 P.M. 로그 백업 및 비상 로그 백업을 적용합니다.log backup and the tail-log backup.

    대체 2: 이전의 전체 데이터베이스 백업을 사용하여 데이터베이스 복원Alternative 2: Restore the database by using an earlier full database backup

참고: 이 대체 프로세스는 문제로 인해 6:00 P.M.의 전체 데이터베이스 백업을 사용할 수 없는 경우에 유용합니다.NOTE: This alternative process is useful if a problem prevents you from using the 6:00 P.M. 시간이 오래 걸립니다.full database backup. 6:00 P.M.의 전체 데이터베이스 백업에서 복원하는 것보다This process takes longer than restoring from the 6:00 P.M. 시간이 오래 걸립니다.full database backup.

  1. 오류 발생 시점에 활성화되어 있던 트랜잭션 로그의 비상 로그 백업을 만듭니다.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. 8:00 A.M.의 전체 데이터베이스 백업을Restore the 8:00 A.M. 복원한 다음 4개의 트랜잭션 로그 백업을 순서대로 복원합니다.full database backup, and then restore all four transaction log backups in sequence. 이렇게 하면 완료된 모든 트랜잭션을 9:45 P.M.까지 롤포워드합니다.This rolls forward all completed transactions up to 9:45 P.M.

    이 대체 프로세스를 통해 일련의 전체 데이터베이스 백업에서 트랜잭션 로그 백업 체인을 유지함으로써 제공되는 중복 보안을 확인할 수 있습니다.This alternative points out the redundant security offered by maintaining a chain of transaction log backups across a series of full database backups.

참고: 경우에 따라 트랜잭션 로그를 사용하여 데이터베이스를 지정 시간으로 복원할 수도 있습니다.NOTE: In some cases, you can also use transaction logs to restore a database to a specific point in time. 자세한 내용은 SQL Server 데이터베이스를 지정 시간으로 복원(전체 복구 모델)라고 합니다.For more information, Restore a SQL Server Database to a Point in Time (Full Recovery Model).

관련 태스크Related tasks

트랜잭션 로그 백업을 적용하려면To apply a transaction log backup

참고 항목See also

트랜잭션 로그(SQL Server)The Transaction Log (SQL Server)