전체 데이터베이스 복원 수행(전체 복구 모델)
전체 데이터베이스 복원의 목적은 전체 데이터베이스를 복원하는 것입니다. 복원하는 동안 전체 데이터베이스는 오프라인 상태가 됩니다. 데이터베이스의 일부를 온라인에 연결하기 전에 데이터베이스의 모든 부분의 지정 시간이 같고 커밋되지 않은 트랜잭션이 없는 일치하는 지점으로 모든 데이터를 복구합니다.
전체 복구 모델에서는 특정 지정 시간으로 데이터베이스를 복원할 수 있습니다. 시점은 사용 가능한 최신 백업, 특정 날짜 및 시간 또는 표시된 트랜잭션 등이 될 수 있습니다.
보안 정보 |
---|
출처를 알 수 없거나 신뢰할 수 없는 데이터베이스는 연결하거나 복원하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 출처를 알 수 없거나 신뢰할 수 없는 데이터베이스를 사용하려면 먼저 프로덕션 서버가 아닌 서버에서 해당 데이터베이스에 대해 DBCC CHECKDB를 실행하고 저장 프로시저 또는 기타 사용자 정의 코드 같은 데이터베이스의 코드도 검사하십시오. |
전체 데이터베이스 복원
일반적으로 실패 지점으로 데이터베이스를 복구하는 작업에는 다음의 기본 단계가 포함됩니다.
활성 트랜잭션 로그(비상 로그)를 백업합니다. 이렇게 하면 비상 로그 백업이 만들어집니다. 활성 트랜잭션 로그를 사용할 수 없을 때 해당 로그 부분의 모든 트랜잭션이 손실됩니다.
중요 대량 로그 복구 모델에서 대량 로그 작업이 포함된 로그를 백업하려면 데이터베이스의 모든 데이터 파일에 대한 액세스 권한이 있어야 합니다. 데이터 파일에 액세스할 수 없는 경우 트랜잭션 로그를 백업할 수 없습니다. 이 경우 가장 최근의 로그 백업 이후 변경된 모든 내용을 수동으로 다시 실행해야 합니다.
자세한 내용은 비상 로그 백업을 참조하십시오.
데이터베이스를 복구하지 않고 가장 최근의 전체 데이터베이스 백업을 복원합니다(RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).
차등 백업이 있는 경우 데이터베이스를 복구하지 않고 가장 최근의 차등 백업을 복원합니다(RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY).
복원한 백업 이후 첫 번째 트랜잭션 로그 백업부터 시작하여 NORECOVERY의 순서로 로그를 복원합니다.
데이터베이스를 복구합니다(RESTORE DATABASE database_name WITH RECOVERY). 또는 이 단계를 마지막 로그 백업 복원과 결합할 수도 있습니다.
전체 데이터베이스 복원은 일반적으로 로그 백업 내 표시된 트랜잭션 또는 지정 시간으로 복구될 수 있습니다. 그러나 대량 로그 복구 모델에서 로그 백업에 대량 로그 변경 내용이 있을 경우 지정 시간 복구를 사용할 수 없습니다. 자세한 내용은 데이터베이스를 백업 내 지점으로 복원을 참조하십시오.
다음 그림에서는 이 프로세스를 보여 줍니다. 오류가 발생한 후(1) 비상 로그 백업이 생성됩니다(2). 그런 다음 데이터베이스가 오류 지점으로 복원됩니다. 이 과정에는 데이터베이스 백업 및 후속 차등 백업을 복원하고, 비상 로그 백업을 포함하여 차등 백업 이후에 생성된 모든 로그 백업을 복원하는 작업이 포함됩니다.
데이터베이스를 완전히 복원할 때는 단일 복원 시퀀스를 사용해야 합니다. 다음 예에서는 데이터베이스가 실패 지점으로 복원되는 완전한 데이터베이스 복원 시나리오의 중요한 옵션을 보여 줍니다. 복원 시퀀스는 하나 이상의 복원 단계를 통해 데이터를 이동시키는 하나 이상의 복원 작업으로 구성됩니다. 이 용도와 관련 없는 구문 및 세부 사항은 생략됩니다.
데이터베이스가 복원되고 롤포워드됩니다. 데이터베이스 차등의 사용으로 롤포워드 시간이 줄어듭니다. 이 복원 시퀀스는 작업 손실을 제거하기 위한 것으로 마지막으로 복원된 백업은 비상 로그 백업입니다.
복원 시퀀스의 기본 RESTORE 구문은 다음과 같습니다.
RESTORE DATABASE database FROM full database backup WITH NORECOVERY;
RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;
RESTORE LOG database FROM log_backup WITH NORECOVERY;
각 추가 로그 백업에 대해 이 복원 로그 단계를 반복합니다.
RESTORE DATABASE database WITH RECOVERY;
예
다음 예의 경우 AdventureWorks2008R2 예제 데이터베이스는 해당 데이터베이스를 백업하기 전에 전체 복구 모델을 사용하도록 설정되었습니다. 이 예에서는 AdventureWorks2008R2 데이터베이스의 비상 로그 백업을 만듭니다. 다음으로 이전의 전체 데이터베이스 백업 및 로그 백업을 복원한 다음 비상 로그 백업을 복원합니다. 이 예의 경우 별도의 마지막 단계에서 데이터베이스를 복구합니다.
[!참고]
이 예에서는 전체 데이터베이스 백업의 "전체 복구 모델에서 데이터베이스 백업 사용" 섹션에서 생성된 데이터베이스 백업 및 로그 백업을 사용합니다.
이 예는 복구 모델을 FULL으로 설정하는 ALTER DATABASE 문으로 시작합니다.
USE master;
--Create tail-log backup.
BACKUP LOG AdventureWorks2008R2
TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak'
WITH NORECOVERY;
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks2008R2
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak'
WITH FILE=1,
NORECOVERY;
--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks2008R2
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak'
WITH FILE=2,
NORECOVERY;
--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks2008R2
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak'
WITH FILE=3,
NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks2008R2 WITH RECOVERY;
GO
오류 지점으로 복구
전체 데이터베이스 백업을 복원하려면
중요 |
---|
데이터베이스 백업을 다른 서버 인스턴스로 복원할 경우 백업 및 복원으로 데이터베이스 복사 및 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리를 참조하십시오. |
차등 데이터베이스 백업을 복원하려면
트랜잭션 로그 백업을 복원하려면
데이터 백업이나 백업을 복원한 후에 이후 트랜잭션 로그 백업을 복원한 다음 데이터베이스를 복구해야 합니다.
SMO(SQL Server Management Objects)를 사용하여 백업을 복원하려면
지정 시간으로 복구
전체 복구 모델에서는 로그 백업의 특정 지정 시간으로 데이터베이스를 복원할 수 있습니다. 지정 시간은 특정 날짜 및 시간, 표시된 트랜잭션 또는 LSN(로그 시퀀스 번호)일 수 있습니다. 자세한 내용은 데이터베이스를 백업 내 지점으로 복원을 참조하십시오.
이전 버전의 SQL Server에서의 백업 지원
SQL Server 2008에서는 SQL Server 2000, SQL Server 2005 또는 SQL Server 2008을 사용하여 만든 데이터베이스 백업을 복원할 수 있습니다. 그러나 SQL Server 2000 또는 SQL Server 2005를 사용하여 만든 master, model 및 msdb의 백업은 SQL Server 2008로 복원할 수 없습니다. 또한 SQL Server 2008 백업은 이전 버전의 SQL Server로 복원할 수 없습니다.
SQL Server 2008은 이전 버전과는 다른 기본 경로를 사용합니다. 따라서 SQL Server 2000 또는 SQL Server 2005의 기본 위치에 만든 데이터베이스 백업을 복원하려면 MOVE 옵션을 사용해야 합니다. 새 기본 경로에 대한 자세한 내용은 SQL Server 기본 인스턴스 및 명명된 인스턴스의 파일 위치를 참조하십시오.
[!참고]
SQL Server 버전 7.0 또는 그 이전 버전으로 만든 데이터베이스를 SQL Server 2005로 업그레이드하는 방법은 SQL Server 7.0 또는 이전 버전에서 데이터베이스 복사를 참조하십시오.