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

Administration SQL Server Discussion :

Réduire l'historique des sauvegardes d'une base en particulier


Sujet :

Administration SQL Server

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut Réduire l'historique des sauvegardes d'une base en particulier
    Bonjour,

    Sur un serveur, j'ai plusieurs bases de données avec des politiques de retention des sauvegardes différentes.

    Je ne trouve pas comment supprimer les anciennes valeurs d'historique de backup à partir d'une date pour une base donnée.

    En effet :

    sp_delete_database_backuphistory => Supprime TOUT l'historique pour une base donnée

    sp_delete_backuphistory => Supprimer l'historique jusqu'à une date donnée pour TOUTES les bases

    Y'a pas une procédure qui combine les deux ?

    PS : Hors de question d'aller patouiller à la main dans les tables de MSDB.
    On ne jouit bien que de ce qu’on partage.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Est-ce que ça pose un réel problème de mettre la limite à la date la plus ancienne ?

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    En soit, non, c'est juste pas propre

    Sinon, question subsidiaire : est-ce normal qu'une purge (bon, ok, pas mal de lignes... 2 ans d'historique de 30 bases à raison d'un backup toutes les 10 minutes) fasse complètement partir en vrille un serveur ?

    Car là, depuis hier je tente de purger un de nos serveurs, et j'ai des trucs juste pas normaux...

    On a des instances SQL Server 2014 et d'autres 2008 R2.

    Tout est en version Express.

    Sur les 2014, il y a moins de bases (donc forcément historique bien moins gros).
    J'ai supprimé environ 1 année en 5 à 10 minutes sur chacun.

    Pour les 2008 R2, plusieurs choses incompréhensibles...
    1/ Si je supprime les données jusqu'au 01/01/2000, ça tourne pendant 2 heures (mais ça fini par aboutir).
    => Comment est-ce possible ? Il n'y a pas de backup antérieur à 2000, puisque les serveurs ont été installées (et les bases créées) courant 2014 ?
    2/ Si je supprime ensuite les données jusqu'au 01/01/2014, c'est instantané (ou presque). Normal, y'a pas de backups non plus sur cette période.
    3/ Si j'incrémente de 1 mois en 1 mois (donc pas des masses de données) au bout de quelques mois (dont la suppression dure quelques minutes), ça part en vrille total (2 heures sans réponse)

    Bug ? Truc pas clair qui m'échappe ?
    On ne jouit bien que de ce qu’on partage.

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Je pige plus rien...

    Voici ma commande :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    declare @dte datetime;
    set @dte = CAST('2014-01-01T00:00:00.000' as datetime);
    exec sp_delete_backuphistory @dte;

    Je lance, c'est immédiat.
    J'incrémente la date de 1 jour par 1 jour.
    2, 3, 4, 5, ... 14 => tout va bien.
    15 : planté.
    Je stoppe la commande.
    Je fais COMMIT (car la procédure visiblement tourne dans une transaction et la laisse en vrac quand elle est arrêtée au milieu).
    Je relance le 15 : instantané.
    16, 17... rebelotte !

    Et ainsi de suite. Je ne comprends pas.
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Est-ce que les stats sont à jour sur msdb ?
    Sinon, il y a certaines personnes qui ajoutent des indexes dans cette bd système.
    Va voir ici : http://sqlperformance.com/2015/07/sql-maintenance/msdb
    La source initiale semble être ici : weblogs.sqlteam.com/geoffh/archive/2008/01/21/MSDB-Performance-Tuning.aspx mais je n'arrive pas à charger la page.

  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Je suis en train de faire un rebuild des index sur les deux serveurs...

    Vu le temps que ça prend, effectivement, ça doit être un joyeux bordel...

    -- Bon, ben après quelques minutes de rebuild... retour à la case départ : c'est toujours aussi lent
    On ne jouit bien que de ce qu’on partage.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 : 21 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Pourquoi ne pas utiliser pour vos sauvegardes un unique fichier avec les options RETAINS_DAYS et EXPIRY DATE ?

    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/ * * * * *

  8. #8
    Invité
    Invité(e)
    Par défaut
    Quelles tailles font tes msdb ?

  9. #9
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    J'ai pas tout compris

    J'ai essayé au début d'indiquer un fichier unique en mode append, en indiquant une durée de validité pour les backups.
    Mais d'après ce que j'ai constaté (et ce que j'ai lu) même si un backup est périmé, il reste dans le fichier de backup et n'est jamais écrasé.
    => Résultat, j'ai un fichier qui grossi de façon indéfinie, ce que je ne veux pas.

    Moi j'ai un FULL toutes les 24 heures + un LOG toutes les 10 minutes. Et je conserve chaque fichier pendant 5 jours.
    => Passé ce délai, y'a quelques FULL qui sont conservés (suite à des mises à des faits marquants par exemple) mais globalement, aucun backup n'est conservé.

    Le souci c'est que MSDB a grossi et dépasse les 4 Go... Un comble quand on sait que la plus grosse base de production fait moins de 400 Mo sur ces serveurs.
    En même temps c'est logique : 1 backup toutes les 10 minutes pour 30 bases sur l'instance, ça donne 133 920 backups par mois...

    Donc je voudrais purger l'historique des backups au dela de 5 jours : aucun besoin de les conserver, puisque de toute façon on n'a plus les sauvegardes.
    On ne jouit bien que de ce qu’on partage.

  10. #10
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Une piste : n'y aurait-il pas par exemple un accroissement du TLog de la msdb lors de la suppression, à l'origine de ce ralentissement ?

    Par ailleurs, quand on regarde la SP en question, on s'aperçoit qu'elle n'est pas franchement conçue pour traiter des milliers de lignes :

    Utilisation de variable table dans un filtre INPar ailleurs, il n'y a pas d'index sur les colonne de date, ce qui doit pénaliser les requêtes...

  11. #11
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Je ne vois aucune activité disque sur ce fichier.
    Principalement de la lecture de porc sur le DATA.

    Je viens de créer un index sur la date. Rien ne change.

    Je lance à la main le contenu de la procédure. J'ai remplacé les variables de type table par des tables temporaires avec une clé unique... rien de bien spectaculaire non plus.
    On ne jouit bien que de ce qu’on partage.

  12. #12
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Après avoir réussi à réduire de plus de 60% l'utilisation des données dans la base MSDB, j'ai compris ce qui rend tout aussi lent...

    Je ne sais pas de quelle taille c'est parti, mais visiblement de pas bien gros.

    Et par défaut, accroissement de 10%...

    Donc pour arriver à 6 Go, il en a fait des fragments...

    En effet, là je fais un shrink avec reorganize pour réduire à 2 Go et... bah ça ramme pas qu'un peu ! Signe que c'est ultra-fragmenté

    -- Edit : Grmpf. En fait, ça ramme tellement que ça plante en timeout
    On ne jouit bien que de ce qu’on partage.

  13. #13
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Bon ben je pige pas comment c'est possible que ce soit aussi lent...

    Sur le serveur de DEV c'est bon, mais sur la PROD, ça n'avance pas.
    On ne jouit bien que de ce qu’on partage.

  14. #14
    Invité
    Invité(e)
    Par défaut
    C'est quoi tes tables les plus pleines dans msdb ?
    Est-ce que tu te sers de l'envoi d'emails ?

  15. #15
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Non non, y'a les 4 pauvres tables qui stockent l'historique des bacups qui sont pleines, et c'est tout... Plusieurs centaines de milliers de lignes.

    J'ai fini par faire du DELETE de bourrin à la main sur les 4 tables.

    Maintenant tout est rentré dans l'ordre.

    Plus jamais de autogrowth sur MSDB, et plus jamais un serveur sans purge de cette table grmpf ! On m'y prendra plus
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. Sauvegarde d'une base en mode ligne contenant des '-'
    Par Labienus dans le forum Administration
    Réponses: 4
    Dernier message: 22/10/2010, 10h58
  2. Réponses: 1
    Dernier message: 09/12/2008, 17h44
  3. Historique et détails des connexions sur une base
    Par farenheiit dans le forum Administration
    Réponses: 6
    Dernier message: 01/09/2008, 16h53
  4. Historique des requêtes sur une base
    Par Dschub dans le forum Firebird
    Réponses: 1
    Dernier message: 16/04/2008, 15h10
  5. Réponses: 4
    Dernier message: 14/01/2008, 08h42

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