다음을 통해 공유


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

적용 대상: SQL Server

SQL Server 파일-스냅샷 백업에서는 Azure 스냅샷을 사용하여 Azure Blob 스토리지를 통해 저장된 데이터베이스 파일을 거의 즉시 백업하고 더욱 신속하게 복원합니다. 이 기능을 사용하면 백업 및 복원 정책을 단순화할 수 있습니다. Azure Blob Storage를 사용하여 데이터베이스 파일을 저장하는 자세한 방법은 Microsoft Azure의 SQL Server 데이터 파일을 참조하세요.

스냅샷 백업 아키텍처를 설명하는 다이어그램

Azure 계정이 있나요? Azure Virtual Machine의 SQL Server으로 이동하여 이미 설치된 SQL Server로 가상 머신을 스핀업하세요.

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

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

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

스냅샷 기능의 아키텍처 다이어그램입니다.

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

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

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

Important

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

참고 항목

Microsoft Azure Blob Storage에서 SQL Server를 사용하는 방법에 대한 자습서는 자습서: SQL Server 데이터베이스와 함께 Microsoft Azure Blob Storage 사용을 참조하세요.

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

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

백업 집합의 시점으로: 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_snapshots, sp_delete_backup_file_snapshotRESTORE 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 파일-스냅샷 백업에서 특정 시점으로 복원

다음은 2개의 트랜잭션 로그 파일-스냅샷 백업 세트를 사용하여 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

SQL Server Management Studio에서 Microsoft Azure 관리 포털 또는 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_snapshotsRESTORE 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_snapshot 참조하세요.

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  

다음 단계