Azure VM에서 SQL Server 데이터베이스 복원

이 문서에서는 Azure Backup 서비스를 사용하여 Azure Backup Recovery Services 자격 증명 모음으로 백업된 SQL Server 데이터베이스(Azure 가상 머신에서 실행)를 복원하는 방법을 설명합니다.

이 문서에서는 SQL Server 데이터베이스를 복원하는 방법을 설명합니다. 자세한 내용은 Azure VM에 SQL Server 데이터베이스 백업을 참조하세요.

참고 항목

지원되는 구성 및 시나리오에 대한 자세한 내용은 SQL 백업 지원 매트릭스를 참조하세요.

시간이나 복구 지점으로 복원

Azure Backup은 다음과 같은 방법으로 Azure VM에서 실행되는 SQL Server 데이터베이스를 복원할 수 있습니다.

  • 트랜잭션 로그 백업을 사용하여 특정 날짜 또는 시간(초)으로 복원합니다. Azure Backup은 선택한 시간을 기준으로 복원해야 하는 해당 전체 차등 백업 및 로그 백업 체인을 자동으로 결정합니다.
  • 특정 복구 지점으로 복원하려면 특정 전체 또는 차등 백업을 복원합니다.

복원 필수 조건

데이터베이스를 복원하기 전에 다음에 유의하십시오.

  • 동일한 Azure 지역의 SQL Server 인스턴스에 데이터베이스를 복원할 수 있습니다.
  • 대상 서버를 원본과 동일한 자격 증명 모음에 등록해야 합니다. 백업을 다른 자격 증명 모음으로 복원하려면 구독 간 복원을 사용하도록 설정합니다.
  • 서버에서 여러 개의 인스턴스를 실행하고 있는 경우 모든 인스턴스가 실행 중이어야 합니다. 그렇지 않으면 데이터베이스를 복원할 대상 서버 목록에 서버가 나타나지 않습니다. 자세한 내용은 문제 해결 단계를 참조하십시오.
  • TDE 암호화된 데이터베이스를 다른 SQL Server로 복원하려면, 먼저 대상 서버로 인증서를 복원해야 합니다.
  • CDC가 사용하도록 설정된 데이터베이스는 파일로 복원 옵션을 사용하여 복원해야 합니다.
  • 파일로 복원 옵션을 사용하여 "마스터" 데이터베이스를 복원한 다음, T-SQL 명령을 사용하여 복원하는 것이 좋습니다.
  • 모든 시스템 데이터베이스(모델, msdb)에 대해 복원을 트리거하기 전에 SQL Server 에이전트 서비스를 중지합니다.
  • 이러한 데이터베이스에 대한 연결을 도용하려고 하는 애플리케이션을 닫습니다.

데이터베이스 복원

복원하려면 다음 권한이 필요합니다.

  • 복원을 수행하는 자격 증명 모음에서 백업 운영자 권한
  • 백업되는 원본 VM에 대한 참가자(쓰기) 액세스 권한
  • 대상 VM에 대한 참가자(쓰기) 액세스 권한
    • 동일한 VM으로 복원하는 경우 원본 VM입니다.
    • 대체 위치로 복원하는 경우 새 대상 VM입니다.

다음과 같이 복원합니다.

  1. Azure Portal에서 백업 센터로 이동하고 복원을 클릭합니다.

    Screenshot showing the start the restore process.

  2. 데이터 원본 유형으로 Azure VM의 SQL을 선택하고, 복원할 데이터베이스를 선택한 다음 계속을 클릭합니다.

    Screenshot showing to select the datasource type.

  3. 복원 구성에서 데이터를 복원할 위치(또는 방법)를 지정합니다.

    • 대체 위치: 대체 위치에 데이터베이스를 복원하고 원래 원본 데이터베이스를 유지합니다.

    • DB 덮어쓰기: 원래 원본과 동일한 SQL Server 인스턴스에 데이터를 복원합니다. 이 옵션은 원래 데이터베이스를 덮어씁니다.

      Important

      선택한 데이터베이스가 Always On 가용성 그룹에 속하면 SQL Server에서 데이터베이스를 덮어쓸 수 없습니다. 대체 위치만 사용할 수 있습니다.

    • 파일로 복원: 데이터베이스로 복원하는 대신 SQL Server Management Studio를 사용하여 파일이 있는 컴퓨터에서 나중에 데이터베이스로 복구할 수 있는 백업 파일을 복원합니다.

대체 위치에 복원

  1. 복원 구성 메뉴의 복원할 위치 아래에서 대체 위치를 선택합니다.

  2. 데이터베이스를 복원하려는 SQL Server 이름 및 인스턴스를 선택합니다.

  3. 복원된 DB 이름 상자에 대상 데이터베이스의 이름을 입력합니다.

  4. 해당되는 경우 선택한 SQL 인스턴스에 이름이 같은 DB가 있으면 덮어쓰기를 선택합니다.

  5. 복원 지점 선택을 선택한 다음 특정 시점으로 복원할지 또는 특정 복구 지점으로 복원할지를 선택합니다.

    Screenshot showing to select Restore Point.

    Screenshot showing restore to point in time.

  6. 고급 구성 메뉴에서:

    • 복원 후 데이터베이스를 작동하지 않는 상태로 유지하려면 NORECOVERY를 사용하여 복원을 사용하도록 설정합니다.

    • 대상 서버에서 복원 위치를 변경하려면 새 대상 경로를 입력합니다.

      Enter target paths

  7. 확인을 선택하여 복원을 트리거합니다. 알림 영역에서 복원 진행률을 추적하거나 자격 증명 모음의 백업 작업 보기에서 추적합니다.

    참고 항목

    특정 시점 복원은 전체 및 대량 로그된 복구 모델을 사용하는 데이터베이스의 로그 백업에만 사용할 수 있습니다.

복원 및 덮어쓰기

  1. 복원 구성 메뉴의 복원할 위치 아래에서 DB 덮어쓰기>확인을 선택합니다.

    Select Overwrite DB

  2. 복원 지점 선택에서 로그(특정 시점 복원)을 선택하여 특정 시점으로 복원합니다. 또는 전체 및 차등을 선택하여 특정 복구 지점으로 복원합니다.

    참고 항목

    특정 시점 복원은 전체 및 대량 로그된 복구 모델을 사용하는 데이터베이스의 로그 백업에만 사용할 수 있습니다.

파일로 복원

백업 데이터를 데이터베이스 대신 .bak 파일로 복원하려면 파일로 복원을 선택하십시오. 파일이 지정된 경로에 덤프되면 이러한 파일을 데이터베이스로 복원하려는 컴퓨터로 가져올 수 있습니다. 이러한 파일을 임의의 컴퓨터로 이동할 수 있으므로 이제 구독 및 지역 간에 데이터를 복원할 수 있습니다.

  1. 복원 위치 및 방법에서 파일로 복원을 선택합니다.

  2. 백업 파일을 복원하려는 SQL Server 이름을 선택합니다.

  3. 서버의 대상 경로에서 2단계에서 선택한 서버에 폴더 경로를 입력합니다. 서비스에서 필요한 모든 백업 파일을 덤프하는 위치입니다. 일반적으로 네트워크 공유 경로 또는 탑재된 Azure 파일 공유 경로가 대상 경로로 지정되면 이를 통해 동일한 네트워크의 다른 컴퓨터 또는 동일한 Azure 파일 공유가 탑재된 다른 컴퓨터에서 이러한 파일에 더 쉽게 액세스할 수 있습니다.

    참고 항목

    등록된 대상 VM에 탑재된 Azure 파일 공유에서 데이터베이스 백업 파일을 복원하려면 NT AUTHORITY\SYSTEM에 파일 공유에 대한 액세스 권한이 있는지 확인합니다. 아래 지정된 단계를 수행하여 VM에 탑재된 AFS에 대한 읽기/쓰기 권한을 부여할 수 있습니다.

    • PsExec -s cmd를 실행하여 NT AUTHORITY\SYSTEM 셸에 입력
      • cmdkey /add:<storageacct>.file.core.windows.net /user:AZURE\<storageacct> /pass:<storagekey> 실행
      • dir \\<storageacct>.file.core.windows.net\<filesharename> 액세스 확인
    • \\<storageacct>.file.core.windows.net\<filesharename>을 경로로 하여 백업 자격 증명 모음에서 파일로 복원을 시작
      Sysinternals 페이지에서 PsExec를 다운로드할 수 있습니다.
  4. 확인을 선택합니다.

    Select Restore As Files

  5. 복원 지점 선택을 선택한 다음 특정 시점으로 복원할지 또는 특정 복구 지점으로 복원할지를 선택합니다.

  6. 파일로 복원을 사용하여 SQL 데이터베이스 지정 시간 복원을 수행할 때 전체 백업에서 선택한 특정 시점으로 모든 복구 지점을 저장합니다. 그런 다음, SQL Server Management Studio를 사용하여 해당 파일을 존재하는 모든 머신의 데이터베이스로 복원할 수 있습니다.

    Restored Backup Files in Destination Path

특정 시점으로 복원

복원 유형으로 로그(시점)을 선택한 경우 다음을 수행합니다.

  1. 복원 날짜/시간에서 달력을 엽니다. 달력에서 복구 지점이 있는 날짜는 굵은 형식으로 표시되 고 현재 날짜는 강조 표시됩니다.

  2. 복구 지점이 있는 날짜를 선택합니다. 복구 지점이 없는 날짜는 선택할 수 없습니다.

    Open the calendar

  3. 날짜를 선택한 후에는 타임라인 그래프에 사용 가능한 복구 지점이 연속적인 범위로 표시됩니다.

  4. 타임라인 그래프에서 복구 시간을 지정하거나 시간을 선택합니다. 그런 다음 확인을 선택합니다.

파일로 부분 복원

Azure Backup 서비스는 파일로 복원하는 동안 다운로드할 파일 체인을 결정합니다. 그러나 전체 콘텐츠를 다시 다운로드하지 않으려는 시나리오가 있습니다.

예를 들어 주별 전체, 일별 차등 및 로그의 백업 정책이 있고 특정 차등에 대한 파일을 이미 다운로드한 경우입니다. 이 경우가 올바른 복구 지점이 아님을 확인하여 다음 날의 차등을 다운로드하도록 결정했습니다. 이제 전체를 이미 시작하고 있으므로 차등 파일만 필요합니다. Azure Backup에서 제공하는 파일로 부분 복원 기능을 사용하면 이제 다운로드 체인에서 전체를 제외하고 차등만 다운로드할 수 있습니다.

백업 파일 형식 제외

ExtensionSettingsOverrides.json은 SQL용 Azure Backup 서비스의 여러 설정에 대한 재정의가 포함된 JSON(JavaScript Object Notation) 파일입니다. "파일로 부분 복원" 작업의 경우 새 RecoveryPointTypesToBeExcludedForRestoreAsFiles JSON 필드를 추가해야 합니다. 이 필드에는 다음 파일로 복원 작업에서 제외해야 하는 복구 지점 유형을 나타내는 문자열 값이 있습니다.

  1. 파일을 다운로드할 대상 컴퓨터에서 "C:\Program Files\Azure Workload Backup\bin" 폴더로 이동합니다.

  2. 아직 존재하지 않는 경우 "ExtensionSettingsOverrides.JSON"이라는 새 JSON 파일을 만듭니다.

  3. 다음 JSON 키 값 쌍을 추가합니다.

    {
    "RecoveryPointTypesToBeExcludedForRestoreAsFiles": "ExcludeFull"
    }
    
  4. 서비스를 다시 시작할 필요가 없습니다. 이 파일에서 설명한 대로 Azure Backup 서비스에서 복원 체인으로부터 백업 유형을 제외하려고 시도합니다.

RecoveryPointTypesToBeExcludedForRestoreAsFiles는 복원 중에 제외할 복구 지점을 나타내는 특정 값만 사용합니다. SQL의 경우 이러한 값은 다음과 같습니다.

  • ExcludeFull(차등 및 로그와 같은 다른 백업 유형이 복원 지점 체인에 있는 경우 다운로드됨)
  • ExcludeFullAndDifferential(로그와 같은 다른 백업 유형이 복원 지점 체인에 있는 경우 다운로드됨)
  • ExcludeFullAndIncremental(로그와 같은 다른 백업 유형이 복원 지점 체인에 있는 경우 다운로드됨)
  • ExcludeFullAndDifferentialAndIncremental(로그와 같은 다른 백업 유형이 복원 지점 체인에 있는 경우 다운로드됨)

특정 복원 지점으로 복원

복원 유형으로 전체 및 차등을 선택한 경우 다음을 수행합니다.

  1. 목록에서 복구 지점을 선택하고 확인을 선택하여 복원 지점 절차를 완료합니다.

    Choose a full recovery point

    참고 항목

    기본값으로 최근 30일 동안의 복구 지점이 표시됩니다. 필터를 선택하고 사용자 지정 범위를 선택하여 30일보다 오래된 복구 지점을 표시할 수 있습니다.

파일 개수가 많은 데이터베이스 복원

데이터베이스에 있는 파일의 전체 문자열 크기가 특정 한도보다 큰 경우 Azure Backup는 데이터베이스 파일 목록을 다른 PIT 구성 요소에 저장하므로 복원 작업 중에 대상 복원 경로를 설정할 수 없습니다. 대신 파일은 SQL 기본 경로로 복원됩니다.

Restore Database with large file

SSMS를 사용하여 .bak 파일에서 데이터베이스 복구

파일로 복원 작업을 사용하여 Azure Portal에서 복원하는 동안 데이터베이스 파일을 .bak 형식으로 복원할 수 있습니다. 자세히 알아보기.

Azure 가상 머신에 대한 .bak 파일 복원이 완료되면 SSMS를 통해 TSQL 명령을 사용하여 복원을 트리거할 수 있습니다.   데이터베이스 파일을 원본 서버의 원래 경로로 복원하려면 TSQL 복원 쿼리에서 MOVE 절을 제거합니다.예제

  USE [master] 
  RESTORE DATABASE [<DBName>] FROM  DISK = N'<.bak file path>'

참고 항목

대상 서버에 동일한 데이터베이스 파일이 없어야 합니다(바꾸기로 복원).  또한 대상 서버에서 인스턴트 파일 초기화를 사용하도록 설정하여 파일 초기화 시간 오버헤드를 줄일 수 있습니다.

대상 복원 서버에서 데이터베이스 파일을 재배치하려면 MOVE 절을 사용하여 TSQL 명령을 규정할 수 있습니다.

  USE [master] 
  RESTORE DATABASE [<DBName>] FROM  DISK = N'<.bak file path>'  MOVE N'<LogicalName1>' TO N'<TargetFilePath1OnDisk>',  MOVE N'<LogicalName2>' TO N'<TargetFilePath2OnDisk>' GO

예제

  USE [master] 
  RESTORE DATABASE [test] FROM  DISK = N'J:\dbBackupFiles\test.bak' WITH  FILE = 1,  MOVE N'test' TO N'F:\data\test.mdf',  MOVE N'test_log' TO N'G:\log\test_log.ldf',  NOUNLOAD,  STATS = 5 
  GO

데이터베이스에 대한 파일이 두 개를 초과하는 경우 복원 쿼리에 다른 MOVE 절을 추가할 수 있습니다. .bak 파일을 사용하여 데이터베이스 복구에 SSMS를 사용할 수도 있습니다. 자세히 알아보기.

참고 항목

대규모 데이터베이스 복구의 경우 TSQL 문을 사용하는 것이 좋습니다. 특정 데이터베이스 파일을 재배치하려면 파일로 복원 작업 중에 만든 JSON 형식의 데이터베이스 파일 목록을 참조하세요.

지역 간 복원

복원 옵션 중 하나인 CRR(지역 간 복원)을 사용하면 Azure 쌍으로 연결된 지역인 보조 지역에서 Azure VM에 호스팅된 SQL 데이터베이스를 복원할 수 있습니다.

기능에 온보딩하려면 시작하기 전 섹션을 참조하세요.

CRR을 사용하도록 설정되어 있는지 확인하려면 지역 간 복원 구성의 지침을 따르십시오.

보조 지역에서 백업 항목 보기

CRR을 사용하도록 설정된 경우 보조 지역에서 백업 항목을 볼 수 있습니다.

  1. 포털에서 Recovery Services 자격 증명 모음>백업 항목으로 이동합니다.
  2. 보조 지역을 선택하여 보조 지역의 항목을 봅니다.

참고 항목

CRR 기능을 지원하는 백업 관리 유형만 목록에 표시됩니다. 현재 보조 지역에 대한 보조 지역 데이터 복원만 지원됩니다.

Backup items in secondary region

Databases in secondary region

보조 지역의 복원

보조 지역 복원 사용자 환경은 주 지역 복원 사용자 환경과 유사합니다. 복원 구성 창에서 세부 정보를 구성하여 복원을 구성하는 경우 보조 지역 매개 변수만 제공하라는 메시지가 표시됩니다. 보조 지역에 자격 증명 모음이 있어야 하고, 보조 지역의 자격 증명 모음에 SQL 서버를 등록해야 합니다.

Where and how to restore

Trigger restore in progress notification

참고 항목

  • 복원이 트리거되고 데이터 전송 단계에서는 복원 작업을 취소할 수 없습니다.
  • 지역 간 복원 작업을 수행하는 데 필요한 역할/액세스 수준은 구독의 백업 운영자 역할과 원본 및 대상 가상 머신의 기여자(쓰기) 권한입니다. 백업 작업을 보기 위해 구독에서 필요한 최소 권한은 백업 읽기 권한자입니다.
  • 보조 지역에서 사용할 수 있는 백업 데이터의 RPO는 12시간입니다. 따라서 CRR을 켜면 보조 지역의 RPO는 12시간 + 로그 빈도 기간(최소 15분으로 설정할 수 있음)입니다.

지역 간 복원을 위한 최소 역할 요구 사항에 대해 알아봅니다.

보조 지역 복원 작업 모니터링

  1. Azure Portal에서 백업 센터>백업 작업으로 이동합니다.

  2. 보조 지역의 작업을 보려면 CrossRegionRestore에 대한 작업을 필터링합니다.

    Screenshot showing the filtered Backup jobs.

구독 간 복원

이제 Azure Backup을 사용하면 복원 지점에서 모든 구독(다음 Azure RBAC 요구 사항에 따라)으로 SQL 데이터베이스를 복원할 수 있습니다. 기본적으로 Azure Backup은 복원 지점을 사용할 수 있는 동일한 구독으로 복원합니다.

CSR(구독 간 복원)을 사용하면 복원 권한을 사용할 수 있는 경우 테넌트에서 모든 구독 및 자격 증명 모음으로 복원할 수 있습니다. 기본적으로 CSR은 모든 Recovery Services 자격 증명 모음(기존 및 새로 만든 자격 증명 모음)에서 사용하도록 설정됩니다.

참고 항목

  • Recovery Services 자격 증명 모음에서 구독 간 복원을 트리거할 수 있습니다.
  • CSR은 스트리밍 기반 백업에 대해서만 지원되며 스냅샷 기반 백업에는 지원되지 않습니다.
  • CSR을 사용한 CRR(지역 간 복원)은 지원되지 않습니다.

Azure RBAC 요구 사항

작업 유형 백업 운영자 Recovery Services 자격 증명 모음 대체 연산자
데이터베이스 복원 또는 파일로 복원 Virtual Machine Contributor 백업된 원본 VM 기본 제공 역할 대신 다음과 같은 권한이 있는 사용자 지정 역할을 고려할 수 있습니다.

- Microsoft.Compute/virtualMachines/write
- Microsoft.Compute/virtualMachines/read
Virtual Machine Contributor 데이터베이스가 복원되거나 파일이 생성되는 대상 VM 기본 제공 역할 대신 다음과 같은 권한이 있는 사용자 지정 역할을 고려할 수 있습니다.

- Microsoft.Compute/virtualMachines/write
- Microsoft.Compute/virtualMachines/read
Backup Operator 대상 Recovery Services 자격 증명 모음

기본적으로 CSR은 Recovery Services 자격 증명 모음에서 사용하도록 설정됩니다. Recovery Services 자격 증명 모음 복원 설정을 업데이트하려면 속성>구독 간 복원으로 이동하여 필요한 변경을 수행합니다.

Screenshot shows how to modify the Cross Subscription Restore settings on a Recovery Services vault for SQL database.

다음 단계

Azure Backup에서 백업된 SQL Server 데이터베이스를 관리 및 모니터링합니다.