Partilhar via


File-Snapshot Backups para ficheiros de base de dados no Azure

Aplica-se a:SQL Server

O backup de snapshots de ficheiros do SQL Server utiliza snapshots do Azure para fornecer backups quase instantâneos e restaurações mais rápidas para ficheiros de base de dados armazenados no Azure Blob Storage. Esse recurso permite simplificar suas políticas de backup e restauração. Para mais informações sobre como armazenar ficheiros de base de dados usando Azure Blob Storage, consulte SQL Server Data Files in Microsoft Azure.

Diagrama que explica a arquitetura de backup por snapshot.

Já tem uma conta Azure? Visite o SQL Server em Máquinas Virtuais Azure para iniciar uma Máquina Virtual com o SQL Server já instalado.

Utilize as snapshots do Azure para criar cópias de segurança dos ficheiros de base de dados armazenados no Azure.

O que é um backup de instantâneo de ficheiros do SQL Server

Um backup de snapshot de ficheiro consiste num conjunto de snapshots Azure dos blobs que contêm os ficheiros da base de dados, mais um ficheiro de backup contendo apontadores para esses snapshots. Cada snapshot de arquivo é armazenado no contentor com o blob base. Pode especificar que o próprio ficheiro de backup seja escrito em URL, disco ou fita. Recomenda-se fazer backup para URL. Para mais informações sobre cópias de segurança, veja BACKUP e, sobre cópias de segurança até URL, veja SQL Server Backup para URL.

Diagrama da arquitetura da funcionalidade snapshot.

Eliminar o blob base invalida o conjunto de backup e fica impedido de largar um blob que contenha snapshots de ficheiros (a menos que escolha expressamente apagar um blob com todos os seus snapshots de ficheiros). Além disso, eliminar uma base de dados ou um ficheiro de dados não elimina o blob base nem quaisquer dos seus snapshots de ficheiros. Além disso, eliminar o ficheiro de backup não apaga nenhum dos snapshots do conjunto de backup. Para eliminar um conjunto de backup de instantâneos de ficheiro, utilize o sys.sp_delete_backup procedimento armazenado do sistema.

Backup completo da base de dados: Realizar uma cópia de segurança completa da base de dados usando backup de snapshots de ficheiros cria um snapshot Azure de cada ficheiro de dados e registo que compõe a base de dados, estabelece a cadeia de backup de registos de transações e escreve a localização dos snapshots de ficheiros no ficheiro de backup.

Cópia de segurança do registo de transações: Realizar uma cópia de segurança do registo de transações usando backup de snapshot de ficheiro cria um snapshot de cada ficheiro da base de dados (não apenas do registo de transações), regista a informação de localização do snapshot no ficheiro de backup e trunca o ficheiro de registo de transações.

Importante

Após o backup inicial completo necessário para estabelecer a cadeia de backup dos registos de transações (que pode ser um backup de snapshots de ficheiros), só precisa de realizar backups de registos de transações porque cada conjunto de backup de registo de transações contém snapshots de todos os ficheiros de base de dados e pode ser usado para restaurar a base de dados ou restaurar logs. Após o backup inicial completo da base de dados, não precisa de backups completos ou diferenciais adicionais porque o Azure Blob Storage trata das diferenças entre cada snapshot de ficheiro e o estado atual do blob base para cada ficheiro de base de dados.

Observação

Para um tutorial sobre como usar SQL Server com Microsoft Azure Blob Storage, veja Tutorial: Usar Microsoft Azure Blob Storage com bases de dados SQL Server

Restauração usando backups de snapshots de ficheiros

Como cada conjunto de backup de instantâneos de ficheiro contém um instantâneo de cada ficheiro de base de dados, um processo de restauro requer no máximo dois conjuntos de backup de instantâneos de ficheiro adjacentes. Isto é verdade independentemente de o conjunto de backup vir de uma cópia de segurança completa da base de dados ou de uma cópia de segurança de log. Isto é muito diferente do processo de restauro quando se usam ficheiros de backup tradicionais em streaming para realizar o processo de restauro. Com o backup tradicional em streaming, o processo de restauro requer o uso de uma cadeia inteira de conjuntos de backup: o backup completo, um backup diferencial e um ou mais backups do log de transações. A parte de recuperação do processo de restauro mantém-se igual independentemente de a restauração ser feita com um backup de snapshot de ficheiros ou um conjunto de backups em streaming.

Até ao momento de qualquer conjunto de cópia de segurança: Para realizar uma operação de RESTAURAR A BASE DE DADOS para restaurar uma base de dados até o momento de um conjunto específico de cópia de segurança de instantâneo de ficheiro, é necessário apenas o conjunto de cópia de segurança específico, juntamente com os próprios blobs base. Como pode usar um conjunto de backup de registo de transações com snapshot para realizar uma operação de RESTAURAR BASE DE DADOS, normalmente utilizará um conjunto de backup de registo de transações para realizar este tipo de operação e raramente utilizará um conjunto de backup completo da base de dados. Um exemplo aparece no final deste artigo a demonstrar esta técnica.

Até um ponto no tempo entre dois conjuntos de backup de snapshots de ficheiros: Para realizar uma operação RESTAURAR A BASE DE DADOS e restaurar uma base de dados a um ponto específico no tempo entre dois conjuntos adjacentes de backups de logs de transações, são necessários apenas dois conjuntos de backups de logs de transações (um antes e outro depois do ponto no qual deseja restaurar a base de dados). Para isso, realizaria uma operação de RESTAURAR A BASE DE DADOS COM NORECOVERY usando o conjunto de backup de snapshot do ficheiro de registo transacional do ponto anterior e realizaria uma operação de RESTAURAR LOG COM RECOVERY usando o conjunto de backup de snapshot do ficheiro de log de transações do ponto posterior e usando o argumento STOPAT para especificar o momento do tempo em que se deve parar a recuperação a partir do backup do ficheiro de log de transações. Um exemplo aparece no final deste artigo a demonstrar esta técnica.

Manutenção do conjunto de backup de ficheiros

Eliminar um conjunto de instantâneos de backup de ficheiros: Não é possível sobrescrever um conjunto de instantâneos de backup de ficheiros utilizando o argumento FORMAT. O argumento FORMAT não é permitido para evitar deixar snapshots órfãos de ficheiros que foram criados com o backup original de snapshots de ficheiros. Para eliminar um conjunto de backup de instantâneos de ficheiro, utilize o sys.sp_delete_backup procedimento armazenado do sistema. Este procedimento armazenado elimina o ficheiro de backup e os snapshots que compõem o conjunto de backup. Usar um método alternativo para eliminar um conjunto de backups de snapshots de ficheiros pode eliminar o ficheiro de backup sem remover os snapshots de ficheiros que fazem parte desse conjunto de backup.

Eliminar snapshots de ficheiros de backup órfãos: Pode ter snapshots de ficheiros órfãos se o ficheiro de backup foi eliminado sem usar o sys.sp_delete_backup procedimento armazenado do sistema ou se uma base de dados ou ficheiro de base de dados foi descartado enquanto o(s) blob(s) contendo a base de dados ou ficheiro de base de dados tinham snapshots de ficheiros de backup associados. Para identificar snapshots de ficheiros que possam estar órfãos, use a sys.fn_db_backup_file_snapshots função do sistema para listar todos os snapshots de ficheiros da base de dados. Para identificar os snapshots de ficheiros que fazem parte de um conjunto específico de backup de snapshots, utilize o procedimento armazenado do sistema RESTORE FILELISTONLY. Pode então usar o sys.sp_delete_backup_file_snapshot procedimento armazenado do sistema para eliminar um snapshot individual de ficheiro de backup que ficou órfão. Exemplos que utilizam esta função do sistema e estes procedimentos armazenados do sistema encontram-se no final deste artigo. Para mais informações, consulte sp_delete_backup, sys.fn_db_backup_file_snapshots, sp_delete_backup_file_snapshot e RESTORE FILELISTONLY.

Considerações e limitações

Armazenamento premium: Ao utilizar armazenamento premium, aplicam-se as seguintes limitações:

Conta de armazenamento único: O snapshot do ficheiro e os blobs de destino devem usar a mesma conta de armazenamento.

Modelo de recuperação em massa: Ao usar o modelo de recuperação em bloco e trabalhar com um backup de registo de transações contendo transações minimamente logadas, não pode fazer uma restauração de registo (incluindo recuperação pontual no tempo) usando o backup de registo de transações. Em vez disso, realizas uma restauração da base de dados até ao momento do conjunto de backup de snapshots de ficheiros. Esta limitação é idêntica à limitação do backup em streaming.

Restauração online: Ao usar backups de snapshots de ficheiros, não pode realizar uma restauração online. Para mais informações sobre restauração online, consulte Online Restore (SQL Server).

Faturamento: Ao utilizar backup de snapshots de ficheiros no SQL Server, serão incorridos custos adicionais à medida que os dados são alterados. Para obter mais informações, consulte Compreender Como as Instâncias Acumulam Custos.

Arquivo: Se quiser arquivar um backup de instantâneo de ficheiros, pode guardar em armazenamento em bloco ou em backup em streaming. Para arquivar para armazenamento de blobs, copie os snapshots no conjunto de backup de snapshots de ficheiros em blobs separados. Para arquivar em backup de streaming, restaure o backup de snapshot de ficheiros noutra base de dados e realize um backup de streaming normal com compressão e/ou encriptação, arquivando-o durante o tempo que desejar, independentemente dos blobs de base.

Importante

Manter múltiplos backups de snapshots de ficheiros tem apenas uma pequena sobrecarga de desempenho. No entanto, manter um número excessivo de backups de snapshots de ficheiros pode ter um impacto no desempenho de I/O na base de dados. Recomendamos que mantenha apenas as cópias de segurança de snapshots de ficheiros necessárias para apoiar o objetivo do seu ponto de recuperação.

Faça backup da base de dados e faça o registo usando uma cópia de segurança snapshot de ficheiros

Este exemplo utiliza backup de snapshots de ficheiros para fazer backup da AdventureWorks2025 base de dados de exemplo até à 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  

Restauração a partir de uma cópia de segurança de snapshot de ficheiros SQL Server

O exemplo seguinte restaura a AdventureWorks2025 base de dados usando um conjunto de backup de registo de transações e snapshot de ficheiros e mostra uma operação de recuperação. Repare que pode restaurar uma base de dados a partir de um único conjunto de backup de ficheiro de registo transacional e snapshot.

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

Restaurar a partir de um backup de snapshot de ficheiros SQL Server para um determinado momento

O exemplo seguinte restaura o AdventureWorks2025 ao seu estado num momento específico, utilizando dois conjuntos de cópias de segurança de log de transações e cópias instantâneas de ficheiro, e apresenta uma operação de recuperação.

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  

Eliminar um conjunto de backup de snapshots de ficheiros de base de dados

Para eliminar um conjunto de backup de instantâneos de ficheiro, utilize o sys.sp_delete_backup procedimento armazenado do sistema. Especifique o nome da base de dados para que o sistema verifique se o conjunto de backup de snapshot de ficheiro especificado é de facto um backup para a base de dados especificada. Se não for especificado o nome da base de dados, o conjunto de backup especificado com os seus snapshots de ficheiros será eliminado sem tal validação. Para mais informações, consulte sp_delete_backup.

Advertência

Tentar eliminar um conjunto de backup de snapshots de ficheiros usando outro método, como o Microsoft Azure Management Portal ou o visualizador de armazenamento Azure no SQL Server Management Studio, não apagará os snapshots de ficheiros no conjunto de backup. Estas ferramentas irão apenas eliminar o próprio ficheiro de backup que contém os apontadores para os instantâneos de ficheiros no conjunto de backup de instantâneos de ficheiros. Para identificar snapshots de ficheiros de backup que permanecem após um ficheiro de backup ter sido eliminado incorretamente, utilize a sys.fn_db_backup_file_snapshots função do sistema e depois utilize o sys.sp_delete_backup_file_snapshot procedimento armazenado do sistema para eliminar um snapshot de ficheiro de backup individual.

O exemplo seguinte elimina o conjunto de backup de snapshots de ficheiros especificado, incluindo o ficheiro de backup e os snapshots de ficheiros que compõem o conjunto de backup especificado.

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

Visualizar snapshots de ficheiros de backup da base de dados

Para visualizar snapshots de ficheiros do blob base de cada ficheiro de base de dados, utilize a sys.fn_db_backup_file_snapshots função do sistema. Esta função do sistema permite-lhe visualizar todas as vistas instantâneas dos ficheiros de backup de cada blob base para uma base de dados armazenada através do Azure Blob Storage. Um caso de uso principal desta função é identificar snapshots de ficheiros de backup de uma base de dados que permanecem quando o ficheiro de backup de um conjunto de backup de snapshot de ficheiro é eliminado através de um mecanismo diferente do procedimento armazenado do sistema sys.sp_delete_backup. Para determinar os snapshots de ficheiros de backup que fazem parte de conjuntos de backup intactos e os que não fazem parte de backups intactos, use o RESTORE FILELISTONLY procedimento armazenado do sistema para listar os snapshots de ficheiros pertencentes a cada ficheiro de backup. Para mais informações, consulte sys.fn_db_backup_file_snapshots e RESTORE FILELISTONLY.

** O exemplo seguinte retorna a lista de todas as imagens de backup para a base de dados especificada.

--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  

Eliminar um snapshot individual de ficheiro de backup de base de dados

Para eliminar um snapshot individual de ficheiro de cópia de segurança de um blob da base de dados, utilize o sys.sp_delete_backup_file_snapshot procedimento do sistema armazenado. Um caso de uso principal deste procedimento armazenado do sistema é apagar ficheiros snapshots órfãos que permanecem após apagar um ficheiro de cópia de segurança, utilizando um método diferente do procedimento armazenado do sistema sys.sp_delete_backup. Para mais informações, consulte sp_delete_backup_file_snapshot.

Advertência

Eliminar um snapshot individual de ficheiro que está integrado num conjunto de snapshots de backup invalidará o conjunto inteiro de backup.

O exemplo seguinte elimina o ficheiro de snapshot de backup especificado. A URL para o backup especificado era obtida usando a sys.fn_db_backup_file_snapshots função do sistema.

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  

Próximos passos