Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Comment fonctionne une sauvegarde complète ?

La sauvegarde complète est l'une des bases de l'administration d'un serveur de base de données et donc de SQL Server. Et pourtant à mon sens relativement méconnue.

La sauvegarde des données dans SQL Server se fait à chaud, c'est-à-dire que la base de données est toujours accessible en lecture et en écriture pendant la phase de sauvegarde. Tout au plus remarquerez vous un léger ralentissement pendant cette dernière. Les données sont recopiées vers un ou plusieurs fichiers disques ou un ou plusieurs lecteurs de bande.

La sauvegarde complète se réalise avec la syntaxe suivante

BACKUP DATABASE AdventureWorks
TO <unité de sauvegarde>

Pour réaliser une sauvegarde vers le disque il suffit d'exécuter la commande suivante

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\test\backup.bak'

L'extension de fichier .BAK n'est pas obligatoire c'est une convention fréquente avec SQL server pour les sauvegardes de données.

Comment la sauvegarde à chaud est elle possible ?

En fait SQL Server possède un journal de transaction pour chaque base de données (C'est le fichier portant par défaut l'extension LDF). Ce journal contient la liste de toutes les transactions (équivalent à toutes les requêtes modifiant les données) exécutées sur la base de données. Le processus de sauvegarde va en même temps qu'il démarre la copie des pages de données (bloc de 8ko) marquer le moment du début de cette opération (en fait on mémorise l'emplacement le plus ancien dans le journal correspondant soit à la plus ancienne transaction actuellement en cours, doit le dernier Checkpoint, soit le début de la sauvegarde) dans le journal de transaction. L'opération de sauvegarde peut durer plusieurs heures jusqu'à sa fin il est donc impossible d'avoir une version consistante de la base de données juste avec la copie des pages de données, c'est pour cela qu'à la fin de la sauvegarde, SQL Server marque à nouveau le journal est réalise une copie de ce dernier entre les 2 marques.

La restauration de la base de données revient dès lors à recopier les pages de données sauvegardées et à rejouer la portion de journal stockées dans la sauvegarde (donc à reéxecuter les requêtes ayant modifiées les donnés pendant la sauvegarde). La base de données est alors restaurée dans l'état dans lequel elle était à la fin de la sauvegarde.

Quelques conséquences pratiques

  • Il faut impérativement mémoriser la date et heure de fin de vos opérations de sauvegarde, étant donné que l'on ne peut restaurer une base de données qu'à cette date et heure avec une sauvegarde complète.
  • Le journal de transaction ne sera jamais tronqué pendant une opération de sauvegarde (il est susceptible de grossir pendant cette phase). C'est l'une des raisons pour lesquelles on conseille de réaliser la sauvegarde pendant une phase d'accalmie sur le serveur (la nuit en général).
  • Le temps de restauration est fonction de la durée de la sauvegarde et aussi de l'activité d'écriture sur la base de données pendant la sauvegarde. Vous pouvez avoir un écart considérable de temps de restauration entre une base sauvegardée en journée ou dans la nuit. C'est aussi l'une des raisons pour lesquelles on conseille de réaliser la sauvegarde pendant une phase d'accalmie sur le serveur (la nuit en général).

Du nouveau dans SQL Server 2008 ?

Dans SQL Server 2008 sera ajoutée une fonctionnalité attendue depuis pas mal de temps, et déjà implémenté par de nombreux éditeurs tiers : la compression des sauvegardes. Cela à un double effet la diminution de la taille des fichiers de sauvegarde et la diminution de la durée de la sauvegarde. La conséquence négative est la plus forte consommation de processeur pendant la sauvegarde (modérée tout de même).

Cette option sera active par défaut dans cette version.

Bonne sauvegarde…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié samedi 27 octobre 2007 15:19 par christian

Commentaires

samedi 27 octobre 2007 15:46 by ROMELARD Fabrice

# re: SQL Server : Comment fonctionne une sauvegarde complète ?

En voila une bonne nouvelle de pouvoir faire cette compression.

Fabrice

mardi 30 octobre 2007 15:23 by Christophe LAPORTE

# re: SQL Server : Comment fonctionne une sauvegarde complète ?

Bonne nouvelle ??? Peut-être ... Existe t'il un benchmark des temps de sauvegarde avec et sans compression? Pour ma part, je me passerais de cette option, même si elle fait gagner de l'espace disque, au risque de passer pour un refractaire au progrés !

Christophe

jeudi 1 novembre 2007 23:37 by christian

# re: SQL Server : Comment fonctionne une sauvegarde complète ?

Pour le moment je n'ai pas testé, mais avec des outils tiers clairement on a un gain de taille important et un gain de vitesse aussi.

Dans SQL Server 2008 çà sera de toute façon désactivable si nécessaire !

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 12 heures et 30 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 13 heures et 44 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le 07-03-2009, 09:56

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le 07-03-2009, 09:00

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 07-03-2009, 08:45

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18