Azure의 데이터베이스 파일에 대한 파일-스냅샷 백업

적용 대상:SQL Server

SQL Server 파일 스냅샷 백업은 Azure 스냅샷 사용하여 Azure Blob Storage를 사용하여 저장된 데이터베이스 파일에 대해 거의 즉각적인 백업 및 더 빠른 복원을 제공합니다. 이 기능을 사용하면 백업 및 복원 정책을 단순화할 수 있습니다. Azure Blob Storage를 사용하여 데이터베이스 파일을 저장하는 자세한 방법은 Microsoft Azure의 SQL Server 데이터 파일을 참조하세요.

Diagram explaining the snapshot backup architecture.

Azure 계정이 있나요? Azure Virtual Machines의 SQL Server를 방문하여 SQL Server가 이미 설치된 Virtual Machine을 스핀업합니다.

Azure 스냅샷 사용하여 Azure에 저장된 데이터베이스 파일 백업

SQL Server 파일 스냅샷 백업이란?

파일-스냅샷 백업은 데이터베이스 파일을 포함하는 blo 및 이러한 파일-스냅샷에 대한 포인터를 포함하는 백업 파일의 Azure 스냅샷 집합으로 구성됩니다. 각 파일-스냅샷은 기본 blob과 함께 컨테이너에 저장됩니다. 백업 파일 자체가 URL, 디스크 또는 테이프에 기록되도록 지정할 수 있습니다. URL에 백업하는 것이 좋습니다. 백업에 대한 자세한 내용은 BACKUP 및 URL 백업을 참조하세요. URL에 대한 SQL Server 백업을 참조하세요.

Diagram of the architecture of snapshot feature.

기본 Blob을 삭제하면 백업 집합이 무효화되고 파일 스냅샷 포함된 Blob을 삭제할 수 없습니다(모든 파일 스냅샷 포함된 Blob을 명시적으로 삭제하도록 선택하지 않는 한). 또한 데이터베이스 또는 데이터 파일을 삭제할 경우 기본 blob 또는 해당 파일-스냅샷은 삭제되지 않으며, 또한 백업 파일을 삭제해도 백업 집합의 파일 스냅샷 삭제되지 않습니다. 파일 스냅샷 백업 세트를 삭제하려면 시스템 저장 프로시저를 sys.sp_delete_backup 사용합니다.

전체 데이터베이스 백업: 파일-스냅샷 백업을 사용하여 전체 데이터베이스 백업을 수행하면 데이터베이스를 구성하는 각 데이터 및 로그 파일의 Azure 스냅샷이 생성되고, 트랜잭션 로그 백업 체인이 설정되며, 파일-스냅샷의 위치가 백업 파일에 기록됩니다.

트랜잭션 로그 백업: 파일-스냅샷 백업을 사용하여 트랜잭션 로그 백업을 수행하면 각 데이터베이스 파일(트랜잭션 로그뿐 아니라)의 파일-스냅샷이 생성되고, 파일-스냅샷 위치 정보가 백업 파일에 기록되며, 트랜잭션 로그 파일이 잘립니다.

Important

트랜잭션 로그 백업 체인(파일-스냅샷 백업일 수 있음)을 설정하는 데 필요한 초기 전체 백업 후에는 각 트랜잭션 로그 파일-스냅샷 백업 집합에 모든 데이터베이스 파일의 파일-스냅샷이 포함되고 이를 사용하여 데이터베이스를 복원 또는 로그 복원을 수행할 수 있으므로 트랜잭션 로그 백업을 수행하기만 하면 됩니다. 초기 전체 데이터베이스 백업 후에는 Azure Blob Storage가 각 데이터베이스 파일에 대한 기본 blob의 현재 상태와 각 파일-스냅샷 간의 차이를 처리하기 때문에 전체 또는 차등 백업을 추가로 수행할 필요가 없습니다.

파일-스냅샷 백업을 사용하여 복원

각 파일 스냅샷 백업 세트에는 각 데이터베이스 파일의 파일 스냅샷 포함되므로 복원 프로세스에는 최대 두 개의 파일 스냅샷 백업 세트가 필요합니다. 백업 집합을 전체 데이터베이스 백업에서 가져오든 로그 백업에서 가져오든 상관없습니다. 이는 기존 스트리밍 백업 파일을 사용하여 복원 프로세스를 수행하는 경우와 매우 다릅니다. 기존 스트리밍 백업을 사용하는 경우에는 복원 프로세스에서 전체 백업 집합 체인(전체 백업, 차등 백업 및 하나 이상의 트랜잭션 로그 백업)을 사용해야 합니다. 복원 프로세스의 복구 부분은 복원에서 파일-스냅샷 백업을 사용하는지 또는 스트리밍 백업 집합을 사용하는지에 관계없이 동일하게 유지됩니다.

백업 집합의 시점으로: RESTORE DATABASE 작업을 수행하여 특정 파일-스냅샷 백업 집합의 시점으로 데이터베이스를 복원하려면 자체 기본 blob과 함께 특정 백업 집합만 있으면 됩니다. 트랜잭션 로그 파일-스냅샷 백업 집합을 사용하여 RESTORE DATABASE 작업을 수행할 수 있으므로 일반적으로 이 유형의 RESTORE DATABASE 작업을 수행할 때는 트랜잭션 로그 백업 집합을 사용하며, 전체 데이터베이스 백업 집합은 거의 사용하지 않습니다. 이 기술을 보여 주는 예제가 이 문서의 끝에 나타납니다.

두 파일 스냅샷 백업 세트 사이의 특정 시점: 두 개의 인접한 트랜잭션 로그 백업 집합 사이의 특정 시점으로 데이터베이스를 복원하기 위해 RESTORE DATABASE 작업을 수행하려면 두 개의 트랜잭션 로그 백업 집합만 필요합니다(데이터베이스를 복원하려는 시점 전후에 하나씩). 그러려면 이전 지정 시간의 트랜잭션 로그 파일-스냅샷 백업 집합을 사용하여 WITH NORECOVERY와 함께 RESTORE DATABASE 작업을 수행하고, 이후 지정 시간의 트랜잭션 로그 파일-스냅샷 백업 집합을 사용하여 WITH NORECOVERY와 함께 RESTORE LOG 작업을 수행합니다. 이때 STOPAT 인수를 사용하여 트랜잭션 로그 백업에서 복구를 중지할 지정 시간을 지정합니다. 이 기술을 보여 주는 예제가 이 문서의 끝에 나타납니다.

파일-백업 집합 유지 관리

파일-스냅샷 백업 세트 삭제: FORMAT 인수를 사용하여 파일-스냅샷 백업 세트를 덮어쓸 수 없습니다. 원래 파일-스냅샷 백업을 사용하여 만든 분리된 파일-스냅샷이 남아 있는 것을 방지하기 위해 FORMAT 인수는 허용되지 않습니다. 파일 스냅샷 백업 세트를 삭제하려면 시스템 저장 프로시저를 sys.sp_delete_backup 사용합니다. 이 저장 프로시저는 백업 집합을 구성하는 파일-스냅샷 및 백업 파일을 삭제합니다. 다른 방법을 사용하여 파일-스냅샷 백업 집합을 삭제하면 백업 집합의 파일-스냅샷은 삭제되지 않고 백업 파일이 삭제될 수 있습니다.

분리된 백업 파일 스냅샷 삭제: 시스템 저장 프로시저를 사용하지 sys.sp_delete_backup 않고 백업 파일을 삭제했거나 데이터베이스 또는 데이터베이스 파일이 포함된 Blob에 백업 파일 스냅샷 연결된 동안 데이터베이스 또는 데이터베이스 파일이 삭제된 경우 파일 스냅샷 분리되었을 수 있습니다. 분리될 수 있는 파일 스냅샷 식별하려면 시스템 함수를 sys.fn_db_backup_file_snapshots 사용하여 데이터베이스 파일의 모든 파일 스냅샷 나열합니다. 특정 파일-스냅샷 백업 집합의 일부인 파일-스냅샷을 식별하려면 RESTORE FILELISTONLY 시스템 저장 프로시저를 사용합니다. 그런 다음 시스템 저장 프로시저를 sys.sp_delete_backup_file_snapshot 사용하여 분리된 개별 백업 파일 스냅샷 삭제할 수 있습니다. 이 시스템 함수와 이러한 시스템 저장 프로시저를 사용하는 예제는 이 문서의 끝에 있습니다. 자세한 내용은 sp_delete_backup, sys.fn_db_backup_file_스냅샷, sp_delete_backup_file_스냅샷RESTORE FILELISTONLY를 참조하세요.

고려 사항 및 제한 사항

프리미엄 스토리지: 프리미엄 스토리지를 사용하는 경우 다음과 같은 제한 사항이 적용됩니다.

단일 스토리지 계정: 파일-스냅샷 및 대상 Blob에서 동일한 스토리지 계정을 사용해야 합니다.

대량 복구 모델: 대량 로그 복구 모델을 사용하고 최소 로깅된 트랜잭션이 포함된 트랜잭션 로그 백업으로 작업하는 경우 트랜잭션 로그 백업을 사용하여 로그 복원(특정 시점 복구 포함)을 수행할 수 없습니다. 대신 파일 스냅샷 백업 집합의 시간으로 데이터베이스 복원을 수행합니다. 이 제한 사항은 스트리밍 백업의 제한 사항과 동일합니다.

온라인 복원: 파일-스냅샷 백업을 사용하는 경우 온라인 복원을 수행할 수 없습니다. 온라인 복원에 대한 자세한 내용은 온라인 복원(SQL Server)을 참조하세요.

청구: SQL Server 파일 스냅샷 백업을 사용하는 경우 데이터가 변경되면 추가 요금이 발생합니다. 자세한 내용은 스냅샷에서 요금이 발생하는 방식 이해를 참조하세요.

보관: 파일-스냅샷 백업을 보관하려는 경우 Blob 스토리지 또는 스트리밍 백업에 보관할 수 있습니다. Blob 스토리지에 보관하려면 파일-스냅샷 백업 집합의 스냅샷을 별도 Blob에 복사합니다. 스트리밍 백업에 보관하려면 파일 스냅샷 백업을 새 데이터베이스로 복원한 다음 압축 및/또는 암호화를 사용하여 정상적인 스트리밍 백업을 수행하고 기본 Blob과 관계없이 원하는 기간 동안 보관합니다.

Important

여러 파일-스냅샷 백업을 유지 관리하는 데에는 약간의 성능 오버헤드만 발생합니다. 그러나 기본 파일 스냅샷 백업 수가 너무 많으면 데이터베이스에 I/O 성능에 영향을 미칠 수 있습니다. 복구 지점 목표를 지원하는 데 필요한 파일 스냅샷 백업만 기본 것이 좋습니다.

파일-스냅샷 백업을 사용하여 데이터베이스 및 로그 백업

이 예제에서는 파일 스냅샷 백업을 사용하여 샘플 데이터베이스를 AdventureWorks2022 URL에 백업합니다.

-- To permit log backups, before the full database backup, modify the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE AdventureWorks2022  
   SET RECOVERY FULL;  
GO  
-- Back up the full AdventureWorks2022 database.  
BACKUP DATABASE AdventureWorks2022   
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak'   
WITH FILE_SNAPSHOT;  
GO  
-- Back up the AdventureWorks2022 log using a time stamp in the backup file name.  
DECLARE @Log_Filename AS VARCHAR (300);  
SET @Log_Filename = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_Log_'+   
REPLACE (REPLACE (REPLACE (CONVERT (VARCHAR (40), GETDATE (), 120), '-','_'),':', '_'),' ', '_') + '.trn';  
BACKUP LOG AdventureWorks2022  
 TO URL = @Log_Filename WITH FILE_SNAPSHOT;  
GO  

SQL Server 파일-스냅샷 백업에서 복원

다음 예제에서는 트랜잭션 로그 파일 스냅샷 백업 집합을 사용하여 데이터베이스를 복원 AdventureWorks2022 하고 복구 작업을 보여 줍니다. 단일 트랜잭션 로그 파일-스냅샷 백업 집합에서 데이터베이스를 복원할 수 있습니다.

RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_16_00_00.trn'   
WITH RECOVERY, REPLACE;  
GO  

SQL Server 파일-스냅샷 백업에서 특정 시점으로 복원

다음 예제에서는 두 트랜잭션 로그 파일 스냅샷 백업 집합을 사용하여 지정된 시점에 해당 상태로 복원 AdventureWorks2022 하고 복구 작업을 보여 줍니다.

RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_16_00_00.trn'   
WITH NORECOVERY,REPLACE;  
GO   
  
RESTORE LOG AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_18_00_00.trn'   
WITH RECOVERY,STOPAT = 'May 18, 2015 5:35 PM';  
GO  

데이터베이스 파일-스냅샷 백업 세트 삭제

파일 스냅샷 백업 세트를 삭제하려면 시스템 저장 프로시저를 sys.sp_delete_backup 사용합니다. 지정한 파일-스냅샷 백업 세트가 실제로 지정된 데이터베이스의 백업인지 시스템에서 확인하도록 데이터베이스 이름을 지정합니다. 데이터베이스 이름을 지정하지 않으면 이러한 유효성 검사 없이 지정된 백업 집합이 해당 파일-스냅샷과 함께 삭제됩니다. 자세한 내용은 sp_delete_backup 참조하세요.

Warning

Microsoft Azure 관리 포털 또는 SQL Server Management Studio의 Azure Storage 뷰어와 같은 다른 방법을 사용하여 파일 스냅샷 백업 집합을 삭제하려고 하면 백업 집합의 파일 스냅샷 삭제되지 않습니다. 이러한 도구는 파일-스냅샷 백업 집합의 파일-스냅샷에 대한 포인터를 포함하는 백업 파일 자체만 삭제합니다. 백업 파일이 잘못 삭제된 후 다시 기본 백업 파일 스냅샷 식별하려면 시스템 함수를 sys.fn_db_backup_file_snapshots 사용한 다음 시스템 저장 프로시저를 사용하여 sys.sp_delete_backup_file_snapshot 개별 백업 파일 스냅샷 삭제합니다.

다음 예제에서는 지정된 백업 집합을 구성하는 파일-스냅샷 및 백업 파일을 포함하여 지정한 파일-스냅샷 백업 집합을 삭제합니다.

EXEC sys.sp_delete_backup 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak', 'AdventureWorks2022' ;  
GO  

데이터베이스 백업 파일-스냅샷 보기

각 데이터베이스 파일에 대한 기본 Blob의 파일 스냅샷 보려면 시스템 함수를 sys.fn_db_backup_file_snapshots 사용합니다. 이 시스템 함수를 사용하면 Azure Blob Storage를 사용하여 저장된 데이터베이스에 대한 각 기본 Blob의 모든 백업 파일 스냅샷 볼 수 있습니다. 이 함수의 주요 사용 사례는 시스템 저장 프로시저 이외의 메커니즘 sys.sp_delete_backup 을 사용하여 파일 스냅샷 백업 세트의 백업 파일이 삭제될 때 다시 기본 데이터베이스의 백업 파일 스냅샷 식별하는 것입니다. 손상되지 않은 백업 세트의 일부인 백업 파일 스냅샷 및 그대로 백업 세트의 일부가 아닌 백업 파일을 확인하려면 시스템 저장 프로시저를 사용하여 RESTORE FILELISTONLY 각 백업 파일에 속하는 파일 스냅샷 나열합니다. 자세한 내용은 sys.fn_db_backup_file_스냅샷 및RESTORE FILELISTONLY를 참조하세요.

다음 예제에서는 지정된 데이터베이스에 대한 모든 백업 파일-스냅샷 목록을 반환합니다.

--Either specify the database name or set the database context  
USE AdventureWorks2022  
select * from sys.fn_db_backup_file_snapshots (null) ;  
GO  
select * from sys.fn_db_backup_file_snapshots ('AdventureWorks2022') ;  
GO  

개별 데이터베이스 백업 파일-스냅샷 삭제

데이터베이스 기본 Blob의 개별 백업 파일 스냅샷 삭제하려면 시스템 저장 프로시저를 sys.sp_delete_backup_file_snapshot 사용합니다. 이 시스템 저장 프로시저의 주요 사용 사례는 시스템 저장 프로시저 이외의 sys.sp_delete_backup 메서드를 사용하여 백업 파일을 삭제한 후 다시 기본 분리된 파일 스냅샷 파일을 삭제하는 것입니다. 자세한 내용은 sp_delete_backup_file_스냅샷 참조하세요.

Warning

파일-스냅샷 백업 집합의 일부인 개별 파일-스냅샷을 삭제하면 백업 집합이 무효화됩니다.

다음 예제에서는 지정된 백업 파일-스냅샷을 삭제합니다. 시스템 함수를 사용하여 지정된 백업에 대한 URL을 sys.fn_db_backup_file_snapshots 얻었습니다.

EXEC sys.sp_delete_backup_file_snapshot N'AdventureWorks2022', N'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022Data.mdf?snapshot=2015-05-29T21:31:31.6502195Z';  
GO  

다음 단계