Question

Pour faire suite à cette question , je me demande quel est votre code SQL Le plan de sauvegarde / maintenance du serveur est, et comment je peux améliorer le mien.

Actuellement, j'exécute deux plans de maintenance standard dans l'assistant de planification.

Le premier passe la nuit et fait à peu près tout ...

  • Sauvegarde complète de la base de données et du journal des transactions
  • contrôle d'intégrité, reconstruction d'index, recalcul de statistiques, etc. (j'ai tout vérifié sauf la sauvegarde incrémentielle)

L'autre s'exécute toutes les trois heures et effectue une sauvegarde incrémentielle (je suis paranoïaque, je sais que c'est probablement excessif).

Les sauvegardes se font sur disque, les sauvegardes complètes sont envoyées au réseau de stockage, conservées pendant une semaine.

Que pensez-vous, s’agit-il d’un plan judicieux? Des suggestions?

EDIT: il s’agit de SQL Server 2005. La taille de la base de données est de 5 Go, elle augmente d’environ 1 Go / mois.

Était-ce utile?

La solution

Ça sonne plutôt bien. Je suis plus paranoïaque. Je fais deux sauvegardes complètes quotidiennes et des sauvegardes du journal des transactions horaire. Dépend de la taille de la base de données ou du cours. Les sauvegardes sont effectuées directement sur le disque, puis sur bande tous les soirs.

Vous n'avez probablement pas besoin de faire les tâches de maintenance tous les jours. Je ne les fais que le week-end, sauf pour cette table que nous réindexons tous les soirs. Là encore, cela dépend de la taille et de l’activité de la base de données.

Si vous disposez de suffisamment de cpu et d'espace disque, vous pouvez compresser les sauvegardes sur disque pour économiser de l'espace et accélérer le transfert sur bande ou à un autre emplacement.

Autres conseils

Vous devriez parler à vos utilisateurs / clients / dépositaires de données, peu importe comment vous les appelez. Ils ont besoin de comprendre clairement combien de travail ils peuvent perdre. Rédigez un contrat de niveau de service si vous n'en avez pas. Vous ne voulez pas de surprises quand il s'agit de mauvaises nouvelles.

Ils doivent également comprendre que la restauration prend du temps. Vous devez planifier votre plan de récupération pour créer un temps de restauration acceptable. Cela peut signifier une sauvegarde complète quotidienne, 4 différentielles et des sauvegardes du journal toutes les 5 minutes. Comme Marcus Erickson l’a dit, cela n’est ni fou ni paranoïaque. Tout dépend de votre information et de la valeur monétaire que votre organisation y accorde.

Je ne pense pas que vous soyez paranodique en effectuant des sauvegardes toutes les 3 heures. Fondamentalement, votre plan de sauvegarde doit être évalué en fonction de vos exigences de restauration. Combien de temps pouvez-vous vous permettre d’être en panne pendant que vous récupérez, par rapport à combien de données êtes-vous prêt à perdre avant de tomber en panne? Pour SQL Server, vous pouvez réduire considérablement la quantité de données que vous êtes prêt à perdre en ajoutant des sauvegardes du journal des transactions à votre plan de sauvegarde. Beaucoup de gens le font toutes les quelques minutes en fonction du nombre de transactions passant par le système. Pour effectuer une restauration, il vous suffit de restaurer la dernière incrémentation complète, la dernière, puis toutes les sauvegardes du journal des transactions depuis l'incrémental. Cela peut vous donner une perte de données minimale, mais cela peut prendre un peu plus longtemps pour appliquer toutes les sauvegardes du journal des transactions. Je vois régulièrement ce qui suit: Sauvegardes complètes - Hebdomadaires Sauvegardes incrémentielles - Tous les soirs Journalisation des sauvegardes - toutes les quelques minutes en fonction des besoins (peut être utile une fois par heure, etc.)

N'oubliez pas de faire des analyses où vous essayez de restaurer à partir des sauvegardes que vous créez (sur un système de test). Cela devrait être fait peut-être une fois par mois.

Le minimum que je recommande à mes clients est d'effectuer une sauvegarde complète nocturne de la base de données, puis une sauvegarde de transaction toutes les 3 heures. Je suis toujours étonné de voir combien de personnes n’ont jamais créé de sauvegarde. Ce sont toujours de mauvais appels.

À mon avis, le meilleur moyen est:

Effectuez la sauvegarde complète de la base de données toutes les 12 heures

base de données de sauvegarde base de données sur le disque = 'd: /full.bak'

une sauvegarde différentielle toutes les six heures; en cas d’échec, le processus de restauration est plus facile

Base de données de sauvegarde de la base de données sur le disque = 'd: /diff.bak' WITH DIFFERENTIAL

et, bien sûr, des sauvegardes du journal des transactions qu'il est préférable de faire toutes les heures.

Base de données BACKUP LOG TO DISK = 'log.bak'

En cas d'échec, le processus de récupération sera le suivant:

  • La dernière sauvegarde complète
  • La dernière sauvegarde différentielle
  • Le dernier journal des transactions

Il faut bien admettre qu'il est préférable d'utiliser un modèle de récupération complète pour rendre disponible la récupération à un moment donné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top