Sauvegarde d une base de données Version 1.0 Grégory CASANOVA
2 Sauvegarde d une base de données Sommaire 1 Introduction... 3 2 Différents types de sauvegarde... 4 2.1 Sauvegarde complète de base de données... 4 2.2 Sauvegarde du journal de transaction... 4 2.3 Sauvegarde différentielle d une base de données... 5 2.4 Sauvegarde par groupes de fichiers... 5 3 Sauvegarder une base de données... 6 3.1 Sauvegarde de base de données utilisateur... 6 3.1.1 Avec du code T-SQL... 7 3.1.2 Avec SSMS... 8 3.2 Sauvegarde de base de données système... 9 4 Conclusion... 9
3 Sauvegarde d une base de données 1 Introduction Sauvegarder une base de données peut paraitre anodin, cependant, suivant les besoins en production ou en haute disponibilité de la base, les planifications de sauvegarde d une base de données ne seront pas les mêmes. La gestion des sauvegardes reste donc l une des taches les plus importantes dans SQL Server. En effet, l exactitude, la rigueur et l organisation seront vos outils clés pour réussir des sauvegardes cohérentes, à tel point que ces sauvegardes pourront être par la suite automatisées grâce à l agent SQL Server, sous forme de travaux (Les travaux de l agent SQL Server seront expliqués dans un autre chapitre). Il est donc très important de passer du temps à la planification de la sauvegarde. On peut voir ce temps passé comme un gain futur de temps d administration de la base sauvegardée. Pour planifier une sauvegarde de base de données dans de bonne condition, il est important de se poser les bonnes questions. Ces questions concernent entre autre les caractéristiques de la base de données à sauvegarder, l importance de l intégrité des données dans la base, ou encore la disponibilité que doit avoir la base de données lors de la sauvegarde, autrement dit, est-ce que les utilisateurs pourront ou non travailler sur cette base lors de la sauvegarde. Autant de questions qu il convient de se poser pour effectuer une planification intelligente qui va engendrer un gain de temps sur la future administration de la base. SQL Server propose deux types de supports pour les sauvegardes de base de données : les disques et les bandes. Le choix du support vous appartient. En général ce choix sera différent suivant la taille de l entreprise et donc suivant la taille de la base de données ainsi que l importance des données sauvegardées. Il existe bien entendu plusieurs types de sauvegardes dans SQL Server. Les meilleures solutions de sauvegardes seront celles qui utiliseront plusieurs types de sauvegardes pour les bases utilisateurs. En effet, SQL Server propose des sauvegardes complètes, des sauvegardes des journaux, ou encore des sauvegardes différentielles. Ces types de sauvegardes peuvent en plus être appliqués à la base complète ou à un groupe de fichier seul. SQL Server propose donc plusieurs solutions, combinables, qui au final, nous donnent une plus grande flexibilité pour nos sauvegardes de bases de données. Dans ce chapitre, nous allons donc vous présenter en détail les différents types de sauvegardes possibles (totales, différentielles, journaux, sur groupe de fichiers), les droits nécessaires pour un utilisateur lui permettant de sauvegarder une base de données et bien entendu, comment sauvegarder une base de données, toujours de deux manières : avec SQL Server Management Studio ou bien avec du code Transact SQL.
4 Sauvegarde d une base de données 2 Différents types de sauvegarde Comme nous avons pue le dire plus haut, il existe plusieurs types de sauvegardes. La sauvegarde de chaque base sera différente dans le sens où chaque solution de sauvegarde sera composée d un ou plusieurs types de sauvegarde suivant plusieurs critères (Taille de la base, niveau de disponibilité ). Il est donc important de bien mettre en place la phase de planification de la sauvegarde, afin de faire les bon choix. Présentons maintenant les différents types de sauvegarde de base de données. 2.1 Sauvegarde complète de base de données La sauvegarde totale d une base de données est le point de départ de toute planification d une base de données. Tous les autres types de sauvegarde ne seront pas possibles, si aucune sauvegarde totale n a été faite auparavant. Ne faire que des sauvegardes totales (ou complètes) est risqué et mène en général à une perte de temps et d espace disque assez conséquente. De plus, les transactions validées ne sont pas retenues pour une sauvegarde de type complète. On peut donc considérer que les sauvegardes complètes de base de données sont mieux adaptés aux bases de faible volume et pour lesquelles il est facile de valider à nouveau toutes les transactions effectuées sur celle-ci. 2.2 Sauvegarde du journal de transaction Les sauvegardes des fichiers journaux peuvent être mises en place en complément des sauvegardes totales de base de données. Les avantages principaux des journaux de base de données sont qu ils permettent de retrouver la plupart des transactions opérées sur la base de données, et ils ne prennent pas une place grandissante dans l espace de stockage, tout simplement parce qu il est possible de tronquer les sauvegardes en fonction des anciennes sauvegardes de journaux.
5 Sauvegarde d une base de données 2.3 Sauvegarde différentielle d une base de données Si toutefois les sauvegardes de journaux peuvent vite devenir volumineuses, il existe une alternative saine pour palier à ce problème, les sauvegardes différentielles de base de données. En effet, ce type de sauvegarde va nous permettre de sauvegarder les données non sauvegardées dans la dernière sauvegarde totale. Cette solution est donc évolutive, rapide et elle permet un gain de place énorme. 2.4 Sauvegarde par groupes de fichiers Les sauvegardes complètes et les sauvegardes différentielles de base de données peuvent prendre s étendre sur la durée lorsqu il s agit de bases de données à gros volumes. Si toutefois votre base de données est définie sur plusieurs fichiers de données (.mdf), il est possible de choisir de sauvegarder la base par groupe de fichiers de données.
6 Sauvegarde d une base de données 3 Sauvegarder une base de données Nous allons maintenant expliquer les différentes manières de sauvegarder une base de données. Tout d abord, avant de commencer à sauvegarder, il faut savoir qu un utilisateur simple ne peut pas sauvegarder une base, il lui faut les droits contenus dans les rôles suivants : sysadmin, db_owner, db_backupoperator. 3.1 Sauvegarde de base de données utilisateur Les bases de données utilisateurs sont les bases les plus sujettes à être sauvegardées dans l entreprise. Il est important que dans SQL Server la sauvegarde d une base de données ne se fasse pas sous forme de fichier, mais bien sous forme d unité. On peu alors énoncer les unités physiques et les unités logiques de sauvegarde. Définissons ces deux termes : Unité de sauvegarde physique : Une unité de sauvegarde physique correspond au nom complet du fichier de sauvegarde dans le système de fichier Windows. Pour prendre un exemple parlant, si jamais une opération qui peut entrainer une perte de données est à faire, il convient d effectuer une sauvegarde sur une unité physique de données, autrement dit, un disque. Unité de sauvegarde logique : Une unité logique de sauvegarde est en vérité, une unité de sauvegarde physique référencée par un nom logique dans SQL Server. Elles se créent directement dans l explorateur d objet, en déployant le nœud objet serveur puis en sélectionnant Nouvelle unité de sauvegarde dans le menu contextuel du nœud Unités de sauvegarde. Il suffit alors de donner un nom à cette unité de sauvegarde et de cliquer sur OK.
7 Sauvegarde d une base de données Il est aussi possible de créer une unité de sauvegarde de cet ordre grâce à une instruction T- SQL. Dans ce cas là, nous allons utiliser une procédure stockée. Voici la syntaxe de cette procédure : EXECsp_addumpdevice@devtype='DISK', @logicalname='test',@physicalname='c:\test.bak' Voici la signification des arguments suivants : - @devtype : Le type de support de la sauvegarde physique à référencer. - @logicalname : Le nom logique de l unité de sauvegarde logique. - @physicalname : Le chemin complet de l unité de sauvegarde physique référencée par l unité de sauvegarde logique. Nous allons maintenant sauvegarder une base de données. Il existe comme toujours, dans SQL Server, deux manière d effectuer une même opération. Nous allons montrer ces deux manières. Note : Le mode de récupération de la base n est pas une option applicable au moment de la sauvegarde. Il faut le changer au niveau des propriétés de la base elle même, dans la partie Option. Vous avez le choix entre les modes de récupération complet, journalisé en bloc et simple. 3.1.1 Avec du code T-SQL Pour effectuer des sauvegardes de base de données avec du code T-SQL, nous allons passer par l intermédiaire de l instruction BACKUP. Cette instruction va nous permettre d effectuer tous les types de sauvegarde de base de données. Détaillons les arguments pour les différents types de sauvegarde. Dans le cas général, on utilise BACKUP DATABASE pour faire une sauvegarde des données et BACKUP LOG pour sauvegarder les fichiers de log. TO DISK permet de préciser l emplacement de l unité physique de sauvegarde, alors que TO tout seul, permet de préciser l unité logique de sauvegarde préalablement créée. --Sauvegarde complète : BACKUPDATABASEEntreprise TODISK='c:\Test.bak' WITHCOMPRESSION --Sauvegarde différentielle : BACKUPDATABASEEntreprise TOTest WITHDIFFERENTIAL --Sauvegarde des fichiers de log : BACKUPLOGEntreprise TOTest --Sauvegarde sur plusieurs fichiers : BACKUPDATABASEEntreprise TODISK='c:\Test1.bak', DISK='c:\Test2.bak' WITHMEDIANAME='Test'
8 Sauvegarde d une base de données - WITH COMPRESSION : Permet de compresser les sauvegardes de données. - WITH DIFFERENTIAL : Permet de préciser que la sauvegarde est différentielle. Ce type de sauvegarde peut être utilisé seulement si une sauvegarde complète a d abord été faite. - WITH MEDIANAME : Permet de donner un nom au groupe de fichier créé. 3.1.2 Avec SSMS Avec SSMS, la sauvegarde d une base de données de tout type se fait d une même manière. Dans l explorateur d objets, développez les nœuds du serveur, des objets serveur, affichez le menu contextuel du nœud Unité de sauvegarde et choisissez l option Sauvegarder une base de données. La fenêtre suivante apparait : Les types de sauvegarde complets, différentiels, et de fichiers de log, se choisissent dans Type de sauvegarde. Pensez à choisir la bonne base dans l option Base de données. En revanche, les sauvegardes par groupe de fichiers se gèrent dans la partie inférieure de la fenêtre. Dans la sous partie Destination, par défaut, il existe un seul et unique fichier. Si vous voulez effectuer votre sauvegarde sur plusieurs fichiers, cliquez sur Ajouter, pour ajouter un fichier de sauvegarde. Pensez à spécifier le nom du jeu de sauvegarde. Concernant l expiration, si celle-ci est à 0, celle-ci n est pas active.
9 Sauvegarde d une base de données 3.2 Sauvegarde de base de données système La sauvegarde des bases de données système sont quasiment toute aussi important que la sauvegarde de bases de données utilisateur. En effet, les bases de données système contiennent la définition de toutes les bases de l instance. La base de données Master contient toutes les informations relatives au bon fonctionnement de SQL Server. La base Master contient aussi la définition de toutes les connexions et de tous les serveurs liés. La base de données MSDB contient tous les travaux planifiés, les lots SSIS et les informations de réplication. Enfin la base de données Model sert de base de départ pour toute base de données de type utilisateur. Note : La sauvegarde de ces bases en production est quand même assez rare. Ce ne sont donc pas les bases à sauvegarder en priorité. Leur sauvegarde est donc ponctuelle, il n est donc pas nécessaire d opérer à une planification pour ces sauvegardes. 4 Conclusion Nous arrivons à la fin de ce cours. Nous avons appris à planifier et mener convenablement une sauvegarde de base de données. Pensez simplement que savoir faire une sauvegarde de base de
10 Sauvegarde d une base de données données ne sert à rien tant que l on ne sait pas restaurer une base de données. Je vous conseille donc de lire le cours sur la restauration d une base de données, disponible dans la même partie du site http://dotnet-france.com/cours/70-432.html. Bien entendue, vous pouvez vous rendre dans la partie SQL Server sur le forum du site de Dotnet France (http://forumss.dotnetfrance.com/forums/8.html).