[SQL Server] Sauvegardes : généralités

Ce billet offre une présentation élémentaire des sauvegardes sous SQL Server.

Avant de vous attaquer à ce billet, n’hésitez pas à jeter un coup d’œil ici, afin de comprendre l’utilité des différents modes de récupération, ainsi que le fonctionnement d’un journal de transactions.

Présentation des sauvegardes sous SQL Server

Utilité d’une sauvegarde

Une sauvegarde est une opération extrêmement importante. En effet, une sauvegarde est effectuée dans le but de pouvoir réaliser une restauration suite à différents événements tels que :

  • Une corruption (partielle ou non) ou perte de données d’une base de données nécessitant la récupération d’une sauvegarde récente (on parle, ici, d’un disaster recovery plan).
  • Une demande de rafraîchissement d’une base de données utilisée pour dans le cadre de tests, recettes, développements,… à partir d’une sauvegarde d’une base de données de production.
  • Une migration vers un autre serveur ou une autre instance.

Les différents types de sauvegardes

Il existe principalement 4 types de sauvegardes :

Type Description Mode(s) de récupération supporté(s) Syntaxe basique
Full backup La sauvegarde complète est la plus facile à implémenter. Ellepermet de prendre une image complète d’une base de données. Quand la sauvegarde complète démarre, la date est enregistrée, les pages de données sauvegardées et toutes les transactions ayant lieu durant l’opération sont également enregistrées.

Notez qu’une sauvegarde complète d’une base de données ne sauvegarde pas ses logins, mais ses utilisateurs. Les logins sont, en effet, stockés dans la base de données master.

Full, Bulk-Logged et Simple. BACKUP DATABASE <Nom_Base> TO DISK=N'<Destination>’
Differential backup La sauvegarde différentielle (apparue à partir de SQL Server 2000 Enterprise Edition)
permet de seulement sauvegarder tous les changements opérés depuis la dernière sauvegarde complète, en utilisant les pages DCM(Differential Change Map ;
voir ici). Les sauvegardes différentielles sont généralement plus petites que celles complètes, et peuvent donc être utilisées plus fréquemment.
Full, Bulk-Logged et Simple. BACKUP DATABASE <Nom_Base> TO DISK=N'<Destination>’

WITH DIFFERENTIAL

Transactional backup La sauvegarde transactionnelle permet de sauvegarder toutes les transactions ayant eu lieu dans la base de données depuis la dernière sauvegarde (complète, différentielle ou transactionnelle). Utiliser une telle sauvegarde permet également d’effectuer une restauration point-in-time pour une base de données. Full et Bulk-Logged. BACKUP LOG <Nom_Base> TO DISK=N'<Destination>’
File(group) backup Ce type de sauvegarde permet de sauvegarder des fichiers de données ou des groupes de fichiers. Généralement, cela sert à sauvegarder une très large base de données (VLDB) en répartissant les sauvegardes sur différentes périodes. Il s’agit d’un type de sauvegarde plus granulaire permettant d’avoir un plan de sauvegardes plus personnalisé. Ce type de sauvegarde peut être effectué complètement ou différentiellement. Full, Bulk-Logged et Simple. BACKUP DATABASE <nomBase>

{FILE = <Nom_Fichier> | FILEGROUP = <Nom_Filegroup> , …}

TO DISK = ‘<Destination>’

NOTA: possibilité d’ajouter WITH DIFFERENTIAL en fin de syntaxe, en cas de volonté d’effectuer une sauvegarde différentielle de fichier(s) de données ou de filegroup(s).

Quelques options utiles

Chaque commande de sauvegardes possède un très grand nombre d’options. En voici quelques-uns utiles :

Option Description Syntaxe basique
Option de copie Permet d’effectuer une sauvegarde de copie sans impacter le jeu de sauvegardes différentielles. Très utile en cas de migration d’une base de données ou d’une copie vers un serveur de test. Cette option n’apparaît qu’à partir de SQL Server 2005. BACKUP DATABASE <Nom_Base> TO DISK=N'<Destination>’

WITH COPY_ONLY

Option de compression Permet de réaliser nativement une compression de sauvegarde. N’apparaît qu’à partir de SQL Server 2008 (édition Enterprise). BACKUP DATABASE | LOG <Nom_Base> TO DISK=N'<Destination>’

WITH COMPRESSION

Options de conservation INIT (ajout ou remplace une nouvelle sauvegarde au jeu de sauvegardes existant ; par défaut NOINIT est utilisée), FORMAT (écrase le jeu de sauvegardes existant, tout en prenant en compte implicitement l’option SKIP ; par défaut, NOFORMAT est utilisée), SKIP (désamorce la vérification de la date et l’heure d’expiration d’un jeu de sauvegardes avant de l’écraser ; par défaut NOSKIP est utilisée), RETAINDAYS (date ou nombre de jours de rétention d’un jeu de sauvegardes avant suppression), EXPIREDATE (date d’expiration).
BACKUP DATABASE | LOG <Nom_Base> TO DISK=N'<Destination>’

WITH <Options_de_conservation>

Mirrored backup Permet de réaliser des copies multiples d’une sauvegarde et simultanément, de préférence vers une partition. BACKUP DATABASE | LOG <Nom_Base> TO DISK=N'<Destination>’

MIRROR TO DISK=N'<Destination2>’

Parallel backups Permet de réaliser une sauvegarde « éclatée » en plusieurs fichiers de taille égale plutôt qu’une sauvegarde en un seul fichier plus gros. BACKUP DATABASE | LOG <Nom_Base> TO DISK=N'<Destination1>’,

DISK=N'<Destination2>’,

DISK=N'<Destination3>’

Options de vérification CHECKSUM (vérification de l’intégrité des pages via la génération d’une somme de contrôles ; par défaut, NO_CHECKSUM est utilisée, sauf en cas d’utilisation de l’option COMPRESSION), CONTINUE_AFTER_ERROR (permet d’ignorer toute erreur durant tout le processus de sauvegarde ; par défaut, STOP_ON_ERROR est utilisée).
BACKUP DATABASE | LOG <Nom_Base> TO DISK=N'<Destination>’

WITH <Options_de_vérification >

Option de surveillance Il s’agit de l’option STATS qui permet de suivre la progression d’une opération de sauvegarde. BACKUP DATABASE | LOG <Nom_Base> TO DISK=N'<Destination1>’,

WITH STATS='<Progression>’

NOTA : par défaut, l’affichage du déroulement d’une sauvegarde est effectué à chaque incrément de 10% quand <Progression> est ignoré.

A noter qu’une autre option de sauvegarde existe (et qui est vouée à disparaître à terme, selon Microsoft) : la sauvegarde sur bande (utilisation de TAPE à la place de DISK et d’options de rembobinage de bandes telles que NOUNLOAD, UNLOAD (par défaut), REWIND (par défaut) et NOREWIND). Plus de détails ici : http://msdn.microsoft.com/fr-fr/library/ms186865.aspx.

Pour aller plus loin…

Dans ce billet, nous avons pu aborder les points essentiels relatifs aux sauvegardes sous SQL Server, et leur importance. Dans le futur, d’autres sujets en rapport avec les sauvegardes et les restaurations seront abordés (i.e., plans de sauvegardes, etc…).

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s