복원 및 복구 개요(SQL Server)

적용 대상:SQL Server

오류로부터 SQL Server 데이터베이스를 복구하려면 데이터베이스 관리자가 논리적으로 정확하고 의미 있는 복원 순서로 SQL Server 백업 집합을 복원해야 합니다. SQL Server 복원 및 복구는 다음과 같이 전체 데이터베이스, 데이터 파일 또는 데이터 페이지의 백업에서 데이터 복원을 지원합니다.

  • 데이터베이스( 전체 데이터베이스 복원)

    전체 데이터베이스가 복원 및 복구되고 복원 및 복구 작업 중에 데이터베이스가 오프라인 상태입니다.

  • 데이터 파일( 파일 복원)

    데이터 파일 또는 파일 집합이 복원되고 복구됩니다. 파일을 복원하는 동안 파일을 포함하는 파일 그룹은 복원하는 동안 자동으로 오프라인 상태가 됩니다. 오프라인 파일 그룹에 액세스하려고 하면 오류가 발생합니다.

  • 데이터 페이지( 페이지 복원)

    전체 복구 모델 또는 대량 로그 복구 모델에서 개별 페이지를 복원할 수 있습니다. 파일 그룹 수에 관계없이 모든 데이터베이스에서 페이지 복원을 수행할 수 있습니다.

SQL Server 백업 및 복원은 지원되는 모든 운영 체제에서 작동합니다. 지원되는 운영 체제에 대한 자세한 내용은 SQL Server 2016 설치를 위한 하드웨어 및 소프트웨어 요구 사항을 참조하세요. 이전 버전 SQL Server의 백업 지원에 대한 자세한 내용은 RESTORE(Transact-SQL)의 “호환성 지원” 섹션을 참조하세요.

복원 시나리오 개요

SQL Server의 복원 시나리오는 하나 이상의 백업에서 데이터를 복원한 다음 데이터베이스를 복구하는 프로세스입니다. 지원되는 복원 시나리오는 데이터베이스의 복구 모델과 SQL Server 버전에 따라 달라집니다.

다음 표에서는 복구 모델별로 지원되는 복원 시나리오에 대해 설명합니다.

복원 시나리오 단순 복구 모델의 경우 전체/대량 로그 복구 모델에서
전체 데이터베이스 복원 이것이 기본 복원 전략입니다. 전체 데이터베이스 복원에는 단순히 전체 데이터베이스 백업을 복원하고 복구하는 작업이 포함될 수 있습니다. 또는 전체 데이터베이스 복원에는 전체 데이터베이스 백업을 복원한 다음 차등 백업을 복원하고 복구하는 작업이 포함될 수 있습니다.

자세한 내용은 전체 데이터베이스 복원(단순 복구 모델)을 참조하세요.
이것이 기본 복원 전략입니다. 전체 데이터베이스 복원에는 전체 데이터베이스 백업을 복원하고, 필요에 따라 차등 백업(있는 경우)을 복원한 다음 모든 후속 로그 백업을 순서대로 복원하는 작업이 포함됩니다. 마지막 로그 백업을 복구하고 복원하여 전체 데이터베이스 복원을 완료합니다(RESTORE WITH RECOVERY).

자세한 내용은 전체 데이터베이스 복원(전체 복구 모델)을 참조하세요.
파일 복원 1 전체 데이터베이스를 복원하지 않고 손상된 읽기 전용 파일을 하나 이상 복원합니다. 파일 복원은 데이터베이스에 읽기 전용 파일 그룹이 하나 이상 있는 경우에만 사용할 수 있습니다. 전체 데이터베이스를 복원하지 않고 하나 이상의 파일을 복원합니다. 데이터베이스가 오프라인인 동안 또는 일부 SQL Server 버전의 경우 데이터베이스가 온라인 상태로 유지되는 동안 파일 복원을 수행할 수 있습니다. 파일을 복원하는 동안 복원되는 파일을 포함하는 파일 그룹은 항상 오프라인 상태입니다.
페이지 복원 해당 없음 하나 이상의 손상된 페이지를 복원합니다. 데이터베이스가 오프라인 상태이거나 일부 SQL Server 버전의 경우 데이터베이스가 온라인 상태로 유지되는 동안 페이지 복원을 수행할 수 있습니다. 페이지 복원 중에 복원되는 페이지는 항상 오프라인 상태입니다.

끊어지지 않은 로그 백업 체인을 현재 로그 파일까지 사용할 수 있어야 하며, 현재 로그 파일을 사용하여 페이지를 최신 상태로 유지하려면 모두 적용해야 합니다.

자세한 내용은 페이지 복원(SQL Server)을 참조하세요.
증분 복원 1 파일 그룹 수준의 주 파일 그룹에서 시작하여 읽기/쓰기가 가능한 모든 파일 그룹, 보조 파일 그룹순으로 단계별로 데이터베이스를 복원 및 복구합니다. 파일 그룹 수준에서 주 파일 그룹에서 시작하여 단계별로 데이터베이스를 복원 및 복구합니다.

자세한 내용은 증분 복원(SQL Server)을 참조하세요.

1 온라인 복원은 Enterprise 버전에서만 지원됩니다.

데이터베이스 복원 단계

파일 복원을 수행하기 위해 데이터베이스 엔진은 다음 두 단계를 실행합니다.

  • 누락된 데이터베이스 파일 만들기.

  • 백업 장치의 데이터를 데이터베이스 파일로 복사.

데이터베이스 복원을 수행하기 위해 데이터베이스 엔진은 다음 세 단계를 실행합니다.

  • 데이터베이스 및 트랜잭션 로그 파일이 아직 없는 경우 만듭니다.

  • 데이터베이스의 백업 미디어에서 데이터베이스 파일로 모든 데이터, 로그 및 인덱스 페이지를 복사합니다.

  • 복구 프로세스라고 하는 트랜잭션 로그를 적용합니다.

데이터를 복원하는 방법에 관계없이 데이터베이스를 복구하기 전에 SQL Server 데이터베이스 엔진은 전체 데이터베이스가 논리적으로 일관되도록 보장합니다. 예를 들어 파일을 복원하는 경우 데이터베이스와 일치하도록 충분히 앞으로 롤아웃될 때까지 파일을 복구하고 온라인 상태로 전환할 수 없습니다.

파일 또는 페이지 복원의 장점

전체 데이터베이스 대신 파일 또는 페이지를 복원하고 복구하면 다음과 같은 이점이 있습니다.

  • 복원하는 데이터가 적어 데이터를 복사하고 복구하는 데 필요한 시간이 줄어듭니다.

  • SQL Server에서 파일 또는 페이지를 복원하면 복원 작업 중에 데이터베이스의 다른 데이터를 온라인 상태로 유지할 수 있습니다.

복구 및 트랜잭션 로그

대부분의 복원 시나리오에서는 트랜잭션 로그 백업을 적용하고 SQL Server 데이터베이스 엔진이 데이터베이스를 온라인 상태로 만들 수 있도록 복구 프로세스를 실행하도록 허용해야 합니다. 복구는 SQL Server에서 각 데이터베이스가 트랜잭션 일치 또는 정리 상태로 시작하는 데 사용하는 프로세스입니다.

장애 조치(failover) 또는 기타 완전하지 않은 종료가 발생하면 데이터베이스에서 일부 수정 내용이 버퍼 캐시에서 데이터 파일로 옮겨지지 않을 수 있으며 데이터 파일에 불완전한 트랜잭션으로 인한 일부 수정 내용이 그대로 남아 있을 수 있습니다. SQL Server 인스턴스가 시작되면 마지막 데이터베이스 검사점을 기반으로 3단계로 구성된 각 데이터베이스의 복구를 실행합니다.

  • 1단계는 트랜잭션 로그를 분석하여 마지막 검사점이 무엇인지 확인하고 DPT(Dirty Page Table) 및 ATT(활성 트랜잭션 테이블)를 만드는 분석 단계입니다. DPT에는 데이터베이스가 종료된 시점의 더티 페이지의 레코드가 포함되어 있습니다. ATT에는 데이터베이스가 완전히 종료되지 않았을 때 활성화된 트랜잭션의 레코드가 포함됩니다.

  • 2 단계는 데이터베이스가 종료될 때 데이터 파일에 기록되지 않았을 수 있는 로그에 기록된 모든 수정 사항을 롤포워드하는 다시 실행 단계 입니다. 성공적인 데이터베이스 전체 복구에 필요한 최소 로그 시퀀스 번호(minLSN)는 DPT에 있으며 모든 더티 페이지에 필요한 다시 실행 작업의 시작을 표시합니다. 이 단계에서 SQL Server 데이터베이스 엔진은 커밋된 트랜잭션에 속하는 모든 더티 페이지를 디스크에 씁니다.

  • 3 단계는 데이터베이스의 무결성이 유지되도록 ATT에 있는 불완전한 트랜잭션을 롤백하는 실행 취소 단계 입니다. 롤백 후 데이터베이스는 온라인 상태가 되며 데이터베이스에 더 이상 트랜잭션 로그 백업을 적용할 수 없습니다.

각 데이터베이스 복구 단계의 진행률에 대한 정보는 SQL Server 오류 로그에 기록됩니다. 확장 이벤트를 사용하여 데이터베이스 복구 진행률을 추적할 수도 있습니다. 자세한 내용은 데이터베이스 복구 진행률에 대한 새 확장 이벤트 게시물 블로그를 참조하세요.

참고 항목

증분 복원 시나리오의 경우 파일 백업을 만들기 전부터 읽기 전용 파일 그룹이 읽기 전용인 경우 파일 그룹에 로그 백업을 적용할 필요가 없으며 파일 복원으로 건너뜁니다.

참고 항목

SQL Server 서비스가 시작된 후(예: Always On 장애 조치(failover) 클러스터 인스턴스의 장애 조치(failover) 또는 현재 위치 다시 시작 후와 같이 엔터프라이즈 환경에서 데이터베이스의 가용성을 최대화하기 위해 SQL Server Enterprise Edition은 실행 취소 단계가 계속 실행되는 동안 다시 실행 단계 이후 데이터베이스를 온라인 상태로 만들 수 있습니다. 이를 Fast Recovery라고 합니다.
그러나 데이터베이스가 온라인 상태로 전환되지만 SQL Server 서비스가 다시 시작되지 않은 경우 Fast Recovery를 사용할 수 없습니다. 예를 들어 실행 ALTER DATABASE AdventureWorks SET ONLINE; 하면 복구의 세 단계가 모두 완료될 때까지 데이터베이스가 읽기/쓰기 상태가 될 수 없습니다.

복구 모델 및 지원되는 복원 작업

데이터베이스에 사용할 수 있는 복원 작업은 해당 복구 모델에 따라 달라집니다. 다음 표에는 각 복구 모델이 지정된 복원 시나리오를 지원하는지 여부와 범위가 요약되어 있습니다.

복원 작업 전체 복구 모델 대량 로그 복구 모델 단순 복구 모델
데이터 복구 전체 복구(로그를 사용할 수 있는 경우). 일부 데이터 손실이 노출됩니다. 마지막 전체 또는 차등 백업 이후의 모든 데이터는 손실됩니다.
지정 시간 복원 로그 백업에서 다루는 모든 시간입니다. 로그 백업이 대량 로그된 변경 내용을 포함한 경우 허용되지 않습니다. 지원 안 됨.
파일 복원 1 전폭적인 지원. 때로는.2 읽기 전용 보조 파일에만 사용할 수 있습니다.
페이지 복원 1 전폭적인 지원. 때로는.2 없음.
증분(파일 그룹 수준) 복원 1 전폭적인 지원. 때로는.2 읽기 전용 보조 파일에만 사용할 수 있습니다.

1 SQL Server Enterprise 버전에서만 사용 가능

2 필요한 조건은 이 문서의 뒷부분에 있는 단순 복구 모델에서 복원 제한을 참조하세요.

Important

데이터베이스의 복구 모델에 관계없이 SQL Server 백업은 백업을 만든 버전보다 오래된 SQL Server 데이터베이스 엔진 버전으로 복원할 수 없습니다.

단순 복구 모델에서 시나리오 복원

단순 복구 모델은 복원 작업에 다음과 같은 제한을 적용합니다.

  • 파일 복원 및 증분 복원은 읽기 전용 보조 파일 그룹에만 사용할 수 있습니다. 이러한 복원 시나리오에 대한 자세한 내용은 파일 복원(단순 복구 모델)증분 복원(SQL Server)을 참조하세요.

  • 페이지 복원은 허용되지 않습니다.

  • 지정 시간 복원은 허용되지 않습니다.

이러한 제한 사항이 복구 요구 사항에 적합하지 않은 경우 전체 복구 모델을 사용하는 것이 좋습니다. 자세한 내용은 백업 개요(SQL Server)를 참조하세요.

Important

데이터베이스의 복구 모델에 관계없이 백업을 만든 버전보다 오래된 SQL Server 버전에서 SQL Server 백업을 복원할 수 없습니다.

대량 로그 복구 모델에서 복원

이 섹션에서는 전체 복구 모델의 보완으로만 제공되는 대량 로그 복구 모델에 고유한 복원 고려 사항에 대해 설명합니다.

참고 항목

대량 로그된 복구 모델에 대한 자세한 내용은 트랜잭션 로그(SQL Server)를 참조하세요.

일반적으로 대량 로그 복구 모델은 전체 복구 모델과 유사하며 전체 복구 모델에 대해 설명된 정보도 둘 다에 적용됩니다. 하지만 지정 시간 복구 및 온라인 복원은 대량 로그 복구 모델의 영향을 받습니다.

특정 시점 복구에 대한 제한 사항

대량 로그 복구 모델에서 수행된 로그 백업에 대량 로그 변경 내용이 포함된 경우 특정 시점 복구가 허용되지 않습니다. 대량 변경 내용이 포함되어 있는 로그 백업에서 지정 시간 복구를 수행하면 복원 작업이 실패합니다.

온라인 복원에 대한 제한 사항

온라인 복원 시퀀스는 다음 조건이 충족되는 경우에만 작동합니다.

  • 복원 시퀀스를 시작하기 전에 필요한 모든 로그 백업을 완료해야 합니다.

  • 온라인 복원 시퀀스를 시작하기 전에 대량 변경 내용을 백업해야 합니다.

  • 데이터베이스에 대량 변경 내용이 있는 경우 모든 파일은 온라인 또는 소멸되어야 합니다. 즉, 데이터베이스의 일부가 아닙니다.

이러한 조건이 충족되지 않으면 온라인 복원 시퀀스가 실패합니다.

참고 항목

온라인 복원을 시작하기 전에 전체 복구 모델로 전환하는 것이 좋습니다. 자세한 내용은 복구 모델(SQL Server)을 참조하세요.

온라인 복원을 수행하는 방법은 온라인 복원(SQL Server)을 참조하세요.

데이터베이스 복구 관리자(SQL Server Management Studio)

Database Recovery Advisor는 최적의 올바른 복원 시퀀스를 구현하는 복원 계획을 쉽게 생성할 수 있습니다. 고객이 요청한 많은 알려진 데이터베이스 복원 문제 및 향상된 기능이 해결되었습니다. Database Recovery Advisor에서 도입한 주요 향상된 기능은 다음과 같습니다.

  • 복원 계획 알고리즘: 복원 계획 생성에 사용되는 알고리즘, 특히 복잡한 복원 시나리오가 크게 향상되었습니다. 지정 시간 복원의 분기 시나리오를 비롯한 많은 에지 사례가 이전 버전의 SQL Server보다 더 효율적으로 처리됩니다.

  • 지정 시간 복원: 데이터베이스 복구 관리자를 사용하면 지정된 시간 내의 데이터베이스 복원이 훨씬 쉬워집니다. 시각적 백업 타임라인은 특정 시점 복원에 대한 지원을 크게 향상시킵니다. 이 시각적 타임라인을 사용하면 데이터베이스 복원을 위한 대상 복구 지점으로 가능한 시점을 식별할 수 있습니다. 타임라인은 포크된 복구 경로(복구 포크에 걸쳐 있는 경로)를 쉽게 트래버스할 수 있도록 합니다. 지정된 지정 시간 복원 계획에는 대상 시점(날짜 및 시간)에 대한 복원과 관련된 백업이 자동으로 포함됩니다. 자세한 내용은 SQL Server 데이터베이스를 지정 시간으로 복원(전체 복구 모델)을 참조하세요.

자세한 내용은 Database Recovery Advisor에 대한 자세한 내용은 다음 SQL Server 관리 효율성 블로그를 참조하세요.

가속 데이터베이스 복구

가속 데이터베이스 복구는 SQL Server 2019(15.x) 및 Azure SQL Database부터 사용할 수 있습니다. 가속화된 데이터베이스 복구는 특히 장기 실행 트랜잭션이 있는 경우 SQL Server 데이터베이스 엔진 복구 프로세스를 다시 설계하여 데이터베이스 가용성을 크게 향상시킵니다. 가속화된 데이터베이스 복구를 사용하도록 설정한 데이터베이스는 장애 조치(failover) 또는 기타 비정상 종료 후 복구 프로세스를 훨씬 더 빠르게 완료합니다. 활성화된 경우 가속 데이터베이스 복구는 취소된 장기 실행 트랜잭션의 롤백도 훨씬 더 빠르게 완료합니다.

다음 구문을 사용하여 SQL Server 2019(15.x)에서 데이터베이스당 가속 데이터베이스 복구를 사용하도록 설정할 수 있습니다.

ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;

참고 항목

가속화된 데이터베이스 복구는 기본적으로 Azure SQL Database에서 사용하도록 설정됩니다.

다음 단계