다음을 통해 공유


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

적용 대상:SQL Server - Windows만 해당

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

VSS 인프라

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

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

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

VSS 구성 요소

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

  • 공급자는 섀도 복사본 데이터를 소유하고 섀도 복사본을 인스턴스화합니다.

  • 작성자는 데이터를 변경하고 섀도우 카피 동기화 프로세스에 참여하는 애플리케이션입니다.

  • 요청자는 섀도 복사본 생성 및 소멸을 시작합니다. 이 디자인은 요청자가 백업 애플리케이션인 시나리오에 초점을 맞췄습니다.

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

VSS가 당사자 간의 조정을 제공하는 방법을 보여 주는 다이어그램

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

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

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

자세한 내용은 Volume Shadow Copy Service를 참조하십시오.

SQL 기록기

SQL 기록기는 SQL Server 인스턴스에서 제공하는 VSS 기록기입니다. SQL Server와의 VSS 상호 작용을 처리합니다. SQL Writer는 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 NT SERVICE\SQLWriter 계정이 sysadmin 역할의 멤버인지 확인합니다.

SQL 기록기 다시 사용 및 시작

기본적으로 SQL 기록기 서비스가 사용하도록 설정되고 자동으로 시작됩니다. 이 구성이 수정된 경우 다음 단계를 수행하여 기본 설정으로 되돌려야 합니다.

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

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

참고

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

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

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

  • 차등 백업 및 복원: SQL 기록기는 두 가지 VSS 차등 메커니즘을 통해 차등 백업 및 복원을 지원합니다.

    • 부분 파일: SQL 기록기는 VSS 부분 파일 메커니즘을 사용하여 데이터베이스 파일 내에서 변경된 바이트 범위를 보고합니다.

    • 마지막 수정 시간별 파일 차이: SQL 기록기는 전체 텍스트 카탈로그에서 변경된 파일을 보고하기 위해 VSS 차이 파일 바이 라스트 수정 시간 메커니즘을 사용합니다.

  • 이동 시 복원: SQL 기록기는 복원하는 동안 VSS의 새 대상 사양을 지원합니다. 새 대상 사양을 사용하면 데이터베이스/로그 파일 또는 전체 텍스트 카탈로그 컨테이너를 복원 작업의 일부로 재배치할 수 있습니다.

  • 데이터베이스 이름 바꾸기: 요청자는 특히 데이터베이스를 원래 데이터베이스와 나란히 복원해야 하는 경우 새 이름으로 SQL Server 데이터베이스를 복원해야 할 수 있습니다. SQL 기록기는 데이터베이스가 원래 SQL 인스턴스 내에 남아 있는 한 복원 작업 중에 데이터베이스 이름을 바꾸는 것을 지원합니다.

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

  • 데이터베이스 스냅샷 자동 복구: 일반적으로 VSS 프레임워크를 사용하여 가져온 SQL Server 데이터베이스의 스냅샷은 복구되지 않은 상태입니다. 스냅샷의 데이터는 복구 단계를 거치기 전에 안전하게 액세스할 수 없으므로 진행 중인 트랜잭션을 롤백하고 데이터베이스를 일관된 상태로 유지합니다. VSS 백업 애플리케이션은 스냅샷 만들기 프로세스의 일부로 스냅샷의 자동 복구를 요청할 수 있습니다.

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

지원되지 않는 사항

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

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

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

백업 작업

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

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

버전 지원

SQL 기록기는 SQL Server의 일부로 제공되며, SQL Server 인스턴스만 지원합니다. SQL 기록기는 SQL Server Express 버전에서 시작한 사용자 인스턴스를 포함하여 SQL Server Express 인스턴스도 열거합니다.

구성 요소 기반이 아닌 백업 작업

구성 요소 기반이 아닌 백업은 스냅샷 집합의 볼륨 목록을 사용하여 데이터베이스를 암시적으로 선택합니다. 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(볼륨 섀도 복사본 서비스)를 참조하세요.

참고

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

스냅샷 만들기 워크플로

다음 이미지는 구성 요소 기반 스냅샷 만들기/백업 작업 중에 데이터 흐름 다이어그램을 보여 줍니다.

데이터 흐름의 스크린샷.

백업 수행과 관련된 기본 작업을 보다 완벽하게 이해하려면 이 개요를 다음 단계로 세분화하면 유용합니다.

백업 초기화

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

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

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

  • 애플리케이션 ID 및 친숙한 이름
  • 파일 및 구성 요소가 있는 위치
  • 백업에 포함 및 제외해야 하는 파일
  • 복원 시 사용해야 하는 옵션

VSS 프레임워크를 통해 요청자에게 다시 전달됩니다.

백업 발견

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

백업 구성 요소 문서

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

사전 복구 작업

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

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

백업 준비

요청자는 수행할 백업 작업 유형을 설정한 후, VSSIVssBackupComponents::SetBackupState를 통해 작성자에게 알리고 IVssBackupComponents::PrepareForBackup을 사용하여 백업 작업을 준비해야 합니다.

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

실제 파일 백업

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

  1. 작가 지위를 얻으세요. 기록기의 상태를 반환합니다. 요청자는 여기에서 오류를 처리해야 할 수 있습니다.
  2. 백업을 수행합니다.

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

백업 완료

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

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

참고

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

기록기 메타데이터 저장

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

백업 종료

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

SQL 작성기 메타데이터 문서

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

  • 작성자 식별 정보

    • 기록기 이름 - L“SqlServerWriter”
    • Writer 클래스 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

  • 복원 메서드 사양 – 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
    • 복원용으로 선택 가능 - 참
    • 지원되는 복원 방법 - 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 관련 데이터를 이동합니다.

초기화 복원

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

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

복원 준비

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

백업 애플리케이션이 현재 복원 작업(즉, norecovery로 복원 이 필요함)에 차등 백업 또는 로그 백업을 적용하려는 경우 복원 중인 각 데이터베이스에 대한 구성 요소 만들기의 일부로 다음 옵션을 설정해야 합니다.

IVssBackupComponents::SetAdditionalRestores(true)

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

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

파일 복원

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

정리 및 종료

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

백업 및 복원 옵션 세부 정보

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

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

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

전체 백업 및 복원

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

구성 요소 기반이 아닌 백업 및 복원

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

Backup

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

복원

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

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

구성 요소 기반 백업 및 복원

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

백업

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

롤 포워드(후속 복구) 없이 전체 복원

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

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

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

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

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

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

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

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

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

  1. 각 데이터베이스를 복원하기 위한 준비. 이 단계에서는 요청자 애플리케이션이 데이터베이스 파일을 복사/탑재할 수 있도록 모든 파일 핸들을 닫습니다.

  2. 요청자 애플리케이션이 파일을 복사/탑재합니다.

  3. 복원을 완료합니다(사용 NORECOVERY). 데이터베이스는 온라인 상태가 되지만 복원 상태로 전환 됩니다 .

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

전체 텍스트 지원

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

차등 백업 및 복원

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

백업

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

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

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

참고

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

부분 파일 정보 형식

차등 백업 중에 백업되는 각 데이터베이스에 대해 SQL 기록기는 각 데이터베이스 파일에 대한 부분 파일 정보를 저장합니다. 이 정보는 요청자 또는 백업 애플리케이션에서 실제 파일 백업 중에 파일의 관련 부분만 백업 미디어에 복사하는 데 사용됩니다.

이 부분 파일 정보의 형식에 대한 자세한 내용은 VSS(볼륨 섀도 복사본 서비스)를 참조하세요.

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

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

파일 백업

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

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

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

문제 해결

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

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

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

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

기지를 점령한 후, 데이터 파일을 삭제할 수 있습니다. 이러한 파일은 차등 백업 중에 기록기 메타데이터 문서에 포함되지 않습니다. 또한 삭제된 파일과 일부 정보가 연결되어 있지 않습니다.

베이스를 가져온 후 파일이 축소되었습니다.

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

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

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

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

파일의 논리적 이름은 라이브러리 메타데이터 문서 또는 백업 구성 요소 문서 어디에서도 참조되지 않으므로, 백업이나 복원에 영향을 주지 않습니다.

자세한 내용은 기록기 메타데이터 문서를 참조하세요. 이 문서의 뒷부분에 있는 예제 입니다.

기본을 가져온 후 파일의 이름이 물리적으로 바뀌었습니다.

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

복원

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

복원 전 단계

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

파일 복원

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

데이터베이스 파일 추가/제거/성장/축소/논리적 이름 변경/물리적 이름 변경을 다시 사용하면 복원 시 흥미로운 문제 해결 사례가 제공됩니다.

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

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

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

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

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

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

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

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

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

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

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

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

복원 후 작업

복원 후 이벤트 동안 SQL 기록기가 데이터베이스의 보통 다시 실행 작업을 수행하고, SetAdditionalRestores()False로 설정된 경우 복구 작업을 실행합니다.

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

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

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

OnIdentify

SQL 기록기는 OnIdentify에서 VSS_BS_TIMESTAMPED 값을 설정하기 위해 IVssCreateWriterMetadata::SetBackupSchema()을 호출합니다. 이 값은 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의 파일 사양이 "*"이고 경로 사양이 c:\ftdata\foo이므로 전체 경로를 변경할 수 있습니다.

데이터베이스 이름 바꾸기

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

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

참고

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

자동 복구된 스냅샷

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

스냅샷 만들기 프로세스의 일부로 스냅샷을 자동으로 복구할 수 있습니다. 기록기 메타데이터 문서의 일부로 SQL 기록기는 스냅샷 집합을 지정할 때 데이터베이스에 액세스하기 전에 스냅샷의 데이터베이스에 대해 복구를 수행해야 함을 나타내는 구성 요소 플래그 VSS_CF_APP_ROLLBACK_RECOVERY 를 지정합니다. 요청자는 스냅샷이 앱 롤백 스냅샷(즉, 스냅샷의 모든 데이터베이스 파일이 애플리케이션 사용에 대해 일관된 상태여야 함) 또는 백업 스냅샷(스냅샷)이어야 함을 나타낼 수 있습니다. 시스템 오류가 있는 경우 나중에 복원할 데이터를 백업하는 데 사용됩니다.)

요청자는 이 구성 요소가 백업이 아닌 용도로 백업되고 있음을 나타내도록 VSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY을 설정 해야 합니다. 그런 다음 VSS는 선택한 구성 요소VSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY에 지정된 SQL 기록기를 상관 관계를 VSS_CF_APP_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 Server에서는 스냅샷 데이터베이스에 일부 실행 중인 다중 데이터베이스 트랜잭션이 포함될 수 있습니다. 복구 작업 중에 SQL 기록기는 일시 중단 옵션을 사용하여 스냅샷에 데이터베이스를 연결합니다. 이렇게 하면 커밋되지 않은 모든 다중 데이터베이스 트랜잭션(커밋 준비 상태인 트랜잭션 포함)이 롤백됩니다. 이로 인해 스냅샷 집합의 데이터베이스 간에 일부 불일치가 발생할 수 있습니다.

예를 들어 두 개의 데이터베이스 A와 B를 고려합니다. 이러한 두 데이터베이스 간에 분산 트랜잭션이 있으며 이 트랜잭션은 데이터베이스 A의 커밋된 상태와 데이터베이스 B의 커밋 준비됨 상태입니다. 자동 복구 프로세스의 일부로 이 트랜잭션은 데이터베이스 A에서 커밋되고 데이터베이스 B에서 롤백됩니다. 이로 인해 스냅샷 집합의 일부 불일치가 발생할 수 있습니다.

최신 버전의 Windows에는 SQL Server 인스턴스에 걸쳐 있는 데이터베이스에 걸쳐 있는 트랜잭션에 대한 이러한 불일치 문제를 해결하는 향상된 MS DTC(Microsoft Distributed Transaction Coordinator) 구성 요소가 있습니다. 최신 버전의 SQL Server는 SQL Server 인스턴스 내의 데이터베이스에 걸쳐 있는 트랜잭션에 대한 이러한 불일치를 해결합니다.

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

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

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

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

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

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

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

  1. SQL Server 인스턴스가 중지되었는지 확인합니다.

  2. 두 단계로 복원을 수행합니다.

    1. VSS를 통해 파일 복사 또는 볼륨 탑재를 통해 동시에 복구해야 하는 시스템 데이터베이스 및 사용자 데이터베이스(즉, 단순 복구 모델의 사용자 데이터베이스)를 복원합니다.

      • 롤 포워드할 사용자 데이터베이스가 시스템 데이터베이스와 동일한 볼륨에 있지 않은 경우 현재 해당 볼륨을 다시 가져오지 않아야 합니다. 이 시나리오에는 백업 전에 계획이 필요합니다.

      • 사용자 데이터베이스가 시스템 데이터베이스와 다른 볼륨에 있는 경우 SQL Server에서 사용자 데이터베이스를 숨겨야 합니다.

    2. 매개 변수를 사용하여 SQL Server 인스턴스를 시작합니다 -f . (시작 옵션 -f을 사용할 경우, master 데이터베이스만 복원할 수 있습니다.)

      1. ALTER DATABASE <database> SET OFFLINE 롤 포워드할 각 데이터베이스에 대해 (또는 데이터베이스를 분리) 발급합니다.

      2. SQL Server 인스턴스를 중지합니다.

      3. SQL Server 인스턴스를 시작합니다(롤 포워드할 사용자 데이터베이스의 파일이 SQL Server에 표시되지 않음).

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

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

컴퓨터Server1의 SQL Server 인스턴스 Instance1 에 속하는 명명DB1된 데이터베이스에는 다음과 같은 데이터베이스/로그 파일이 포함됩니다.

  • 에 저장된 "기본"이라는 데이터베이스 파일 c:\db\DB1.mdf
  • 에 저장된 "보조"라는 데이터베이스 파일 c:\db\DB1.ndf
  • 에 저장된 "log"라는 데이터베이스 로그 파일 c:\db\DB1.ldf
  • 디렉터리 아래에 저장된 "foo"라는 전체 텍스트 카탈로그 c:\db\ftdata\foo
  • 디렉터리 아래에 저장된 "bar"라는 전체 텍스트 카탈로그 c:\db\ftdata\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

보조 데이터베이스 파일:

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 데이터베이스의 model 복원을 지원합니다.