IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Sauvegarder une base de données en temps réel


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 116
    Par défaut Sauvegarder une base de données en temps réel
    Bonjour,

    Je vous expose mon problème: j'ai une base de données sous sql server 2000 dont je fais une sauvegarde journalière. Lors d'un crash serveur, j'ai pu récupérer la dernière sauvegarde mais les données qui ont été enregistrées entre cette sauvegarde et le crash ont été perdues. J'aimerais savoir s'il serait possible de sauvegarder la base en temps réel ( dupliquer le fichier de données et le log par exemple sur un support externe).
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonsoir,

    Il faut implémenter des sauvegardes du journal de transaction à intervalle régulier de votre base en complément de vos sauvegardes journalières.

    Le paramétrage de l'intervalle de sauvegarde du journal dépendra de la stratégie de votre entreprise concernant les données. Si la perte de données d'une heure est acceptable vous pouvez implémenter votre sauvegarde de journal toutes les heures par exemple ...

    Une bonne introduction aux sauvegardes se trouvent dans le tutoriel SQL Server du site.

    ++

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 116
    Par défaut
    Merci MikeDavem pour votre réponse.
    A vrai dire, aucune perte de données n'est tolérée (il s'agit d'un système hospitalier). Donc j'ai besoin de pouvoir récupérer les données en entier lors d'un crash et de les restaurer en un temps minimum. Est ce que ça vous parait possible?

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Cela est tout à fait possible (comment font les autres hôpitaux ? )
    Il vous faut pour cela choisir une bonne stratégie de sauvegarde

    Dans tous les cas, vous devez passer au mode de récupération FULL.
    Pour connaître le mode de restauration de votre base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATABASEPROPERTYEX('maBD', 'Recovery')
    Et si vous devez le modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER DATABASE maBD
    SET RECOVERY FULL
    Ensuite vous pouvez créer un plan de maintenance qui:
    - effectue une sauvegarde complète de votre base de données tous les jours à une heure de faible utilisation
    - effectue une sauvegarde différentielle de la base de données toutes les 4h
    - effectue une sauvegarde du fichier du journal des transactions toutes les heures, de façon à ce que celui-ci ne grossisse pas trop.

    Bien sûr ceci n'est qu'un exemple, et vous devrez très probablement l'adapter à votre problématique en modifiant les fréquences de sauvegarde.

    Supposons que vous suivez l'exemple que je viens de vous donner.
    Dans ce cas, en cas de crash à 16:12:00, vous devriez :

    - Sauvegarder le fichier du journal des transactions de la base de données, avec l'option NO_TRUNCATE,
    - Restaurer la dernière sauvegarde complète, avec l'option WITH NORECOVERY
    - Restaurer la dernière sauvegarde différentielle, avec l'option WITH NORECOVERY,
    - Restaurer les sauvegardes des journaux de transaction qui ont été effectuées après la dernière sauvegarde différentielle, avec l'option WITH NORECOVERY
    - Restaurer la sauvegarde du journal des transactions que vous avez effectuée avant de restaurer la dernière sauvegarde complète, avec l'option STOPAT = '20091002 16:11:59'

    Pour aller plus loin, je vous propose ce tutoriel de Fadace

    @++

  5. #5
    Membre extrêmement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par défaut
    Pour une "sauvegarde" temps réel, ça serais pas mieux une réplication master/slave ?

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 021
    Billets dans le blog
    6
    Par défaut
    Ou mieux un mirroring, mais pour cela il faut une version 2005 au moins.

    Enfin, vous auriez certainement pu récupérer toute votre base, si vous aviez observé les préconisation minimale de MS :
    1) que vos fichiers de données et du journal soit situés sur deux axes physiques différents
    2) que vous soyez en mode FULL de récupération
    Avec ces deux éléments :
    • si le disque de data crash, vous pouvez faire une sauvegarde du journal et partant de la complète + la sauvegarde JT que vous venez d'effectuer vous avez toutes les données jusqu'au crash.
    • si le disque du JT crash, vous faite une sauvegarde complete avec l'option WITH NO LOG et vous restaurez !


    Tout cela s'apprend dans un cours d'administration avec en sus des TP live comme ceux que mes collègues et moi même donnons à, Orsys par exemple.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/03/2012, 00h28
  2. Réponses: 0
    Dernier message: 08/09/2011, 13h24
  3. Sauvegarder une Base de données Oracle 8
    Par benjamin50 dans le forum Administration
    Réponses: 7
    Dernier message: 16/06/2009, 12h36
  4. sauvegarder une base de donnée access
    Par simo333 dans le forum VBA Access
    Réponses: 7
    Dernier message: 15/10/2007, 11h30
  5. Copie d'une base de donnée en temps réel
    Par brunoleduic dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/09/2007, 05h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo