Sauvegardes différentielles (SQL Server)

S’applique à :SQL Server

Cet article de sauvegarde et de restauration est pertinent pour toutes les bases de données SQL Server.

une sauvegarde différentielle est basée sur la sauvegarde de données complète précédente la plus récente. Une sauvegarde différentielle enregistre uniquement les modifications effectuées depuis la toute dernière sauvegarde complète. La sauvegarde complète sur laquelle une sauvegarde différentielle est basée s'appelle la base de la différentielle. Les sauvegardes complètes, à l'exception des sauvegardes de copie uniquement, peuvent servir de base à une série de sauvegardes différentielles, y compris les sauvegardes de base de données, partielles et de fichiers. La sauvegarde de base d'une sauvegarde différentielle de fichiers peut faire partie d'une sauvegarde complète, d'une sauvegarde de fichiers ou d'une sauvegarde partielle.

Avantages

La création d’une sauvegarde différentielle peut être beaucoup plus rapide que la création d’une sauvegarde complète. Une sauvegarde différentielle enregistre uniquement les modifications effectuées depuis la toute dernière sauvegarde complète sur laquelle la sauvegarde différentielle est basée. Cela facilite la réalisation de sauvegardes des données fréquentes et réduit ainsi le risque de perte de données. Toutefois, avant de restaurer une sauvegarde différentielle, vous devez restaurer la base associée. Par conséquent, la restauration à partir d'une sauvegarde différentielle nécessitera plus de mesures et de temps que la restauration à partir d'une sauvegarde complète, car deux fichiers de sauvegarde sont requis.

Les sauvegardes différentielles sont particulièrement utiles dans les cas où un sous-ensemble de base de données est modifié plus fréquemment que le reste de la base de données. En pareil cas, les sauvegardes différentielles vous permettent d'effectuer des sauvegardes régulières sans les contraintes liées aux sauvegardes complètes.

En mode de récupération complète, l'utilisation des sauvegardes différentielles peut réduire le nombre de sauvegardes de journaux à restaurer.

Vue d’ensemble des sauvegardes différentielles

Une sauvegarde différentielle capture l’état de toutes les étendues (collections de huit pages contiguës physiquement) qui ont changé entre le moment où la base différentielle a été créée et lorsque la sauvegarde différentielle est créée. Cela signifie que la taille d'une sauvegarde différentielle donnée dépend de la quantité de données qui a changé depuis la base. De manière générale, plus une base est ancienne, plus une nouvelle sauvegarde différentielle est volumineuse. Dans une série de sauvegardes différentielles, une extension fréquemment mise à jour contiendra probablement des données différentes dans chaque sauvegarde différentielle.

La figure ci-dessous illustre le fonctionnement d'une sauvegarde différentielle. La figure montre 24 extensions de données, dont six ont changé. La sauvegarde différentielle contient uniquement ces six étendues de données. L'opération de sauvegarde différentielle s'appuie sur une page bitmap qui contient un bit pour chaque extension. Pour chaque extension mise à jour depuis la base, le bit a la valeur 1 dans le bitmap.

Diagram of how the differential bitmap identifies changed extents.

Note

Une sauvegarde de copie seule ne met pas à jour la bitmap différentielle. Par conséquent, une sauvegarde de copie seule n'affecte pas les sauvegardes différentielles ultérieures.

Une sauvegarde différentielle qui est effectuée assez peu de temps après sa base peut être beaucoup plus petite que la base différentielle. Vous gagnez ainsi du temps de sauvegarde et de l'espace de stockage. En revanche, au gré des modifications apportées à la base de données, la différence entre cette dernière et une base différentielle spécifique augmente avec le temps. Plus le temps écoulé entre une sauvegarde différentielle et sa base augmente, plus la taille de la sauvegarde différentielle peut être importante. Au bout du compte, cela signifie que la taille des sauvegardes différentielles peut atteindre celle de la base différentielle. Une sauvegarde différentielle considérable perd les avantages d'une sauvegarde plus rapide et plus réduite.

À mesure que la taille des sauvegardes différentielles augmente, la restauration d'une sauvegarde différentielle peut accroître considérablement le temps nécessaire à la restauration d'une base de données. Nous vous recommandons donc d'effectuer une nouvelle sauvegarde complète selon une périodicité fixe pour établir une nouvelle base différentielle des données. Par exemple, vous pouvez effectuer une sauvegarde complète hebdomadaire de la base de données dans son entier (soit une sauvegarde complète de la base de données), puis des séries régulières de sauvegardes de bases de données différentielles au cours de la semaine.

Au moment de la restauration, pour pouvoir restaurer une sauvegarde différentielle, vous devez restaurer sa base. Ensuite, pour amener la base de données jusqu'au stade de la création de la sauvegarde différentielle, il vous suffit de restaurer la sauvegarde différentielle la plus récente. En règle générale, vous restaurez la sauvegarde complète la plus récente suivie de la sauvegarde différentielle la plus récente qui est basée sur cette sauvegarde.

Sauvegardes différentielles de bases de données avec des tables mémoire optimisées

Pour plus d’informations sur les sauvegardes différentielles et les bases de données avec les tables optimisées en mémoire, consultez Sauvegarde d’une base de données avec des tables optimisées en mémoire.

Sauvegardes différentielles de bases de données en lecture seule

Pour les bases de données en lecture seule, les sauvegardes complètes utilisées seules sont plus faciles à gérer que lorsqu’elles sont utilisées avec des sauvegardes différentielles. Lorsqu’une base de données est en lecture seule, la sauvegarde et d’autres opérations ne peuvent pas modifier les métadonnées contenues dans le fichier. Par conséquent, les métadonnées requises par une sauvegarde différentielle, telles que le numéro de séquence de journal à partir duquel la sauvegarde différentielle commence (le LSN de base différentielle) est stockée dans la master base de données. Si la base différentielle est prise lorsque la base de données est en lecture seule, la bitmap différentielle indique plus de modifications que celles qui se sont produites depuis la sauvegarde de base. Les données supplémentaires sont lues par sauvegarde, mais elles ne sont pas écrites dans la sauvegarde, car le differential_base_lsn stockage dans la table système du jeu de sauvegarde est utilisé pour déterminer si les données ont changé depuis la base.

Lorsqu'une base de données en lecture seule est reconstruite, restaurée ou détachée et rattachée, les informations de base différentielle sont perdues. Cela se produit, car la master base de données n’est pas synchronisée avec la base de données utilisateur. Le moteur de base de données SQL Server ne peut pas détecter ou empêcher ce problème. Toutes les sauvegardes différentielles ultérieures ne sont pas basées sur la sauvegarde complète la plus récente et peuvent fournir des résultats inattendus. Pour créer une base différentielle, nous vous recommandons de créer une sauvegarde complète de la base de données.

Meilleures pratiques pour l’utilisation de sauvegardes différentielles avec une base de données en lecture seule

Après avoir créé une sauvegarde complète de base de données d’une base de données en lecture seule, si vous envisagez de créer une sauvegarde différentielle ultérieure, sauvegardez la master base de données.

Si la base de données est perdue, restaurez-la master avant de restaurer une sauvegarde différentielle d’une base de données utilisateur.

Si vous détachez et attachez une base de données en lecture seule pour laquelle vous envisagez d’utiliser ultérieurement des sauvegardes différentielles, dès qu’il est pratique, effectuez une sauvegarde complète de la base de données en lecture seule et de la master base de données.

Voir aussi