Sauvegarde d’instantanés de fichiers pour les fichiers de base de données dans Azure

S’applique à :SQL Server

La sauvegarde instantané fichiers SQL Server utilise des instantané Azure pour fournir des sauvegardes quasi instantanées et des restaurations plus rapides pour les fichiers de base de données stockés à l’aide de Stockage Blob Azure. Cette fonctionnalité vous permet de simplifier vos stratégies de sauvegarde et de restauration. Pour plus d’informations sur le stockage de fichiers de base de données avec le Stockage Blob Azure, consultez Fichiers de données SQL Server dans Microsoft Azure.

Diagram explaining the snapshot backup architecture.

Vous disposez déjà d’un compte Azure ? Visitez SQL Server sur Azure Machines Virtuelles pour faire tourner une machine virtuelle avec SQL Server déjà installé.

Utiliser des instantané Azure pour sauvegarder des fichiers de base de données stockés dans Azure

Qu’est-ce qu’une sauvegarde instantané de fichiers SQL Server

Une sauvegarde d’instantanés de fichiers se compose d’un ensemble d’instantanés Azure d’objets blob contenant les fichiers de base de données et un fichier de sauvegarde renfermant des pointeurs vers ces instantanés de fichiers. Chaque instantané de fichier est stocké dans le conteneur avec l’objet blob de base. Vous pouvez spécifier que le fichier de sauvegarde lui-même soit écrit sur un périphérique URL, sur disque ou sur bande. La sauvegarde sur un périphérique URL est recommandée. Pour plus d’informations sur la sauvegarde, consultez BACKUP et sur la sauvegarde vers l’URL, consultez Sauvegarde SQL Server vers l’URL.

Diagram of the architecture of snapshot feature.

En cas de suppression de l’objet blob de base, le jeu de sauvegarde est invalidé et vous ne pouvez pas supprimer un objet blob qui contient des instantanés de fichiers (sauf si vous choisissez expressément de supprimer un objet blob avec tous ses instantanés de fichiers). En outre, la suppression d’une base de données ou d’un fichier de données ne supprime pas l’objet blob de base ou l’un de ses instantanés de fichiers. De plus, la suppression du fichier de sauvegarde ne supprime pas les instantanés de fichiers dans le jeu de sauvegarde. Pour supprimer un jeu de sauvegarde instantané fichier, utilisez la sys.sp_delete_backup procédure stockée système.

Sauvegarde complète de base de données : l’exécution d’une sauvegarde complète de base de données à l’aide de la sauvegarde de captures instantanées de fichiers permet de créer une capture instantanée Azure de chaque fichier de données et de journal constituant la base de données, d’établir la chaîne de sauvegarde du journal des transactions et d’écrire l’emplacement des captures instantanées de fichiers dans le fichier de sauvegarde.

Sauvegarde de fichier journal : l’exécution d’une sauvegarde de fichier journal à l’aide de la sauvegarde de captures instantanées de fichiers permet de créer une capture instantanée de fichier de chaque fichier de base de données (pas seulement du journal des transactions), d’enregistrer les informations d’emplacement des captures instantanées de fichiers dans le fichier de sauvegarde et de tronquer le fichier journal de transactions.

Important

Après la sauvegarde complète initiale nécessaire pour établir la chaîne de sauvegarde du journal des transactions (qui peut être une sauvegarde d’instantanés de fichiers), vous devez uniquement effectuer des sauvegardes du journal des transactions, car chaque jeu de sauvegarde d’instantanés de fichiers du journal des transactions contient des instantanés de fichiers de tous les fichiers de base de données et peut être utilisé pour effectuer une restauration de base de données ou de journal. Après la sauvegarde initiale complète de la base de données, aucune sauvegarde complète ni différentielle supplémentaire n’est nécessaire. En effet, le Stockage Blob Azure gère les différences entre l’instantané de fichier et l’état actuel de l’objet blob de base pour chaque fichier de base de données.

Remarque

Pour obtenir un didacticiel sur l’utilisation de SQL Server avec Microsoft Stockage Blob Azure, consultez Tutoriel : Utiliser Microsoft Stockage Blob Azure avec des bases de données SQL Server

Effectuer une restauration à l’aide de sauvegardes d’instantanés de fichiers

Chaque jeu de sauvegarde d’instantanés de fichiers contenant un instantané de fichier de chaque fichier de base de données, un processus de restauration requiert au plus deux jeux de sauvegarde d’instantanés de fichiers adjacents. Cela est vrai, que le jeu de sauvegarde provienne d’une sauvegarde de complète base de données ou d’une sauvegarde de fichier journal. Ce processus de restauration diffère nettement de celui qui fait appel à des fichiers de sauvegarde en continu classiques. Avec la sauvegarde en continu classique, le processus de restauration requiert l’utilisation d’une chaîne entière de jeux de sauvegarde : la sauvegarde complète, une sauvegarde différentielle et une ou plusieurs sauvegardes de journaux de transactions. La partie récupération du processus de restauration reste la même, que la restauration utilise une sauvegarde d’instantanés de fichiers ou un jeu de sauvegarde en continu.

Au point dans le temps où a été effectué un jeu de sauvegarde : pour exécuter une opération RESTORE DATABASE pour restaurer une base de données au point dans le temps où a été effectué un jeu de sauvegarde de capture instantanée de fichier spécifique, seul le jeu de sauvegarde spécifique est nécessaire, ainsi que les objets blob de base eux-mêmes. Étant donné que vous pouvez utiliser un jeu de sauvegarde d’instantanés de fichiers du journal des transactions pour effectuer une opération RESTORE DATABASE, vous utilisez généralement un jeu de sauvegarde du journal des transactions pour exécuter ce type d’opération RESTORE DATABASE et recourez rarement à un jeu de sauvegarde complète de base de données. Un exemple s’affiche à la fin de cet article illustrant cette technique.

À un point dans le temps entre deux jeux de sauvegarde de capture instantanée de fichier : pour effectuer une opération RESTORE DATABASE pour restaurer une base de données à un point dans le temps situé entre deux jeux de sauvegarde du journal des transactions adjacents, seuls deux jeux de sauvegarde du journal des transactions sont nécessaires (un avant et un après le point dans le temps auquel vous souhaitez restaurer la base de données). Pour ce faire, vous exécutez une opération RESTORE DATABASE WITH NORECOVERY à l’aide du jeu de sauvegarde d’instantanés de fichiers du journal des transactions défini à partir du point antérieur dans le temps et effectuez une opération RESTORE LOG WITH RECOVERY à l’aide du jeu de sauvegarde d’instantanés de fichiers du journal des transactions à partir du point postérieur dans le temps et en utilisant l’argument STOPAT pour spécifier le point dans le temps auquel arrêter la récupération à partir de la sauvegarde du journal des transactions. Un exemple s’affiche à la fin de cet article illustrant cette technique.

Maintenance du jeu de sauvegarde de fichiers

Suppression d’un jeu de sauvegarde de captures instantanées de fichiers : vous ne pouvez pas remplacer un jeu de sauvegarde de captures instantanées de fichiers à l’aide de l’argument FORMAT. L’argument FORMAT n’est pas autorisé afin d’éviter que des instantanés de fichier qui ont été créés avec la sauvegarde de fichiers d’instantanés d’origine deviennent orphelins. Pour supprimer un jeu de sauvegarde instantané fichier, utilisez la sys.sp_delete_backup procédure stockée système. Cette procédure stockée supprime le fichier de sauvegarde et les instantanés de fichiers qui composent le jeu de sauvegarde. Utiliser une autre méthode pour supprimer un jeu de sauvegarde d’instantanés de fichiers peut supprimer le fichier de sauvegarde sans supprimer les instantanés de fichiers dans le jeu de sauvegarde.

Suppression des instantané de fichiers de sauvegarde orphelines : vous avez peut-être des instantané de fichiers orphelins si le fichier de sauvegarde a été supprimé sans utiliser la sys.sp_delete_backup procédure stockée système ou si une base de données ou un fichier de base de données a été supprimé pendant que le ou les objets blob contenant la base de données ou le fichier de base de données avaient des instantané de sauvegarde associés. Pour identifier les instantané de fichiers qui peuvent être orphelins, utilisez la sys.fn_db_backup_file_snapshots fonction système pour répertorier tous les instantané de fichiers des fichiers de base de données. Pour identifier les instantanés de fichiers qui font partie d’un jeu de sauvegarde d’instantanés de fichiers spécifique, utilisez la procédure stockée système RESTORE FILELISTONLY. Vous pouvez ensuite utiliser la sys.sp_delete_backup_file_snapshot procédure stockée système pour supprimer un fichier de sauvegarde individuel instantané orphelin. Les exemples utilisant cette fonction système et ces procédures stockées système sont à la fin de cet article. Pour plus d’informations, consultez sp_delete_backup, sys.fn_db_backup_file_instantané s, sp_delete_backup_file_instantané et RESTORE FILELISTONLY.

Considérations et limitations

Stockage Premium : quand vous utilisez le stockage Premium, les limitations suivantes s’appliquent :

Compte de stockage unique : la capture instantanée de fichier et les blobs de destination doivent utiliser le même compte de stockage.

Modèle de récupération en bloc : lorsque vous utilisez le modèle de récupération journalisé en bloc et que vous utilisez une sauvegarde du journal des transactions contenant des transactions journalisées minimalement, vous ne pouvez pas effectuer une restauration de journal (y compris une récupération à un point dans le temps) à l’aide de la sauvegarde du journal des transactions. Au lieu de cela, vous exécutez une restauration de base de données au point dans le temps où a été effectué le jeu de sauvegarde d’instantanés de fichiers. Cette limitation est identique à celle qui affecte la sauvegarde en continu.

Restauration en ligne : quand vous utilisez des sauvegardes de captures instantanées de fichiers, vous ne pouvez pas effectuer une restauration en ligne. Pour plus d’informations sur la restauration en ligne, consultez Restauration en ligne (SQL Server)

Facturation : quand vous utilisez la sauvegarde de captures instantanées de fichiers SQL Server, des frais supplémentaires s’appliquent du fait de la modification des données. Pour plus d’informations, consultez Understanding How Snapshots Accrue Charges(Comprendre comment les captures instantanées contribuent à l’augmentation des coûts).

Archivage : si vous souhaitez archiver une sauvegarde de capture instantanée de fichier, vous pouvez effectuer l’opération dans le stockage d’objets blob ou dans la sauvegarde en continu. Pour effectuer l’opération d’archivage dans le stockage d’objets blob, copiez les captures instantanées du jeu de sauvegarde de captures instantanées de fichiers dans des objets blob distincts. Pour l’exécuter dans la sauvegarde en continu, restaurez la sauvegarde d’instantanés de fichiers en tant que nouvelle base de données, puis effectuez une sauvegarde en continu normale avec compression et/ou chiffrement et archivez-la aussi longtemps que vous le souhaitez, indépendamment des objets blob de base.

Important

La gestion de plusieurs sauvegardes d’instantanés de fichiers a un faible impact sur les performances. Cependant, gérer un nombre excessif de sauvegardes d’instantanés de fichiers peut affecter les performances des opérations d’E/S sur la base de données. Nous vous recommandons de ne gérer que les sauvegardes d’instantanés de fichiers nécessaires à la prise en charge de votre objectif de point de restauration.

Sauvegarder la base de données et le journal à l’aide d’une sauvegarde de captures instantanées de fichiers

Cet exemple utilise la sauvegarde instantané fichier pour sauvegarder l’exemple de base de données vers l’URLAdventureWorks2022.

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

Restaurer à partir d’une sauvegarde de captures instantanées de fichiers SQL Server

L’exemple suivant restaure la base de données à l’aide AdventureWorks2022 d’un jeu de sauvegarde de fichiers journaux de transactions instantané et affiche une opération de récupération. Notez que vous pouvez restaurer une base de données à partir d’un seul jeu de sauvegarde d’instantanés de fichiers du journal des transactions.

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

Restaurer à partir d’une sauvegarde de captures instantanées de fichiers SQL Server à un point dans le temps

L’exemple suivant restaure l’état AdventureWorks2022 à un moment spécifié à l’aide de deux jeux de sauvegarde de fichiers journaux de transactions instantané et affiche une opération de récupération.

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  

Supprimer un jeu de sauvegarde de captures instantanées d’un fichier de base de données

Pour supprimer un jeu de sauvegarde instantané fichier, utilisez la sys.sp_delete_backup procédure stockée système. Spécifiez le nom de la base de données pour que le système vérifie que le jeu de sauvegarde de captures instantanées du fichier spécifié est effectivement une sauvegarde de la base de données spécifiée. Si vous ne spécifiez aucun nom de base de données, le jeu de sauvegarde indiqué et ses instantanés de fichiers sont supprimés sans validation de ce type. Pour plus d’informations, consultez sp_delete_backup.

Avertissement

Si vous tentez de supprimer un jeu de sauvegarde d’instantanés de fichiers à l’aide d’une autre méthode, telle que le Portail de gestion Microsoft Azure ou la visionneuse Azure Storage dans SQL Server Management Studio, les instantanés de fichiers dans le jeu de sauvegarde ne sont pas supprimés. Ces outils suppriment uniquement le fichier de sauvegarde qui contient les pointeurs vers les instantanés de fichiers dans le jeu de sauvegarde d’instantanés de fichiers. Pour identifier les instantané de sauvegarde qui restent après la suppression incorrecte d’un fichier de sauvegarde, utilisez la sys.fn_db_backup_file_snapshots fonction système, puis utilisez la sys.sp_delete_backup_file_snapshot procédure stockée système pour supprimer un fichier de sauvegarde individuel instantané.

L’exemple suivant supprime le jeu de sauvegarde d’instantanés de fichiers spécifié, y compris le fichier de sauvegarde et les instantanés de fichiers composant le jeu de sauvegarde indiqué.

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

Afficher des captures instantanées de fichier de sauvegarde de base de données

Pour afficher les instantané de fichiers de l’objet blob de base pour chaque fichier de base de données, utilisez la sys.fn_db_backup_file_snapshots fonction système. Cette fonction système vous permet d’afficher toutes les instantané de sauvegarde de chaque objet blob de base pour une base de données stockée à l’aide de Stockage Blob Azure. Un cas d’usage principal pour cette fonction consiste à identifier les instantané de fichiers de sauvegarde d’une base de données qui restent lorsque le fichier de sauvegarde d’un jeu de sauvegarde instantané de fichiers est supprimé à l’aide d’un mécanisme autre que la sys.sp_delete_backup procédure stockée système. Pour déterminer les instantané de sauvegarde qui font partie des jeux de sauvegarde intacts et ceux qui ne font pas partie des jeux de sauvegarde intacts, utilisez la RESTORE FILELISTONLY procédure stockée système pour répertorier les instantané de fichiers appartenant à chaque fichier de sauvegarde. Pour plus d’informations, consultez sys.fn_db_backup_file_instantané s et RESTORE FILELISTONLY.

L’exemple suivant retourne la liste de tous les instantanés de fichiers de sauvegarde pour la base de données spécifiée.

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

Supprimer une capture instantanée de fichier de sauvegarde de base de données individuel

Pour supprimer un fichier de sauvegarde individuel instantané d’un objet blob de base de données, utilisez la sys.sp_delete_backup_file_snapshot procédure stockée système. Un cas d’usage principal pour cette procédure stockée système consiste à supprimer les fichiers orphelins instantané qui restent après la suppression d’un fichier de sauvegarde à l’aide d’une méthode autre que la sys.sp_delete_backup procédure stockée système. Pour plus d’informations, consultez sp_delete_backup_file_instantané.

Avertissement

La suppression d’un instantané de fichier qui fait partie d’un jeu de sauvegarde d’instantanés de fichiers invalide le jeu de sauvegarde.

L’exemple suivant supprime l’instantané de fichiers de sauvegardes spécifié. L’URL de la sauvegarde spécifiée a été obtenue à l’aide de la sys.fn_db_backup_file_snapshots fonction système.

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  

Étapes suivantes