SQL Server 백업 애플리케이션 - VSS(볼륨 섀도 복사본 서비스) 및 SQL 기록기

적용 대상: SQL Server

SQL Server는 타사 백업 애플리케이션이 VSS 프레임워크를 사용하여 데이터베이스 파일을 백업할 수 있도록 기록기(SQL 기록기)를 제공하여 VSS(볼륨 섀도 복사본 서비스)를 지원합니다. 이 문서에서는 VSS 스냅샷 만들기에서 SQL 기록기 구성 요소 및 해당 역할에 대해 설명하고 SQL Server 데이터베이스에 대한 프로세스를 복원합니다. 또한 SQL 기록기를 구성하고 사용하여 VSS 프레임워크에서 백업 애플리케이션을 사용하는 방법에 대한 세부 정보도 캡처합니다.

VSS 인프라

VSS는 Windows 시스템에서 VSS 애플리케이션을 실행하기 위한 시스템 인프라를 제공합니다. 사용자와 개발자 모두에 대해 대체로 투명하지만 VSS는 다음과 같습니다.

  • 섀도 복사본을 만들고 사용할 때 공급자, 기록기 및 요청자의 활동을 조정합니다.
  • 기본 시스템 공급자를 제공합니다.
  • 공급자가 작동하는 데 필요한 하위 수준 드라이버 기능을 구현합니다.

VSS 서비스는 요청 시 시작됩니다. 따라서 VSS 작업이 성공하려면 이 서비스를 사용하도록 설정해야 합니다.

VSS 구성 요소

VSS는 다음과 같은 협동 구성 요소의 작업을 조정합니다.

  • 공급자는 섀도 복사본 데이터를 소유하고 섀도 복사본을 인스턴스화합니다.
  • 기록기는 데이터를 변경하고 섀도 복사본 동기화 프로세스에 참여하는 애플리케이션입니다.
  • 요청자는 섀도 복사본 생성 및 소멸을 시작합니다. VSS는 요청자를 백업 애플리케이션으로 사용하는 경우에 초점을 맞추어 디자인되었습니다.

VSS는 이러한 구성 요소 간의 작업을 조정합니다.

VSS가 이러한 구성 요소 간의 작업을 조정하는 방법을 보여 주는 다이어그램

이 다이어그램은 일반적인 VSS 스냅샷 활동에 참여하는 모든 구성 요소를 보여 줍니다. 이러한 시나리오에서 SQL Server(SQL 기록기 포함)는 기록기 상자 중 하나에서 작성기 역할을 합니다. 이러한 다른 작성기는 Exchange Server 등일 수 있습니다.

  • 가상 디바이스 인터페이스: SQL Server에서는 독립 소프트웨어 공급업체가 SQL Server를 자사 제품과 통합할 수 있도록 백업 및 복원 작업을 지원하는 VDI(가상 디바이스 인터페이스)라는 애플리케이션 인터페이스를 제공합니다. 이 API는 최고의 안정성과 성능을 제공하도록 설계되었으며, 모든 최신 기능과 스냅샷 백업 기능을 포함하여 모든 SQL Server 백업 및 복원 기능을 지원합니다. 자세한 내용은 SQL Server 2005 가상 백업 디바이스 인터페이스 사양을 참조하세요.

  • 요청자: 하나 이상 원본 볼륨의 스냅샷 세트를 하나 이상 만들도록 요청하는 프로세스(자동화 또는 GUI)입니다. 이 백서에서는 SQL Server 데이터베이스의 스냅샷을 만드는 백업 애플리케이션을 지칭하는 용어로 사용되기도 합니다.

자세한 내용은 볼륨 섀도 복사본 서비스에 대한 설명서를 참조하세요.

SQL 기록기

SQL 기록기는 SQL Server가 제공하는 VSS 기록기입니다. SQL Server와의 VSS 상호 작용을 처리합니다. SQL 기록기는 SQL Server를 독립 실행형 서비스로 제공하고 SQL Server 설치의 일부로 설치됩니다.

VSS 스냅샷 백업 작업에서 SQL 기록기의 역할:

VSS 스냅샷

SQL 기록기 구성

SQL 기록기 서비스는 SQL Server 설치의 일부로 시스템에 설치되며 Windows가 시작될 때 자동으로 시작되도록 구성됩니다.

SQL 기록기 서비스 계정

설치하는 동안 로컬 시스템 계정을 사용하도록 SQL 기록기 계정이 설치됩니다. SQL 기록기는 전용 VDI API를 사용하여 SQL Server와 통신해야 하므로 SQL 기록기 계정에는 SQL Server 및 VSS 모두에 대한 충분한 액세스 권한이 있어야 합니다. 서비스를 로컬 시스템 계정으로 구성하면 서비스가 올바르게 실행하기에 충분한 권한이 제공됩니다.

참고 항목

SQL 기록기 서비스가 올바르게 작동하려면 로컬 시스템 계정이 SQL Server 인스턴스의 'sa' 역할에서 제거되지 않도록 하는 것이 중요합니다.

SQL 기록기 다시 사용 및 시작

기본적으로 SQL 기록기는 사용하도록 설정되며 자동으로 시작됩니다. 이 구성이 수정된 경우 기본 설정으로 되돌리려면 다음을 수행해야 합니다.

이 서비스를 "자동"으로 표시하여 SQL 기록기 서비스를 사용하도록 설정할 수 있습니다. 제어판을 통해 서비스를 열려면 시작, 제어판을 차례로 클릭하고 관리 도구, 서비스를 차례로 두 번 클릭합니다. 서비스 창에서 SQL 기록기 서비스를 두 번 클릭하고 "시작 유형" 속성을 "자동"으로 수정합니다.

그런 다음, 위에서 언급한 서비스 속성 화면의 “서비스 상태” 속성 아래에서 “시작” 단추를 선택하여 서비스를 시작해야 합니다.

참고 항목

SQL Server Express의 인스턴스가 설치되어 있고 애플리케이션이 사용자 인스턴스 기능을 사용하는 경우 SQL Server가 자동으로 SQL 기록기를 시작할 수 있습니다. VSS 백업 작업 중에 이러한 사용자 인스턴스의 열거를 용이하게 하기 위해 수행됩니다.

SQL 기록기에서 지원하는 기능

  • 전체 텍스트: SQL 기록기는 기록기 메타데이터 문서의 데이터베이스 구성 요소 아래에 재귀 파일 사양이 있는 전체 텍스트 카탈로그 컨테이너를 보고합니다. 데이터베이스 구성 요소가 선택되면 자동으로 백업에 포함됩니다.
  • 차등 백업 및 복원: SQL 기록기는 두 가지 VSS 차등 메커니즘인 부분 파일 및 마지막 수정 시간별 파일 차이를 통해 차등 백업 및 복원을 지원합니다.
  • 부분 파일: SQL 기록기는 데이터베이스 파일 내에서 변경된 바이트 범위를 보고하기 위해 VSS 부분 파일 메커니즘을 사용합니다.
  • 마지막 수정 시간별 차등 파일: SQL 작성기는 전체 텍스트 카탈로그에서 변경된 파일을 보고하기 위해 마지막 수정 시간을 기준으로 VSS 차등 파일 메커니즘을 사용합니다.
  • 이동으로 복원: SQL 기록기는 복원하는 동안 VSSS 새 대상 사양을 지원합니다. VSSs 새 대상 사양을 사용하면 데이터베이스/로그 파일 또는 전체 텍스트 카탈로그 컨테이너를 복원 작업의 일부로 재배치할 수 있습니다.
  • 데이터베이스 이름 바꾸기: 특히 SQL 데이터베이스를 원본 데이터베이스와 나란히 복원해야 하는 경우 요청자가 SQL 데이터베이스를 새 이름으로 복원해야 할 수 있습니다. SQL 기록기는 데이터베이스가 원래 SQL 인스턴스 내에 남아 있는 한 복원 작업 중에 데이터베이스 이름을 바꾸는 것을 지원합니다.
  • 복사 전용 백업: 예를 들어 테스트 목적으로 데이터베이스의 복사본을 만들어야 하는 경우와 같이 특별한 용도의 백업을 수행해야 하는 경우가 있습니다. 이 백업은 데이터베이스의 전반적인 백업 및 복원 절차에 영향을 미치지 않습니다. COPY_ONLY 옵션을 사용하면 백업이 "대역 외"로 수행되며 일반 백업 시퀀스에 영향을 미치지 않아야 합니다. SQL 기록기는 SQL Server 인스턴스를 사용하는 "복사 전용" 백업 유형을 지원합니다.
  • 데이터베이스 스냅샷의 자동 복구: 일반적으로 VSS 프레임워크를 사용하여 만든 SQL Server 데이터베이스 스냅샷은 복구되지 않은 상태입니다. 복구 단계를 수행하여 진행 중인 트랜잭션을 롤백하고 데이터베이스를 일관된 상태로 유지하기 전에는 스냅샷의 데이터에 안전하게 액세스할 수 없습니다. VSS 백업 애플리케이션은 스냅샷 생성 프로세스의 일부로 스냅샷의 자동 복구를 요청할 수 있습니다.

이러한 새 기능과 해당 사용법은 이 문서의 백업 및 복원 옵션 세부 정보에 자세히 설명되어 있습니다.

지원되지 않는 사항

  • 로그 백업은 SQL 기록기에서 지원되지 않습니다.
  • 파일/파일 그룹 백업은 지원되지 않습니다.
  • 페이지 복원은 지원되지 않습니다.
  • 데이터베이스 스냅샷은 지원되지 않으며 구성 요소 및 비 구성 요소 VSS 스냅샷을 만드는 동안 무시됩니다.
  • 데이터베이스 또는 종료가 사용 설정된 데이터베이스를 자동으로 닫습니다.
  • Linux는 VSS 프레임워크를 제공하지 않으므로 Linux에서 SQL 기록기를 사용할 수 없습니다.

다음 표에서는 모든 버전의 SQL Server에 대해 VSS 프레임워크를 사용하여 작업하는 SQL 기록기/SQL Server에서 지원하는 스냅샷 백업 종류를 나열합니다.

백업 및 복원 작업 구성 요소 기반 비구성 요소 기반
전체 데이터 백업
(전체 텍스트 카탈로그 포함)
전체 복원
전체 복원(복구 안 함) 아니요
차등 백업 아니요
차등 복원 아니요
복원(이동) 아니요
데이터베이스 이름 바꾸기 아니요
복사 전용 백업 아니요
자동 복구된 스냅샷 아니요
로그 백업 아니요 아니요
데이터베이스 스냅샷 아니요
테이터베이스 자동 닫기
종료 기능이 포함된 데이터베이스
아니요
가용성 그룹 데이터베이스 보조 없음

백업 작업

SQL Server(SQL 기록기 사용)는 VSS 기반 백업 작업의 다음 모드를 지원합니다.

  • 비구성 요소 기반
  • 구성 요소 기반

버전 지원

SQL 기록기는 SQL Server의 일부로 제공되며, SQL Server 인스턴스만 지원합니다. SQL 기록기는 SQL Server Express 인스턴스도 열거합니다. SQL Server Express에서 시작된 사용자 인스턴스도 SQL 기록기에 의해 열거됩니다.

비호환 기반 백업 작업

비호환 기반 백업은 스냅샷 집합의 볼륨 목록을 사용하여 데이터베이스를 암시적으로 선택합니다. SQL 기록기는 조각난 데이터베이스가 있는지 검사하고, 있으면 오류가 발생합니다. 조각난 데이터베이스는 볼륨 목록에서 파일의 하위 집합을 선택하는 데이터베이스입니다.

비호환 기반 모델에서는 단순 복구 모델이 있는 데이터베이스만 지원됩니다. 복원이 지원되지 않는 후 롤 포워드합니다.

구성 요소 기반 백업 작업

애플리케이션(VSS 백업 애플리케이션)이 SQL 기록기에서 반환된 메타데이터에서 명시적으로 데이터베이스를 선택하므로 구성 요소 기반 백업은 SQL 기록기에서 주로 사용되며 권장되는 백업 방식입니다. 스냅샷 집합에는 해당 데이터베이스를 백업하는 데 필요한 모든 볼륨이 포함되어야 합니다. VSS 인프라는 선택한 데이터베이스 집합에 필요한 볼륨을 자동으로 추가하지 않습니다. 모든 백업 볼륨이 볼륨 스냅샷 세트에 포함되어야 합니다. 모든 백업 볼륨이 스냅샷 집합에 포함되도록 하는 것이 백업 애플리케이션의 역할입니다. SQL 기록기가 조각난 데이터베이스(스냅샷 세트 외부에 백업 볼륨이 있음)를 검색하고 백업할 수 없게 됩니다.

이 항목의 나머지 부분에서는 구성 요소 기반 백업이 SQL Server에 대한 VSS 스냅샷 만들기 프로세스의 일부로 사용된다고 가정합니다.

스냅샷 만들기 프로세스

VSS 프레임워크는 SQL Server 스냅샷을 만드는 동안 요청자(백업 애플리케이션) 및 SQL 기록기의 활동을 조정합니다. 이 조정을 사용하도록 설정하기 위해 VSS 프레임워크는 요청자 및 기록기 인터페이스를 정의합니다. 이러한 인터페이스는 참여 요청자 애플리케이션 및 작성기에 의해 구현되어야 합니다. SQL 기록기는 필요한 기록기 인터페이스를 구현합니다. 스냅샷 만들기 프로세스의 일부로 VSS 프레임워크에서 SQL 기록기의 인터페이스를 호출합니다. SQL 기록기는 스냅샷 생성을 용이하게 하기 위해 시스템의 SQL Server 인스턴스와 상호 작용합니다.

VSS 프레임워크는 요청자/백업 애플리케이션이 사용할 수 있도록 일련의 API를 정의합니다. 백업 애플리케이션 개발자는 이러한 API 호출 패턴에 따라 VSS 프레임워크 스냅샷 생성 프로세스를 사용해야 합니다. 다음 섹션에서는 SQL 기록기 관점에서 스냅샷 만들기 프로세스를 설명합니다. 또한 요청자, VSS 프레임워크, SQL 기록기 및 SQL Server 인스턴스 간의 일부 내부 상호 작용을 자세히 설명합니다. 이러한 단계에 대한 자세한 내용과 VSS 프레임워크 인터페이스에 대한 자세한 내용은 볼륨 섀도 복사본 서비스에 대한 설명서를 참조하세요.

참고 항목

판독기는 일반적으로 VSS 프레임워크 및 백업 만들기 프로세스를 잘 알고 있다고 가정합니다. 이 섹션은 SQL 기록기가 VSS 백업 생성 프로세스에 참여하는 방식에 대한 추가 정보로 제공됩니다.

스냅샷 만들기 워크플로

데이터 흐름

이 이미지는 구성 요소 기반 스냅샷 만들기/백업 작업 중에 데이터 흐름 다이어그램을 보여 줍니다. 백업 수행과 관련된 기본 작업을 보다 완벽하게 이해하려면 이 개요를 다음 단계로 세분화하면 유용합니다.

  • 백업 초기화
  • 백업 검색 단계
  • 사전 복구 작업
  • 실제 파일 백업
  • 백업 종료

백업 초기화

이 백업 단계에서는 요청자(백업 애플리케이션)가 스냅샷 인터페이스 IvssBackupComponents에 바인딩하고 백업 준비를 위해 초기화합니다. 또한 VSS API IVssGatherWriterMetadata를 호출하여 VSS 프레임워크에 모든 기록기에서 메타데이터를 수집하도록 지시합니다.

VSS 프레임워크는 기록기 메타데이터를 위해 OnIdentify 이벤트를 사용하여 SQL 기록기를 비롯한 등록된 각 기록기를 호출합니다. SQL 기록기는 SQL Server 인스턴스를 쿼리하여 각 데이터베이스에 대한 백업 메타데이터 정보를 얻고 기록기 메타데이터 문서를 만듭니다. 이 단계를 메타데이터 열거라고도 합니다.

기록기 메타데이터 문서는 기록기에서 요청자(백업 애플리케이션)로 전달된 정보가 들어 있는 문서입니다. 기록기 메타데이터 문서에는 다음 정보가 포함되어 있습니다.

  • 애플리케이션 ID 및 이름
  • 파일 및 구성 요소가 있는 위치
  • 백업에 포함 및 제외해야 하는 파일입니다.
  • 복원 시 사용해야 하는 옵션
  • VSS 프레임워크를 통해 요청자에게 다시 전달됩니다.

백업 검색

이 단계에서는 요청자가 기록기 메타데이터 문서를 검사하고 백업 구성 요소 문서를 만들어 백업해야 하는 각 구성 요소로 채웁니다. 또한 이 문서의 일부로 필요한 백업 옵션 및 매개 변수를 지정합니다. SQL 기록기에서 백업해야 하는 각 데이터베이스 인스턴스는 별도의 구성 요소입니다.

Backup 구성 요소 문서

복원 또는 백업 작업을 설정하는 과정에서 요청자가 IVssBackupComponents 인터페이스를 사용하여 만든 XML 문서입니다. 백업 구성 요소 문서에는 백업 또는 복원 작업에 참여하는 하나 이상의 기록기에서 명시적으로 포함된 구성 요소 목록이 포함되어 있습니다. 암시적으로 포함된 구성 요소 정보는 포함되지 않습니다. 반면, 기록기 메타데이터 문서에는 백업에 참여할 수 있는 기록기 구성 요소만 포함됩니다. 백업 구성 요소 문서의 구조적 세부 정보는 VSS API 설명서에 설명되어 있습니다.

사전 복구 작업

VSS의 사전 백업 작업은 백업할 데이터가 포함된 볼륨의 섀도 복사본을 만드는 데 중점을 줍니다. 백업 애플리케이션은 실제 볼륨이 아니라 섀도 복사본의 데이터를 저장합니다.

요청자는 일반적으로 백업을 준비하는 동안 및 섀도 복사본을 만드는 동안 기록기를 기다립니다. SQL 기록기가 백업 작업에 참여하는 경우, 해당 파일을 구성하고 백업 및 섀도 복사본 준비를 완료해야 합니다.

백업 준비

요청자는 수행해야 하는 백업 작업 유형을 IVssBackupComponents::SetBackupState로 설정한 다음 IVssBackupComponents::PrepareForBackup을 사용하여 백업 작업을 준비하도록 VSS를 통해 기록기에 알려야 합니다.

SQL 기록기에 백업해야 하는 데이터베이스를 자세히 설명하는 백업 구성 요소 문서에 대한 액세스 권한이 부여됩니다. 모든 백업 볼륨이 볼륨 스냅샷 세트에 포함되어야 합니다. SQL 기록기가 조각난 데이터베이스(스냅샷 세트 외부에 백업 볼륨이 있음)를 검색하면 PostSnapshot 이벤트 중에 백업이 실패합니다.

실제 파일 백업

이 단계에서 요청자는 필요한 경우 백업 미디어로 데이터를 이동할 수 있습니다. 이 단계의 상호 작용은 요청자와 VSS 프레임워크 간의 상호 작용입니다. SQL 기록기는 관련이 없습니다.

  1. 기록기 상태를 가져옵니다. 기록기의 상태를 반환합니다. 요청자는 여기에서 오류를 처리해야 할 수 있습니다.
  2. 백업합니다.

요청자는 이 시점에서 필요한 경우 데이터를 백업 미디어로 이동할 수 있습니다.

백업 완료

이 이벤트는 백업이 성공적으로 완료되었음을 나타냅니다.

또한 현재 백업이 복사 전용 백업이 아닌 데이터베이스의 전체 백업인 경우 SQL 기록기가 백업을 차등 기반으로 커밋할 수도 있습니다.

참고 항목

요청자는 SQL 기록기가 차등 기본 백업을 커밋할 수 있도록 이 이벤트(Backup Complete 이벤트)를 명시적으로 보내야 합니다. 이 이벤트를 수신하지 않으면 생성된 백업이 적격 "차등 기준" 백업이 되지 않습니다.

기록기 메타데이터 저장

요청자는 스냅샷에서 백업된 데이터와 함께 Backup 구성 요소 문서 및 각 구성 요소 백업 메타데이터를 저장해야 합니다. 이러한 기록기 메타데이터는 복원 작업을 위해 SQL 기록기/SQL Server에서 필요합니다.

백업 종료

요청자는 IVssBackupComponents 인터페이스를 해제하거나 IVssBackupComponents::DeleteSnapshots을 호출하여 섀도 복사본을 종료합니다.

SQL 기록기 메타데이터 문서

기록기(이 경우 SQL 기록기)가 IVssCreateWriterMetadata 인터페이스를 사용하고 기록기의 상태 및 구성 요소에 대한 정보를 포함하여 만든 XML 문서입니다. 기록기 메타데이터 문서의 구조적 세부 정보는 VSS API 설명서에 설명되어 있습니다. 다음은 SQL 기록기 메타데이터 문서의 몇 가지 세부 정보입니다.

  • 기록기 식별 정보
    • 기록기 이름 - L“SqlServerWriter”
    • 기록기 클래스 ID - 0xa65faa63, 0x5ea8, 0x4ebc, 0x9d, 0xbd, 0xa0, 0xc4, 0xdb, 0x26, 0x91, 0x2a
    • 기록기 인스턴스 ID - L“SQL Server:SQLWriter”
    • VSSUsageType - VSS_UT_USERDATA
    • VSSSourceType - VSS_ST_TRANSACTEDDB
  • 기록기 수준 정보 - VSS_APP_BACK_END
  • Restore 메서드 사양 – VSS_RME_RESTORE_IF_CAN_REPLACE.
  • 지원되는 백업 스키마(IVssCreateWriterMetadata::SetBackupSchema API)
    • VSS_BS_DIFFERENTIAL – 차등 백업
    • 전체 텍스트 카탈로그 파일의 경우 VSS_BS_TIMESTAMPED – 타임스탬프 기반입니다.
    • VSS_BS_LAST_MODIFY – 마지막 수정 시간을 기반으로 한 차등 백업
    • VSS_BS_WRITER_SUPPORTS_NEW_TARGET – 새 대상 위치 옵션을 지원합니다.
    • VSS_BS_WRITER_SUPPORTS_RESTORE_WITH_MOVE – "이동 중" 복원 지원
    • VSS_BS_COPY – "복사 전용" 백업 옵션을 지원합니다.
  • 구성 요소 수준 정보 여기에는 SQL 기록기에서 제공하는 구성 요소 수준별 정보가 포함됩니다.
    • 유형 - VSS_CT_FILEGROUP
    • 이름 - 구성 요소 이름(데이터베이스 이름)
    • 논리 경로 – 서버 인스턴스의 논리 경로(명명된 인스턴스의 경우 “server\instance-name” 형식, 기본 인스턴스의 경우 “server” 형식)
    • 구성 요소 플래그
    • VSS_CF_APP_ROLLBACK_RECOVERY – SQL Server 스냅샷은 파일을 백업이 아닌 시나리오(즉, 앱 롤백)에 일관되고 사용할 수 있도록 하기 위해 항상 "복구" 단계가 필요하다는 것을 나타냅니다.
    • 선택 가능 - True
    • Selectable for Restore - True
    • 지원되는 복원 방법 - VSS_RME_RESTORE_IF_CAN_REPLACE

SQL Server에서 구성 요소 집합 구조의 유일한 확장은 전체 텍스트 카탈로그의 도입입니다. 전체 텍스트 카탈로그는 VSS 데이터베이스와 로그 파일에 하위 항목 포함 지정이 없을 경우 VSS 데이터베이스 또는 로그 파일로 표현할 수 없는 컨테이너 디렉터리입니다. 따라서 SQL 기록기는 VSS 파일 그룹 구성 요소(VSS_CT_FILEGROUP)를 사용하여 데이터베이스 수준 구성 요소 및 파일 그룹 파일을 나타내며 데이터베이스, 로그 및 전체 텍스트 카탈로그 파일을 나타냅니다.

이 문서의 끝에 기록기 메타데이터 문서 예가 제공됩니다.

스냅샷 시작 요청자는 VSS 프레임워크 인터페이스 DoSnapshotSet을 호출하여 스냅샷 프로세스를 시작합니다.

스냅샷 만들기 이 단계에는 VSS 프레임워크와 SQL 기록기 간의 일련의 상호 작용이 포함됩니다.

  1. 스냅샷을 준비합니다. SQL 기록기가 SQL Server를 호출하여 스냅샷을 만들 준비를 합니다.
  2. 중지. SQL 기록기가 SQL Server를 호출하여 스냅샷에 백업되는 각 데이터베이스에 대해 모든 데이터베이스 I/O를 동결합니다. 동결 이벤트가 VSS 프레임워크로 반환되면 VSS에서 스냅샷을 만듭니다.
  3. 재개. 이 이벤트에서 SQL 기록기는 SQL Server 인스턴스를 호출하여 "해동"하거나 일반 I/O 작업을 다시 시작합니다.

데이터베이스에 대한 모든 쓰기가 차단되는 것을 방지하기 위해 스냅샷 만들기 단계는 빠릅니다(60초 미만).

스냅샷 후 스냅샷에 자동 복구가 필요한 경우 SQL 기록기는 스냅샷에 있도록 선택된 각 데이터베이스에 대해 자동 복구를 수행합니다. 자세한 설명은 자동 복구 스냅샷을 참조하세요.

복원 프로세스

이 섹션에서는 복원 작업 워크플로 및 관련된 다양한 단계를 설명합니다.

복원 작업 워크플로

다음 그림에서는 VSS 복원 작업 중 데이터 흐름 다이어그램을 보여 줍니다. 복원 수행과 관련된 기본 작업을 보다 완벽하게 이해하려면 이 개요를 다음 항목으로 세분화하면 유용합니다.

  • 복원 초기화
  • 복원 준비
  • 실제 파일 복원
  • 정리 및 종료 복원

복원 프로세스 흐름

모든 VSS 구성 요소 기반 복원 시나리오에서 SQL 기록기는 다음 두 가지 개별 단계로 데이터베이스 복원을 처리합니다.

  • 복원 전: SQL 기록기는 유효성 검사, 파일 핸들 닫기 등을 처리합니다.
  • 복원 후: SQL 기록기는 데이터베이스를 연결하고 필요한 경우 크래시 복구를 수행합니다.

백업 애플리케이션은 이 두 단계 사이에서 SQL 관련 데이터를 이동합니다.

복원 초기화

복원 초기화 단계에서 요청자는 저장된 Backup 구성 요소 문서에 액세스할 수 있어야 합니다.

백업 작업 중에 생성된 백업 구성 요소 문서는 백업 데이터의 일부로 저장됩니다. 백업 애플리케이션은 이 데이터를 VSS 프레임워크로 다시 전달해야 합니다. SQL 기록기는 복원 프로세스의 시작 부분에서 이 데이터에 대한 액세스 권한을 얻습니다.

복원 준비

복원을 준비할 때 요청자는 저장된 백업 구성 요소 문서를 사용하여 복원할 항목과 방법을 확인합니다. 요청자는 복원할 구성 요소를 선택하고 필요에 따라 적절한 복원 옵션을 설정합니다.

백업 애플리케이션을 통해 현재 복원 작업에 차등 또는 로그 백업을 적용하려는 경우(즉, “NORECOVERY를 사용하여 복원”이 필요한 경우), 복원되는 각 데이터베이스의 구성 요소를 만드는 과정에서 다음 옵션을 설정해야 합니다.

IVssBackupComponents::SetAdditionalRestores(true)

백업 구성 요소 문서에 필요한 모든 세부 정보가 설정되면 요청자는 기록기에서 처리할 VSS를 통해 PreRestore 이벤트를 생성하도록 IVssBackupComponents::PreRestore을 호출합니다.

SQL 기록기는 제공된 백업 구성 요소 문서를 검사하여 적절한 데이터베이스를 식별하고 백업 시간 이후 생성된 추가 파일을 삭제합니다. 또한 요청자가 복원 단계에서 필요한 데이터를 복사할 수 있도록 디스크 공간을 확인하고 열린 데이터베이스 파일 핸들을 닫습니다. 이 단계에서는 요청자가 실제 파일 복사를 수행하기 전에 초기 오류 조건을 검색할 수 있습니다. 또한 SQL Server에서 데이터베이스를 복원 중 상태로 전환합니다. 이 시점부터 데이터베이스는 성공적으로 복원될 때까지 시작할 수 없습니다.

파일 복원

전적으로 요청자 관련 작업입니다. 요청자(백업 애플리케이션)는 필요한 데이터베이스 파일(또는 차등 복원의 경우 관련된 범위의 데이터)을 적절한 위치에 복사할 책임이 있습니다. SQL 기록기는 이 작업에 관여하지 않습니다.

정리 및 종료

모든 데이터가 올바른 위치로 복원되면 복원 작업이 IvssBackupComponents::PostRestore을 완료하였음을 알리는 요청자의 호출을 통해 SQL 기록기에서 복원 후 작업을 시작할 수 있음을 알립니다. 이 시점에 SQL 기록기는 크래시 복구의 다시 실행 단계를 수행합니다. 복구가 요청되지 않은 경우(즉, 요청자가 SetAdditionalRestores(true)를 지정하지 않은 경우) 복구 단계의 실행 취소 단계도 이 단계에서 수행됩니다.

백업 및 복원 옵션 세부 정보

이 섹션에서는 SQL 기록기에서 지원하는 모든 백업 및 복원 옵션을 자세히 설명합니다.

요청자가 볼륨 섀도 복사본을 만듭니다.

db 파일의 백업 볼륨이 볼륨 스냅샷 집합에 추가되었으므로 SQL 기록기는 볼륨 섀도 복사본 만들기 프로세스(백업 및 복원 컨텍스트 외부)에 참여할 수 있습니다. 이 경우 SQL 기록기는 메타데이터 열거, 동결, 재개, PrepareForSnapshot 및 PostSnapshot 조정에만 참여합니다(자세한 내용은 데이터 흐름 다이어그램 참조).

전체 백업 및 복원

SQL 기록기는 비호환 기반 모드와 구성 요소 기반 모드 모두에서 전체 백업 및 복원 작업을 지원합니다.

비구성 요소 기반 백업 및 복원

비구성 요소 기반 백업 및 복원에서는 요청자가 백업 및 복원할 볼륨 또는 폴더 트리를 지정합니다. 지정된 볼륨 및 폴더의 모든 데이터가 백업되고 복원됩니다.

Backup

비호환 기반 백업에서 SQL 기록기는 스냅샷 집합의 볼륨 목록을 사용하여 데이터베이스를 암시적으로 선택합니다. 기록기는 조각난 데이터베이스가 있는지 검사하고, 있으면 오류가 발생합니다. 조각난 데이터베이스는 볼륨 목록에서 파일의 하위 집합을 선택하는 데이터베이스입니다. SQL 기록기를 통해 복원이 지원되지 않는 후 롤 포워드(차등 또는 로그 복원)입니다.

복원

요청자는 비호환 기반 모드로 백업된 데이터베이스를 복원합니다. 이러한 복원은 로그 복원 또는 차등 복원과 같은 롤포워드 복원으로 이어질 수 없습니다.

비구성 요소 기반 복원 작업의 경우, SQL Server 인스턴스를 오프라인으로 실행하거나 대상 데이터베이스를 삭제/분리하여 파일이 오프라인 상태인지 확인해야 합니다. 파일이 제자리에 복사된 다음 데이터베이스가 연결됩니다. 이러한 모든 작업은 SQL 기록기의 범위 밖에서 수행됩니다.

구성 요소 기반 백업 및 복원

구성 요소 기반 백업에서 요청자는 백업/복원할 데이터베이스 구성 요소(SQL 기록기가 클라이언트로 반환하는 메타데이터에서)를 명시적으로 선택합니다.

Backup

구성 요소 기반 백업에서 선택한 데이터베이스에 대한 모든 백업 볼륨을 볼륨 스냅샷 집합에 포함해야 합니다. 포함되지 않으면 SQL 기록기가 조각난 데이터베이스(스냅샷 세트 외부에 백업 볼륨이 있음)를 검색하고 백업할 수 없게 됩니다. 전체 백업은 데이터베이스 데이터와 데이터베이스를 복원 시 트랜잭션 일치 상태로 유지하는 데 필요한 모든 로그 파일을 백업합니다.

롤포워드 없이 전체 복원

추가 롤 포워드를 수행하지 않고 데이터베이스 백업의 전체 복원이 수행되는 경우도 있습니다. 롤포워드를 용이하게 하는 메타데이터가 없거나 경우에 따라 롤포워드가 필요하지 않기 때문일 수 있습니다. 이 섹션에서는 이러한 두 가지 상황을 간략하게 설명합니다.

메타데이터 없음/롤포워드 없음

백업 작업 중에 기록기 메타데이터(구성 요소 기반 백업 메타데이터)를 저장하지 않은 경우, 오프라인에서 SQL Server 인스턴스를 사용하여 복원을 수행해야 합니다. 그러지 않으면 파일이 오프라인 상태가 되도록 대상 데이터베이스가 삭제/분리됩니다. 파일이 제자리에 복사된 다음 데이터베이스가 연결됩니다. 이러한 모든 작업은 SQL 기록기의 범위 밖에서 수행됩니다.

메타데이터가 있지만 추가 롤포워드가 필요하지 않습니다.

요청자는 구성 요소 기반 모드에서 백업되었지만 롤포워드가 요청되지 않은 데이터베이스를 복원합니다. 이 경우 SQL Server는 복원의 일부로 데이터베이스에서 크래시 복구를 수행합니다.

추가 롤 포워드를 사용하여 전체 복원

요청자가 SetAdditionalRestores(true) 옵션을 지정하여 복원을 실행할 수 있습니다. 이 옵션은 요청자가 후속 작업으로 추가 롤포워드 복원(예: 로그 복원, 차등 복원 등)을 수행할 예정임을 나타냅니다. 이렇게 하면 SQL Server가 복원 작업이 끝날 때 복구 단계를 수행하지 않도록 지시합니다.

이는 백업 중에 기록기 메타데이터를 저장하고 복원 시 SQL 기록기에서 사용할 수 있는 경우에만 가능합니다. 요청자가 VSS에 복원 작업을 수행하도록 지시하기 전에 SQL Server 서비스가 실행 중이어야 합니다.

SQL 기록기에는 다음 시퀀스가 예상됩니다.

  1. 각 데이터베이스를 복원하기 위한 준비. 이 단계에서는 요청자 애플리케이션이 데이터베이스 파일을 복사/탑재할 수 있도록 모든 파일 핸들을 닫습니다.
  2. 요청자 애플리케이션이 파일을 복사/탑재합니다.
  3. 복원을 완료합니다(NORECOVERY 사용). 데이터베이스는 온라인 상태가 되지만 "복원 중" 상태로 전환됩니다.

그런 다음, 기존 SQL 백업, 차등 또는 로그를 사용하여 VDI/T-SQL을 통해 또는 VSS 프레임워크를 사용하여 차등 복원을 적용하여 데이터베이스를 롤 포워드할 수 있습니다.

전체 텍스트 지원

SQL 기록기는 기록기 메타데이터 문서의 데이터베이스 구성 요소 아래에 재귀 파일 사양이 있는 전체 텍스트 카탈로그 컨테이너를 보고합니다. 데이터베이스 구성 요소가 선택되면 자동으로 백업에 포함됩니다.

차등 백업 및 복원

차등 백업 작업은 가장 최근의 기본 전체 백업 이후 변경된 데이터만 백업합니다. 차등 백업에는 변경된 데이터베이스 파일의 해당 부분만 포함됩니다. 이러한 백업을 수행하려면, 백업 애플리케이션 또는 요청자가 적절한 파일 섹션을 백업할 수 있도록 데이터베이스 파일에서 변경된 내용의 위치 정보가 필요합니다. 차등 백업 작업 중에 SQL 기록기는 "VSS 부분 파일 정보"로 지정된 형식으로 이 정보를 제공합니다. 이 정보는 데이터베이스 파일의 변경된 부분만 백업하는 데 사용할 수 있습니다.

Backup

요청자는 VSS를 사용하여 백업 작업을 시작할 때 백업 구성 요소 문서 IVssBackupComponents::SetBackupState에서 VSS_BT_DIFFERENTIAL 차등 옵션을 설정하여 차등 백업을 실행할 수 있습니다. SQL 기록기는 부분 파일 정보(SQL Server에서 반환됨)를 VSS에 전달합니다. 요청자는 VSS API IVssComponent::GetPartialFile를 호출하여 이 파일 정보를 가져올 수 있습니다. 이 부분 파일 정보를 사용하면 요청자가 데이터베이스 파일에 백업할 변경된 바이트 범위만 선택할 수 있습니다.

백업 전 작업 단계에서 SQL 기록기는 선택한 각 데이터베이스에 대한 단일 차등 기반이 있는지 확인합니다.

PostSnapshot 이벤트 중에 SQL 기록기는 SQL Server에서 부분 파일 정보를 가져온 다음, IVssComponent::AddPartialFile 호출을 사용하여 백업 구성 요소 문서에 추가합니다.

참고 항목

SQL 기록기는 차등 백업에 대해 단일 차등 기준만 지원합니다. 다중 기준은 지원되지 않습니다.

부분 파일 정보 형식

차등 백업 중에 백업되는 각 데이터베이스에 대해 SQL 기록기는 각 데이터베이스 파일에 대한 부분 파일 정보를 저장합니다. 이 정보는 요청자 또는 백업 애플리케이션에서 실제 파일 백업 중에 파일의 관련 부분만 백업 미디어에 복사하는 데 사용됩니다. 이 부분 파일 정보의 형식에 대한 자세한 내용은 볼륨 섀도 복사본 서비스에 대한 설명서를 참조하세요.

요청자는 IVssComponent::GetPartialFileCountIVssComponent::GetPartialFile을 호출하여 이러한 파일을 확인할 수 있습니다. IVssComponent::GetPartialFile은 파일을 가리키는 경로와 파일 이름 및 파일에서 백업해야 하는 내용을 나타내는 범위 문자열을 반환합니다.

부분 파일 정보 검색에 대한 자세한 내용은 VSS 설명서를 참조하세요.

파일 백업

이 단계에서 백업 애플리케이션은 백업 구성 요소 문서에 저장된 기록기 메타데이터를 확인하여 파일에서 해당하는 부분만 백업해야 합니다. (전체 텍스트 카탈로그 파일의 경우 이 백업은 파일 타임스탬프에 따라 수행해야 합니다. 이 내용은 이 문서의 뒷부분에서 설명합니다).

차등 백업은 항상 데이터베이스에 존재하는 최신 기본 백업과 관련이 있습니다. 복원 시 SQL Server는 일치하지 않는 기준 백업과 차등 백업을 검색합니다. 따라서 백업 애플리케이션 또는 시스템 관리자는 차등이 예상 전체 백업을 기준으로 하는지 확인할 책임이 있습니다. 대역 외 방식을 통해 별도의 전체 백업을 만든 경우 백업 애플리케이션은 기본 백업을 "소유"하지 않으므로 차등 백업을 복원하지 못할 수 있습니다.

현재 바이트 범위 정보(부분 파일 정보)가 너무 크면(버퍼 크기가 64K바이트 초과) SQL Server에서 사용자에게 전체 백업을 수행하도록 지시하는 오류가 발생합니다.

문제 해결

파일 추가/드롭/축소/증가/논리 이름 바꾸기/물리적 이름 바꾸기는 백업에서 흥미로운 사례를 만듭니다.

기본을 가져온 후 새로 추가된 파일

SQL 데이터베이스 파일의 모든 헤더가 부분 사양에 있어야 하므로 이러한 파일은 부분 사양에 포함됩니다. 헤더 페이지 외에도 할당된 모든 페이지를 부분 지정에 포함해야 합니다.

기본을 가져온 후 삭제된 파일

기본을 가져온 후 데이터 파일을 삭제할 수 있습니다. 이러한 파일은 차등 백업 중에 기록기 메타데이터 문서에 포함되지 않습니다. 또한 삭제된 파일과 관련된 부분 정보는 없습니다.

베이스를 가져온 후 축소된 파일

서버에서 파일 축소를 사용하지 않도록 설정할 때까지 파일에서 부분 정보가 수집되지 않습니다. 이렇게 하면 데이터 파일의 축소된 영역에 해당하는 부분 정보가 포함되지 않습니다.

베이스를 가져온 후 성장한 파일

부분 정보가 수집되기 전에 증가가 발생한 경우 부분 정보에는 확장된 지역에 할당된 페이지가 포함되어야 합니다. 부분 정보가 수집된 후 증가가 발생한 경우 부분 정보에는 증가된 지역의 변경 내용이 포함되지 않습니다. 다음 섹션에서 이러한 변경 내용이 로그 롤포워드를 통해 복원되는 것을 확인할 수 있습니다.

기본을 가져온 후 논리적으로 이름이 바뀐 파일

파일의 논리적 이름은 기록기 메타데이터 문서 또는 백업 구성 요소 문서의 어디에서도 참조되지 않으므로 파일의 논리적 이름은 백업 또는 복원에 영향을 주지 않습니다. (자세한 내용은 기록기 메타데이터 문서: 예제를 참조하세요.)

기본을 가져온 후 이름이 물리적으로 변경된 파일

데이터베이스가 다시 시작될 때까지 물리적 데이터베이스 파일 이름 바꾸기가 적용되지 않습니다. 따라서 부분 정보 버퍼에 있는 데이터베이스 구성 정보 또는 파일 경로 정보는 여전히 이전 물리적 경로를 기반으로 합니다. 이 경로만 스냅샷에 있는 해당 데이터베이스 파일의 유효한 경로이기 때문입니다.

복원

차등 복원 중에 요청자가 SQL 기록기에 다시 제공하는 백업 메타데이터에는 백업 유형 정보가 있습니다. 따라서 SQL 기록기에서는 특별한 처리가 필요하지 않습니다. SQL Server는 자체적으로 차등 복원임을 파악합니다. SQL Server는 VSS를 통해 수행되지 않은 네이티브 차등 복원과 동일한 방식으로 이러한 차등 복원을 처리합니다.

Prerestore 단계

이 단계에서는 SQL Server가 차등 백업의 파일 메타데이터에 따라 모든 파일의 크기를 적절한 크기로 조정합니다. 파일이 커지면 SQL Server에서 증가된 부분을 0으로 표시합니다. 새 파일을 만들어야 하는 경우(기본 파일을 만든 후에 만든) SQL Server는 새 파일을 0으로 만듭니다. 또한 파일 핸들을 모두 닫으므로 백업 애플리케이션은 백업 미디어에서 복원된 데이터로 파일을 덮어쓸 수 있게 됩니다.

파일 복원

클라이언트는 부분 파일 사양에 따라 파일을 복원해야 합니다. 기록기 메타데이터에 저장된 부분 파일 사양에 지정된 대로 데이터베이스 파일의 동일한 오프셋/범위로 데이터를 복원해야 합니다.

데이터베이스 파일 add/drop/growth/shrink/logical-rename/physical-rename은 복원 시 흥미로운 사례를 다시 만듭니다.

전체 베이스를 가져온 후 데이터베이스 파일이 추가된 경우

복원 준비 단계 중에 SQL Server에서 이러한 파일을 미리 만들었어야 합니다. 적절한 크기로 확장되고 0으로 확장되어야 합니다. 클라이언트는 부분 사양에 따라 데이터를 배치하기만 하면 됩니다(부분 사양에는 할당된 모든 익스텐트 포함).

전체 베이스를 가져온 후 데이터베이스 파일이 삭제된 경우

SQL Server가 제공한 부분 정보에는 이러한 파일 삭제에 대한 추적 정보가 포함되지 않습니다. SQL Server는 복원된 파일 메타데이터를 기존 컨테이너와 비교하고 실제로 삭제하여 삭제할 파일을 검색합니다. 이 작업은 복원 전에 준비 단계로 수행됩니다.

전체 베이스를 가져온 이후 데이터베이스 파일이 성장한 경우

SQL Server가 복원 준비 단계에서 이러한 파일을 올바른 크기로 확장해야 합니다. 확장된 지역은 SQL Server에서도 0으로 설정해야 합니다. 따라서 클라이언트는 부분 사양에 따라 성장한 지역에서도 데이터를 안전하게 배치할 수 있습니다. 부분 정보를 가져온 후 파일이 커지면 차등 백업과 함께 백업된 로그를 재생하여 성장한 지역의 변경 내용이 복원됩니다.

전체 베이스를 가져온 이후 데이터베이스 파일이 축소된 경우

SQL Server는 메타데이터에 따라 파일을 필요한 크기로 잘림을 담당합니다. 이 작업은 복원 전에 준비 단계로 수행됩니다.

전체 베이스를 가져온 이후 데이터베이스 파일의 이름이 논리적으로 변경된 경우

논리적 이름은 기록기 메타데이터 문서 또는 백업 구성 요소 문서에 표시되지 않으므로 복원에 영향을 주지 않습니다. 클라이언트가 시스템 카탈로그 정보를 포함하는 주 데이터베이스 파일에 변경 내용을 적용하면 논리적 이름 변경이 복원됩니다.

전체 베이스를 가져온 이후 데이터베이스 파일의 이름이 물리적으로 변경된 경우.

차등 백업 시점까지 이름이 적용되지 않은 경우 클라이언트는 여전히 데이터를 이전 위치로 복원합니다. 복원 후에 데이터베이스를 다시 시작하면 물리적 이름 바꾸기가 적용됩니다. 차등 백업 시점까지 실제 파일 이름이 이미 적용된 경우 부분 데이터(있는 경우)가 새 물리적 경로에서 백업되었습니다.

복원 후 작업

복원 후 이벤트 중에 SQL 기록기는 데이터베이스의 정상적인 다시 실행 작업 및 복구(SetAdditionalRestores()이 False로 설정된 경우)를 수행합니다.

전체 텍스트 카탈로그의 차등 백업 및 복원

SQL Server 전체 텍스트 카탈로그는 나머지 데이터베이스 파일과 함께 백업하거나 복원해야 하는 데이터베이스 리소스의 일부입니다. 전체 텍스트 카탈로그의 차등 백업은 타임스탬프를 기반으로 합니다. SQL Server VSS 차등 백업 및 복원에는 단일 기준 백업이 있습니다. 즉, 컨테이너마다 기반이 달라지지 않습니다. 따라서 VSS 전체 텍스트 카탈로그 백업의 경우, 전체 텍스트 카탈로그 컨테이너마다 하나의 타임스탬프 기반이 있는 네이티브 SQL 차등 백업과 달리 모든 전체 텍스트 카탈로그 컨테이너에 대해 차등 백업이 단일 타임스탬프를 기반으로 합니다.

VSS에서 이 타임스탬프는 전체 백업 중에 설정되고 후속 차등 백업 중에 사용되는 구성 요소 전체 속성으로 표현됩니다.

OnIdentify

OnIdentify에서 SQL 기록기는 IVssCreateWriterMetadata::SetBackupSchema()를 호출하여 값을 VSS_BS_TIMESTAMPED으로 설정합니다. 이 값은 SQL 기록기가 차등 기반의 관리 권한을 소유하고 있음을 백업 애플리케이션에 알립니다.

기본 타임스탬프 설정

기본 타임스탬프는 전체 백업 중에 설정됩니다. OnPostSnapshot()에서 작성기 IVssComponent::SetBackupStamp()는 백업 문서에 구성 요소와 함께 타임스탬프를 저장하기 위해 호출합니다.

차등 백업

백업 애플리케이션은 기준 전체 백업에서 이 타임스탬프를 검색하고, IVssComponent::GetBackupStamp() 호출을 통해 이전 기준 백업에서 기준 스탬프를 검색하여 기록기에 타임스탬프를 사용할 수 있도록 합니다. 그런 다음, IVssBackupComponent::SetPreviousBackupStamp()을 호출하여 작성자가 사용할 수 있도록 합니다. 그런 다음 기록기는 IVssComponent::GetPreviousBackupStamp()을 호출하여 스탬프를 검색하고 IVssComponent::AddDifferencedFilesByLastModifyTime()에 사용되는 타임스탬프로 변환합니다.

차등 백업 중 백업 애플리케이션의 역할 차등 백업 중 백업 애플리케이션은 다음과 같은 작업을 수행합니다.

  • 마지막으로 수정된 타임스탬프가 구성 요소에서 있는 파일 세트의 “마지막 수정 시간”에 지정된 타임스탬프보다 이후인 파일(전체 파일) 모두 백업
  • 삭제된 파일 추적 및 검색.

차등 복원 중 백업 애플리케이션의 책임 차등 복원 중에 백업 애플리케이션은 다음 작업을 수행할 책임이 있습니다.

  • 새 파일이 없는 경우 새 파일을 만들거나 기존 파일이 이미 있는 경우 덮어쓰여 백업된 모든 파일을 복원합니다.
  • 복원된 파일이 기존 파일보다 큰 경우 콘텐츠를 배치하기 전에 파일을 늘입니다.
  • 복원된 파일이 기존 파일보다 작은 경우 복원된 파일과 동일한 크기로 파일을 잘림.
  • 삭제해야 하는 모든 파일 삭제 즉, 차등 백업 시점을 기준으로 존재해서는 안 되는 파일입니다.

복사 전용 백업

경우에 따라 특별한 목적을 위해 백업을 수행해야 합니다. 예를 들어 테스트 목적으로 데이터베이스의 복사본을 만들어야 할 수 있습니다. 이 백업은 데이터베이스의 전체 백업 및 복원 절차에 영향을 주지 않아야 합니다. COPY_ONLY 옵션을 사용하면 백업이 "대역 외"로 수행되며 일반 백업 시퀀스에 영향을 미치지 않아야 합니다. SQL 기록기는 SQL Server 인스턴스를 사용하는 "복사 전용" 백업 유형을 지원합니다.

백업 검색 단계 중에 SQL 기록기는 IVssCreateWriterMetadata::SetBackupSchema 호출을 사용하여 지원되는 백업 스키마 옵션을 VSS_BS_COPY 설정하여 복사 전용 백업을 수행하는 기능을 나타냅니다. 요청자는 호출 IVssBackupComponents::SetBackupState을 사용하여 VSS_BACKUP_TYPE 옵션을 VSS_BT_COPY 설정하여 백업 유형을 복사 전용 백업으로 설정할 수 있습니다.

복사 전용 백업을 선택하면 각 파일의 백업 기록 상태에 관계없이 디스크의 파일이 백업 매체(요청자)에 복사되는 것으로 간주됩니다. SQL Server는 백업 기록을 업데이트하지 않습니다. 이 유형의 백업은 추가 차등 백업 작업을 위한 기본 백업으로 구성되지 않으며 이전 차등 백업의 기록을 방해하지 않습니다.

복원(이동)

VSS를 사용하면 백업 애플리케이션(요청자)이 IVssComponent::SetNewTarget 호출을 사용하여 새 복원 대상을 지정할 수 있습니다. PreRestore()PostRestore() 모두에서 SQL 기록기는 하나 이상의 새 대상이 지정되어 있는지 확인합니다. 실제 파일 복원/복사 시간 동안 파일을 새 위치에 물리적으로 복사하는 것은 백업 애플리케이션의 책임입니다.

백업 애플리케이션은 물리적 경로에 대한 새 대상을 지정할 수만 있으며 파일 지정은 변경할 수 없습니다. 예를 들어 c:\data\test.mdf 있는 데이터베이스 파일의 경우 실제 파일 이름 test.mdf 변경할 수 없습니다. c:\data 경로만 변경할 수 있습니다. c:\ftdata\foo에 있는 전체 텍스트 카탈로그 컨테이너의 경우 VSS의 파일 사양은 "*"이고 VSS의 경로 사양은 c:\ftdata\foo이므로 전체 경로를 변경할 수 있습니다.

데이터베이스 이름 바꾸기

특히 SQL 데이터베이스를 원본 데이터베이스와 나란히 복원해야 하는 경우 요청자가 SQL 데이터베이스를 새 이름으로 복원해야 할 수 있습니다. 이 옵션은 복원 작업 중 요청자가 VSS 호출 IVssBackupComponents::SetRestoreOptions()(wszRestoreOptions 매개 변수에서)을 사용하여 사용자 지정 복원 옵션을 "새 구성 요소 이름" = <"새 이름">으로 설정하여 지정할 수 있습니다.

SQL 기록기는 새 구성 요소 이름 값의 전체 콘텐츠를 가져와서 복원된 데이터베이스의 새 이름으로 사용합니다. 옵션이 지정되지 않은 경우 SQL은 원래 이름(구성 요소 이름)을 사용하여 데이터베이스를 복원합니다.

참고 항목

SQL 기록기는 현재 데이터베이스를 새 인스턴스로 이동하는 "인스턴스 간 이름 바꾸기"를 지원하지 않습니다.

자동 복구된 스냅샷

일반적으로 VSS 프레임워크를 사용하여 만든 SQL Server 데이터베이스 스냅샷은 복구되지 않은 상태입니다. 복구 단계를 수행하여 진행 중인 트랜잭션을 롤백하고 데이터베이스를 일관된 상태로 유지하기 전에는 스냅샷의 데이터에 안전하게 액세스할 수 없습니다. 스냅샷은 읽기 전용 상태이므로 데이터베이스를 연결하는 일반적인 프로세스에서 복구할 수 없습니다.

스냅샷 생성 프로세스에서 스냅샷을 자동 저장할 수 있습니다. 기록기 메타데이터 문서의 일부로, SQL 기록기는 스냅샷의 데이터베이스에 대해 먼저 복구를 수행해야 스냅샷 세트를 지정할 때 데이터베이스에 액세스할 수 있음을 나타내기 위해 구성 요소 플래그 VSS_CF_APP_ROLLBACK_RECOVERY를 지정합니다. 요청자는 스냅샷이 앱 롤백 스냅샷(즉, 스냅샷에 있는 모든 데이터베이스 파일이 애플리케이션 사용을 위해 일관된 상태로 유지됨) 또는 백업 스냅샷(나중에 시스템 오류가 발생할 경우 복원할 데이터를 백업하는 데 사용되는 스냅샷)이어야 한다고 지정할 수 있습니다.

요청자는 이 구성 요소가 백업이 아닌 용도로 백업되고 있음을 나타내도록 VSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY을 설정 해야 합니다. 그러면 VSS가 SQL 작성자가 선택한 구성 요소에 지정한 VSS_CF_APP_ROLLBACK_RECOVERYVSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY와 상관시키고 자동 복구가 수행되고 있는지 확인합니다. VSS는 제한된 기간 동안 스냅샷을 쓸 수 있도록 하고 스냅샷 컨텍스트에 VSS_VOLSNAP_ATTR_AUTORECOVERY 비트를 자동으로 추가합니다.

SQL Server 자동 복구는 앱 롤백 스냅샷에만 적용되어야 하지만 백업 스냅샷에는 적용되지 않아야 합니다. 앱 롤백 스냅샷의 경우 PostSnapShotevent 도중에 SQL 기록기에서 자동 복구 프로세스를 시작합니다. 이 프로세스는 스냅샷 집합에서 명시적으로 선택한 각 SQL Server 데이터베이스에 대해 다음을 수행합니다.

  • 스냅샷 데이터베이스를 원래 SQL Server 인스턴스(즉, 원래 데이터베이스가 연결된 인스턴스)에 연결합니다.

  • 데이터베이스를 복구합니다(이 작업은 "연결" 작업의 일부로 수행됨).

  • 로그 파일을 축소합니다.

    VSS 공급자가 "소프트웨어 공급자"인 경우 VSS 프레임워크에서 수행해야 하는 불필요한 "쓰기 복사"의 양이 줄어듭니다. 로그 파일을 축소하는 것이 기본 동작입니다. 다음 레지스트리 키로 값을 1로 설정하여 사용하지 않도록 설정할 수 있습니다.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLWriter\ Settings\DisableLogShrink

    이는 스냅샷을 사용하여 로그에서 특정 페이지(특정 시점)의 데이터를 내보내 온라인 데이터베이스의 문제를 해결하는 데 사용할 수 있는 시나리오에서 유용할 수 있습니다.

  • 데이터베이스를 분리합니다.

이제 쿼리를 위해 연결할 수 있는 일관되고 복구된 스냅샷이 있습니다.

멀티 데이터베이스 트랜잭션

경우에 따라 스냅샷 데이터베이스에 일부 실행 중인 다중 데이터베이스 트랜잭션이 포함될 수 있습니다. 복구 작업 중에 SQL 기록기는 일시 중단 옵션으로 스냅샷에 데이터베이스를 연결합니다. 이렇게 하면 커밋 준비 상태인 트랜잭션을 포함하여 아직 커밋되지 않은 다중 데이터베이스 트랜잭션이 모두 롤백됩니다. 이로 인해 스냅샷 집합의 데이터베이스 간에 일부 불일치가 발생할 수 있습니다. 예를 들어 두 개의 데이터베이스 A와 B를 고려합니다. 이러한 두 데이터베이스 간에 분산 트랜잭션이 있으며 이 트랜잭션은 데이터베이스 A의 커밋됨 상태이고 데이터베이스 B에서는 커밋 준비 상태입니다. 자동 복구 프로세스의 일부로 이 트랜잭션은 데이터베이스 A에서 커밋되고 데이터베이스 B에서 롤백됩니다. 이로 인해 스냅샷 집합의 일부 불일치가 발생할 수 있습니다.

VSS 프레임워크가 Longhorn 시간 프레임에 릴리스할 예정인 MS DTC(Microsoft Distributed Transaction Coordinator) 구성 요소는 SQL Server 인스턴스 간의 데이터베이스에 걸쳐 있는 트랜잭션에 대해 이러한 불일치 문제를 해결합니다. 다음 버전의 SQL Server에서는 SQL Server 인스턴스 내의 데이터베이스에 걸쳐 있는 트랜잭션에 대해 이러한 불일치를 해결합니다.

자동 복구된 스냅샷에 대한 보안 영향

VSS 스냅샷의 경우 자동 복구 후에 SQL Server 계정이 속한 특수한 기본 제공 그룹에만 액세스할 수 있도록 ACL(액세스 제어 목록)을 사용하여 파일을 보호합니다. 이는 box 관리자 또는 해당 특수 그룹의 구성원이 데이터베이스를 연결할 수 있음을 의미합니다. 스냅샷에서 데이터베이스 파일의 연결을 요청하는 클라이언트는 Builtin/Administrators 또는 SQL Server 계정의 구성원이어야 합니다.

단순 복구 모델의 사용자 데이터베이스

단순 복구 모델을 사용하는 사용자 데이터베이스와 함께 Master 데이터베이스를 복원하는 경우 마스터 데이터베이스와 동일한 기술로 사용자 데이터베이스를 복원할 수 있습니다. 인스턴스가 종료되면 볼륨을 복사하거나 탑재하기만 하면 됩니다. SQL 인스턴스가 시작되면 모든 것이 복구됩니다.

사용자 데이터베이스 롤 포워드

사용자 데이터베이스를 복구하고 master 데이터베이스 복구와 함께 롤 포워드해야 하는 경우 인스턴스가 마스터 데이터베이스와 사용자 데이터베이스를 함께 시작하고 복구해서는 안 됩니다.

프로세스는 다음과 같습니다.

  1. SQL Server 인스턴스가 중지되었는지 확인합니다.
  2. 두 단계로 복원을 수행합니다.
    1. VSS를 통해 파일 복사/볼륨 탑재를 통해 동시에 복구해야 하는 시스템 데이터베이스 및 사용자 데이터베이스(즉, 단순 복구 모델의 사용자 데이터베이스)를 복원합니다.
      1. 롤 포워드할 사용자 데이터베이스가 시스템 데이터베이스와 동일한 볼륨에 있지 않은 경우 이 시점에서 해당 볼륨을 다시 가져오지 않아야 합니다. 이 시나리오에서는 백업 전에 계획이 필요합니다.
      2. 사용자 데이터베이스가 시스템 데이터베이스와 다른 볼륨에 있는 경우 SQL Server에서 사용자 데이터베이스를 숨겨야 합니다.
    2. -f 매개 변수를 사용하여 SQL Server 인스턴스를 시작합니다. (-f 시작 옵션을 사용하는 경우 master 데이터베이스만 복원할 수 있습니다.)
      1. 롤 포워드할 각 데이터베이스에 대해 ALTER DATABASE <x> SET OFFLINE을 실행합니다. 또는 데이터베이스를 분리합니다.
      2. SQL Server 인스턴스를 중지합니다.
      3. SQL Server 인스턴스를 시작합니다(롤 포워드할 사용자 데이터베이스의 파일이 SQL Server에 표시되지 않음).

VSS를 사용하여 "롤포워드로 전체 복원"에 설명된 대로 사용자 데이터베이스 WITH NORECOVERY를 복원합니다.

기록기 메타데이터 문서: 예제

컴퓨터 Server1의 SQL Server 인스턴스 인스턴스1에 속하는 DB1이라는 데이터베이스에는 다음 데이터베이스/로그 파일이 포함됩니다.

  • c:\db\DB1.mdf에 저장된 “primary”라는 데이터베이스 파일
  • c:\db\DB1.ndf에 저장된 "보조"라는 데이터베이스 파일
  • c:\db\DB1.ldf에 저장된 “log”라는 데이터베이스 로그 파일
  • c:\db\ftdata\foo 디렉터리 아래에 저장된 "foo"라는 전체 텍스트 카탈로그
  • c:\db\ftdata\bar 디렉터리 아래에 저장된 "bar"라는 전체 텍스트 카탈로그입니다.

다음은 데이터베이스의 기록기 메타데이터입니다.

데이터베이스 수준 파일 그룹 구성 요소

주 데이터베이스 파일:

ComponentType: VSS_CT_FILEGROUP
LogicalPath: "Server1\Instance1"
ComponentName: "DB1"
Caption: NULL
pbIcon: NULL
cbIcon: 0
bRestoreMetadata: FALSE
NotifyOnBackupComplete: TRUE
Selectable: TRUE
SelectableForRestore: TRUE
ComponentFlags: VSS_CF_APP_ROLLBACK_RECOVERY

secondary 데이터베이스 파일:

LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db"
FileSpec: "DB1.mdf"
Recursive: FALSE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED
Filegroup file
LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db"
FileSpec: "DB1.ndf"
Recursive: FALSE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED

전체 텍스트 파일 로그:

LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db"
FileSpec: "DB1.ldf"
Recursive: FALSE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED

전체 텍스트 파일 foo:

LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db\ftdata\foo"
FileSpec: "*"
Recursive: TRUE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED

전체 텍스트 파일 바:

LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db\ftdata\bar"
FileSpec: "*"
Recursive: TRUE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED

서버 인스턴스가 컴퓨터의 기본 인스턴스인 경우 논리 경로는 "Server1"의 한 부분이 됩니다.

특별 케이스

이 섹션에서는 SQL 기록기 기반 백업 및 복원 작업 중에 발생하는 몇 가지 특별한 경우에 대해 설명합니다.

데이터베이스 자동 묶기

비구성 요소 기반 백업의 경우 조각난 조건을 확인할 때 데이터베이스를 자동으로 닫지만, 자동으로 닫히는 데이터베이스는 백업 작업 중에 명시적으로 동결되지 않습니다.

여기에 예상되는 시나리오는 닫힌 데이터베이스가 여러 개 있을 수 있고, 스냅샷 비용을 최소화하려는 경우입니다. 자동 닫힌 데이터베이스는 일반적으로 리소스가 부족한 로우 엔드 구성에서 사용됩니다.

파일 목록

각 데이터베이스에 대한 파일 목록은 Backup 준비 이벤트 이전의 열거형 단계에서 결정됩니다. 열거 단계와 중단 이벤트 사이에서 데이터베이스 파일 목록이 변경된 경우 애플리케이션이 파일 목록을 다시 확인하지 않으면 데이터베이스가 조각날 수 있습니다. 이로 인해 문제가 발생하는 것은 아니지만 공급업체에서 유의해야 하는 사항입니다.

중지된 인스턴스

열거형 단계가 발생할 때 SQL Server 인스턴스가 실행되고 있지 않으면 해당 인스턴스에 대한 데이터베이스를 선택할 수 없습니다.

열거와 백업 준비 이벤트 사이의 간격에 인스턴스가 중지될 경우 중지된 인스턴스의 데이터베이스가 모두 무시됩니다.

시스템 및 사용자 데이터베이스

SQL Server의 시스템 데이터베이스로는 SQL Server와 함께 제공 및 설치되는 master, model, msdb 데이터베이스 등이 있습니다. 이 섹션에서는 VSS 스냅샷 백업 프로세스에서 이러한 데이터베이스를 처리하는 방법을 설명합니다.

master 데이터베이스를 복원하려면 인스턴스를 중지하고 백업 애플리케이션을 통해 데이터베이스 파일을 바꾼 다음, 인스턴스를 다시 시작해야 합니다. 롤포워드는 지원되지 않습니다.

SQL 기록기는 인스턴스를 종료하지 않고 모델 및 msdb 데이터베이스의 온라인 복원을 지원합니다.

참고 항목

SQL Server 애플리케이션 백업 - SQL 기록기 로깅
BACKUP(Transact-SQL)
RESTORE(Transact-SQL)
SQL Server 데이터베이스 백업 및 복원
복사 전용 백업(SQL Server)
트랜잭션 로그 백업(SQL Server)
트랜잭션 로그 백업 적용(SQL Server)
SQL Server 트랜잭션 로그 아키텍처 및 관리 가이드