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

S’applique à : SQL Server

La sauvegarde basée sur des captures instantanées de fichiers SQL Server utilise des captures instantanées Azure afin de fournir des sauvegardes quasi instantanées et des restaurations plus rapides pour les fichiers de base de données stockés en utilisant 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.

Diagramme expliquant l’architecture de sauvegarde d’instantanés.

Vous disposez déjà d’un compte Azure ? Visitez SQL Server sur les machines virtuelles Azure pour démarrer une machine virtuelle avec SQL Server déjà installé.

Utilisation d’instantanés Azure pour sauvegarder des fichiers de base de données stockés dans Azure

Qu’est-ce qu’une sauvegarde de capture instantanée de fichier 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 des URL, consultez Sauvegarde SQL Server vers une URL.

Diagramme de l’architecture de la fonctionnalité d’instantané.

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 de captures instantanées de fichiers, utilisez la procédure stockée système sys.sp_delete_backup.

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 un tutoriel sur l’utilisation de SQL Server avec le Stockage Blob Microsoft Azure, consultez Tutoriel : Utilisation du Stockage Blob Microsoft 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 illustrant cette technique est proposé à la fin de cet article.

À 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 illustrant cette technique est proposé à la fin de cet article.

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 de captures instantanées de fichiers, utilisez la procédure stockée système sys.sp_delete_backup. 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 de captures instantanées de fichiers de sauvegarde orphelines : vous pouvez avoir des captures instantanées de fichiers orphelines si le fichier de sauvegarde a été supprimé sans utiliser la procédure stockée système sys.sp_delete_backup ou si une base de données ou un fichier de base de données a été supprimé(e) alors que des captures instantanées de fichiers de sauvegarde étaient associées aux objets blob contenant cette base de données ou ce fichier de base de données. Pour identifier les captures instantanées de fichiers pouvant être orphelines, utilisez la fonction système sys.fn_db_backup_file_snapshots afin de répertorier toutes les captures instantanées 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 procédure stockée système sys.sp_delete_backup_file_snapshot pour supprimer une capture instantanée de fichier de sauvegarde individuelle devenue orpheline. Vous trouverez des exemples d’utilisation de cette fonction système et de ces procédures stockées système à la fin de cet article. Pour plus d’informations, consultez sp_delete_backup, sys.fn_db_backup_file_snapshots, sp_delete_backup_file_snapshot et RESTORE FILELISTONLY.

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

Mode de récupération utilisant les journaux de transactions : quand vous utilisez le mode de récupération utilisant les journaux de transactions et une sauvegarde du journal des transactions contenant des transactions à consignation minimale, vous ne pouvez pas effectuer une restauration du journal (avec récupération jusqu’à une date et heure) à 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 une sauvegarde d’instantanés de fichiers pour sauvegarder l’exemple de base de données AdventureWorks2022 sur un périphérique 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  

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

L’exemple suivant restaure la base de données AdventureWorks2022 à l’aide d’un jeu de sauvegarde d’instantanés de fichiers du journal des transactions et illustre 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 la base de données AdventureWorks2022 dans l’état qui était le sien à un point spécifique dans le temps, à l’aide de deux jeux de sauvegarde d’instantanés de fichiers du journal des transactions et illustre 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 de captures instantanées de fichiers, utilisez la procédure stockée système sys.sp_delete_backup. 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 captures instantanées de fichiers de sauvegarde qui restent après la suppression incorrecte d’un fichier de sauvegarde, utilisez la fonction système sys.fn_db_backup_file_snapshots, puis recourez à la procédure stockée système sys.sp_delete_backup_file_snapshot pour supprimer une capture instantanée de fichiers de sauvegarde spécifique.

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 des captures instantanées de fichiers du blob de base pour chaque fichier de base de données, utilisez la fonction système sys.fn_db_backup_file_snapshots. Cette fonction système vous permet d’afficher tous les instantanés de fichiers de sauvegarde de chaque objet blob de base pour une base de données stockée avec le Stockage Blob Azure. Le cas d’usage principal de cette fonction est d’identifier les captures instantanées de fichiers de sauvegarde d’une base de données qui restent quand le fichier de sauvegarde pour un jeu de sauvegarde de captures instantanées de fichiers est supprimé à l’aide d’un mécanisme autre que la procédure stockée système sys.sp_delete_backup. Pour déterminer les captures instantanées de fichiers de sauvegarde qui font partie de jeux de sauvegarde intacts et celles qui n’en font pas partie, utilisez la procédure stockée système RESTORE FILELISTONLY pour répertorier les captures instantanées de fichiers appartenant à chaque fichier de sauvegarde. Pour plus d’informations, consultez sys.fn_db_backup_file_snapshots 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 une capture instantanée de fichier de sauvegarde d’un blob de base de base de données, utilisez la procédure stockée système sys.sp_delete_backup_file_snapshot. Le cas d’usage principal de cette procédure stockée système est de supprimer les fichiers de captures instantanées de fichiers orphelins qui restent après la suppression du fichier de sauvegarde à l’aide d’une méthode autre que la procédure stockée système sys.sp_delete_backup. Pour plus d’informations, consultez sp_delete_backup_file_snapshot.

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 fonction système 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  

Étapes suivantes