Comprendre l'impact / le risque de désactiver «vérifier l'intégrité de la sauvegarde» sur la sauvegarde SQL

12

Actuellement, nous utilisons des plans de maintenance standard pour les sauvegardes sur les serveurs SQL Server 2005/2008 / 2008R2 / 2012 dans notre environnement, et la case "Vérifier l'intégrité de la sauvegarde" a toujours été cochée.

Certaines sauvegardes s'exécutent très longtemps, j'ai donc recommandé de désactiver cette option, mais la direction a besoin de moi pour documenter l'impact et les risques de ce changement.

Je comprends l'utilisation et l'historique de cette option, il me semble simplement inutile de doubler la durée du travail de sauvegarde lorsque (à mon avis), toute erreur susceptible de se produire se produirait pendant l' étape de sauvegarde , pas pendant la vérification.

Ai-je tort? Est-ce un risque minimal de désactiver cette fonction si je sauvegarde sur le disque et non sur une bande en streaming ou quelque chose? (Le cas échéant, nous sauvegardons sur le réseau une appliance de sauvegarde EMC DD-800.)

Existe-t-il des recommandations officielles des États membres pour savoir quand il est possible de désactiver cette option?

Exécutez-vous "vérifier" sur chaque sauvegarde de votre environnement? Les vérifiez-vous ponctuellement?

EDIT : pour clarifier, lorsque vous cochez «vérifier l'intégrité de la sauvegarde» dans le plan de maintenance, SQL effectuera une RESTAURATION VÉRIFIÉE complète sur chaque base de données immédiatement après chaque sauvegarde. C'est tout aussi intensif en données / E / S que la sauvegarde d'origine, et (en gros) double le temps global du travail de sauvegarde. Ce n'est pas la même chose que d'activer l'option "checksum" lors de la sauvegarde (ce qui ne peut pas être fait dans l'assistant, pour autant que je sache).

BradC
la source
Merci tout le monde. Ajout d'un lien supplémentaire pour ma propre référence, sur l'utilisation d'un indicateur de trace pour activer la somme de contrôle sur les sauvegardes, même lors de l'utilisation des plans de maintenance SQL: nebraskasql.blogspot.com/2014/03/…
BradC

Réponses:

5

Ai-je tort? Est-ce un risque minimal de désactiver cette fonction si je sauvegarde sur le disque et non sur une bande en streaming ou quelque chose?

Non, tu as raison :-)

RESTORE VERIFYONLYne garantira pas seulement que vous pourrez récupérer votre base de données en cas de corruption. Par nature, il n'effectuera aucun contrôle d'intégrité.

Une meilleure façon consiste à effectuer périodiquement vos sauvegardes et à effectuer une restauration valide sur un autre serveur et à exécuter DBCC CHECKDB dessus.

C'est une des raisons pour lesquelles je ne suis pas un grand fan des plans de maintenance car l'interface graphique n'expose pas beaucoup d'options comme backup .. with CHECKSUMcelle-ci peut être réalisée par T-SQL.

Du blog Mythe de Paul Randal

24p) en utilisant RESTORE… WITH VERIFYONLY valide toute la sauvegarde

Non. L'utilisation de VERIFYONLY ne valide que l'en-tête de sauvegarde ressemble à un en-tête de sauvegarde. Ce n'est que lorsque vous effectuez la sauvegarde à l'aide de WITH CHECKSUM et effectuez RESTORE… WITH VERIFYONLY et à l' aide de WITH CHECKSUM que la restauration effectue des vérifications plus approfondies, y compris la somme de contrôle sur l'ensemble de la sauvegarde.

Exécutez-vous "vérifier" sur chaque sauvegarde de votre environnement? Les vérifiez-vous ponctuellement?

Je ne lance pas le VERIFYONLY. Au lieu de cela, je prends une sauvegarde avec CHECKSUM puis je les fais restaurer + CHECKDB sur un autre serveur. Vous pouvez suivre l' approche d' échantillonnage statistique pour vérifier les sauvegardes de base de données si vous voulez être créatif.

Ce n'est pas la même chose que d'activer l'option "checksum" lors de la sauvegarde (ce qui ne peut pas être fait dans l'assistant, pour autant que je sache).

Vous pouvez activer Trace Flag 3023 pour que l' CHECKSUMoption soit automatiquement activée pour la commande BACKUP. Comme toujours, testez le comportement de tout indicateur de trace dans votre environnement!

L'essentiel est de - abandonner les plans de maintenance et utiliser une solution de sauvegarde plus judicieuse (indice: la solution de sauvegarde d'Ola) qui vous permettra de la personnaliser en fonction de vos besoins.

(Le cas échéant, nous sauvegardons sur le réseau une appliance de sauvegarde EMC DD-800.)

Sauvegardez localement sur le disque, puis effectuez un travail de transfert PowerShell qui copiera la sauvegarde localement du serveur vers un partage réseau (serveur de sauvegarde). Ce sera plus rapide que de copier directement sur un partage réseau.

En outre, activez l'initialisation instantanée des fichiers, ce qui aidera à la croissance automatique des fichiers de données ainsi qu'à réduire le temps de restauration (au cas où vous devriez restaurer vos bases de données). C'est toujours bien d'avoir des options à portée de main.

Une bonne lecture sera: Sauvegardes: Planification d'une stratégie de récupération

Kin Shah
la source
Merci pour votre réponse détaillée. Je pense que je peux recommander d'activer la somme de contrôle lors de la sauvegarde, ce qui devrait attraper un pourcentage légèrement plus élevé d'erreurs pendant l'étape de sauvegarde et devrait, espérons-le, compenser le risque (très léger) plus élevé de sauter la SAUVEGARDE VÉRIFIÉMENT. Je comprends ce que vous recommandez en ce qui concerne les restaurations régulières sur un autre serveur, mais en raison de la taille de notre environnement, cela ne semble pas plausible, sauf peut-être sur une base d'échantillonnage.
BradC
@BradC Heureux que ma réponse vous soit utile. L'essentiel de ma réponse est d'utiliser TSQLpar opposition à GUI(plans de maintenance) afin que vous puissiez tirer parti de la flexibilité et l'adapter à mains ouvertes. Tout comme un FYI .. les plans de maintenance ont été améliorés dans SQL Server 2016 CTP 2.4que MS appelle des plans de maintenance intelligents SQL Server - intègre les meilleures pratiques et peut identifier les stratégies optimales à la volée. Toujours aucune interface graphique ne peut battre TSQL :-)
Kin Shah
Merci @Kin. Je connais l'approche de script entièrement personnalisée d'autres environnements, qui peut évidemment avoir ses propres problèmes d'erreurs et de maintenance de script. Nous évaluons certains agents de compression tiers, nous aurons donc éventuellement besoin de scripts personnalisés.
BradC
2

L'essentiel est qu'à moins que vous ne fassiez une restauration de base de données quelque part, vous ne pouvez pas être totalement sûr qu'un fichier de sauvegarde donné est bon.

Le test idéal pour vérifier vos sauvegardes consiste à configurer un environnement dans lequel les sauvegardes de la base de données et les sauvegardes du journal de la base de données sont restaurées tout le temps dans le cadre de votre processus quotidien. C'est l'un des avantages de l'utilisation de l'envoi de journaux ...

Si vous souhaitez toujours vous en tenir à Verifyonly, vous pouvez configurer un environnement spécifiquement pour cela. Cela déchargerait le travail de votre (vraisemblablement) serveur de production et réduirait le temps de travail.

Enfin, avez-vous envisagé de vous éloigner des plans de maintenance? Les scripts comme les scripts d'Ola sont à l'exception des sauvegardes et de la maintenance: https://ola.hallengren.com/

Peter Schofield
la source
Nous pourrions nous éloigner des plans de maintenance à l'avenir, car nous évaluons certains agents de sauvegarde tiers (qui sont conçus pour fonctionner avec notre dispositif de sauvegarde spécifique). Je suppose que ceux-ci nécessiteront des scripts personnalisés, similaires à ce que Ola a développé.
BradC
1

Techniquement, la restauration est comme effectuer une restauration, mais il n'y a pas de meilleur contrôle que la restauration de la base de données pour vérifier qu'il s'agit d'une sauvegarde valide. Nous avons eu une instance où la vérification a réussi, mais la base de données ne sera pas restaurée en raison d'une corruption, mon point est de ne pas compter sur cela comme une vérification de la sauvegarde. Nous avons maintenant développé un système qui restaure toutes nos bases de données sur une instance distincte pour vérifier leur validité, ce qui n'est clairement pas toujours possible, alors essayez d'échantillonner certaines bases de données par semaine. Les longs et les courts ne font pas confiance à 100% seulement.

Gelder
la source
C'est vrai, mais je ne suis pas sûr que cela réponde vraiment à ma question, car je recommande de désactiver le RESTORE VERIFYONLY dans notre environnement. Sauf si votre argument est le suivant: "puisque seule une restauration complète réelle prouvera que la sauvegarde est viable, la désactivation de cette option n'augmente pas sensiblement le risque".
BradC
Exact, le seul vrai chèque imo est d'effectuer réellement une restauration pour de vrai
Gelder