web-dev-qa-db-fra.com

La plus petite sauvegarde possible ... avec SQL Server

Chaque jour, nous expédions nos sauvegardes SQL Server sur le WAN. Nous devons minimiser la taille de ces sauvegardes afin qu'il ne faut pas pour toujours.

Cela ne vous dérange pas si notre processus de sauvegarde prend un peu plus longtemps; Comme il se trouve, nous devons déplacer 30gigs de sauvegarde comprimée sur le WAN qui prend plus de 10 heures.

Il y a 2 options que nous devons obtenir des sauvegardes quotidiennes plus petites.

  1. Log Shipping, ce qui signifierait que nous devrions devoir restructurer le processus du Dr.
  2. Dettez des informations hors de la DB et de reconstruire de l'autre côté (déposez des index non clusters, des index clusters en pack à 100% - reconstruisez de l'autre côté)

Les deux impliqueraient une juste quantité de travail de notre part. Nous utilisons SQL Server 2008 Pro, toutes les sauvegardes sont comprimées.

Y a-t-il des produits commerciaux qui peuvent nous donner une taille de sauvegarde similaire à l'option (2)?

Y a-t-il un script complet là-bas qui nous permettra d'accomplir (2)? (Gestion des vues indexées, des index filtrés, des clés étrangères et ainsi de suite)

37
Sam Saffron

Première pensée basée sur des commentaires ...

Utilisez des sauvegardes différentielles chaque, disons, 6 heures, pour réduire la taille/l'heure de la sauvegarde + FTP. Ensuite, réduisez votre sauvegarde complète + FTP en week-end. Cela évite la complexité de l'expédition de journal, simple à faire et ajoute seulement une légère complexité au Dr

Je sens que les sauvegardes différentielles sont négligées ... J'ai suggéré d'utiliser avant:

EDIT: Après le commentaire de Jcolebrand, je tenterai d'expliquer plus

Une sauvegarde différentielle ne prend que des pages qui ont changé. En dehors de tout entretien d'index (qui peut affecter beaucoup de la base de données), seules quelques% de pages changeront pendant une journée. Donc, une sauvegarde différentielle est beaucoup plus petite qu'une sauvegarde complète avant toute compression.

Si vous avez une sauvegarde complète, dites hebdomadaires, vous pouvez alors faire des différentiels quotidiens et les envoyer hors du site. Une sauvegarde complète quotidienne avec des différentiels nécessitera toujours les deux fichiers hors site.

Cela devrait résoudre le problème d'obtenir rapidement des données de A à B, C et D.

Vous devez probablement restaurer à la fois le différentiel complet et le plus récurologique pour obtenir les données les plus récentes, mais vous pouvez peut-être travailler autour de cela avec Norecovery et un fichier veille (je ne l'ai pas essayé avec une restauration diff pour des années depuis que j'étais de la dernière DBA. travail).

Un bonus ajouté est que les sauvegardes DIFF ne sont pas liées aux sauvegardes de journal en cours afin que vous puissiez séparer toute forte disponibilité/docteur DR des exigences "Obtenir des données sur les singes de code".

Je vois des problèmes si vous avez des sauvegardes complètes quotidiennes par politique ou audit, mais la restauration diff peut être appliquée avant que tout journal restaure pour raccourcir le temps de récupération. Contrairement aux sauvegardes, diff et journal restaure interagissent.

J'espère que j'ai couvert la plupart des bases ...

22
gbn

Il existe des produits commerciaux qui peuvent vous aider à mieux compresser vos sauvegardes que la compression native 2008. Les exemples sont redgate sauvegarde , hyperbac , Sauvegarde Idera SQL , Sauvegarde LITESPEEEED .

Ils viennent avec le coût supplémentaire des types de processeurs élevés et de fichiers devront être traités avec des outils extérieurs à la MS expédié. Ceci à l'exception de Hyperbac (maintenant acquis par redgate) compression, qui gère des fichiers de manière transparente et permet de créer des fichiers compatibles Zip (et n'a pas besoin d'outils tiers).

Mais il n'y a pas d'outil qui vous proposera un fichier de la taille que vous obtiendriez en faisant du nettoyage manuel. Veuillez regarder par-dessus l'article de Brent Ozar: ( Comment compresser vos sauvegardes SQL Server , il conseillera de faire les mêmes étapes que vous avez au point no. 2.

13
Marian

Question 1: Existe-t-il un produit de sauvegarde commercial qui donnera une taille de sauvegarde similaire pour supprimer des données non essentielles telles que des index hors de la base de données?

Non. Il y a beaucoup de produits de compression de sauvegarde (Questespeed, sauvegarde SQL de Gate SQL, IDERA SQLSAFE, Hyperbac, etc.), mais toutes fonctionnent en compressant simplement la sortie du processus de sauvegarde régulier de SQL Server. Certains d'entre eux le font de manière délicate - l'option moteur Hyperbac et LITESPEED sont des pilotes de filtres du système de fichiers, ce qui signifie qu'ils interceptent la sortie sur son chemin - mais le résultat final de tous ces produits n'est que de la sortie de sauvegarde compressée.

Question 2. Existe-t-il un script complet pour vider toutes ces données supplémentaires?

Au fil du temps, lorsque vous gardez plus d'historique dans la base de données (4, 5, 8, 10 ans), vous ne voudrez pas arracher toutes les données d'index et la reconstruire de l'autre côté du WAN. Au lieu de cela, vous voulez simplement transférer les données modifiées, et c'est là que l'expédition de journal est disponible.

Tu ne devrais pas faire ça.

Mais si vous voulez vraiment, je veux vraiment faire cela (et non, je ne vous aiderai pas), vous pouvez le faire avec des sauvegardes FileGroup. Configurez vos groupes de fichiers de base de données comme ceci:

  • Groupe de fichiers primaires (obligatoire, mais laissez-le vide)
  • Clusteredindex FileGroup (mettez vos index clusters ici)
  • Groupe de fichiers extrêmes (mettre tout le reste ici)

Commencez à faire des sauvegardes de FileGroup compressées des deux premiers et copiez-les plus petits à votre DR Server. Vous pouvez utiliser SQL Server 2008 Capacité de sauvegarde du groupe de secours et restauration Pour restaurer simplement les groupes de fichiers principaux et clusteredindEx, puis ils seront immédiatement disponibles pour interrogation. Ils ne vont pas vraiment être exécutifs avant d'avoir ce groupe de fichiers extrêmement présent, mais il y a un tour méchant pour cela aussi - dans le livre Book de plongées profonds MVP , il y a un chapitre sur la modification des tables système dans l'ordre Faire disparaître le groupe de fichiers extrêmement de cycle et tous les index associés disparaissent. Cet astuce est dangereux, totalement non pris en charge et un enfer d'une mauvaise idée - mais hé, vous l'avez demandé.

12
Brent Ozar

Je recommande de passer à quelque chose comme Log Shipping. Essentiellement, si vous avez le choix d'envoyer 30 concerts sur 24 heures contre 24 heures à la fin de la journée dans une fenêtre de temps plus courte, la vitesse du réseau sera moins un problème pour vous.

Votre Devs sur le réseau lent sera également capable de télécharger des fichiers de taille plus facilement, via FTP ou quel que soit le processus que vous avez mis en place. Ils pourraient également configurer des emplois qui téléchargent tout au long de la journée.

En plus de la compression SQL Server, vous pouvez implémenter un outil 3ème partie, tel qui a une compression plus élevée comme LIDESpeed ​​ou redgate SQLbackup.

De plus, du côté réseau, vous pouvez installer des périphériques réseau pouvant optimiser votre débit sur le site du Dr. Dans le passé, j'ai utilisé avec succès l'appareil de rivière pour obtenir une sauvegarde de 90 Go de FL to VA en moins de 3 heures.

Une autre option serait de sauvegarder des groupes de fichiers spécifiques, à l'exclusion des index, etc., mais vous êtes toujours bloqué par des index en cluster et en fonction de votre structure de base de données, vous pouvez obtenir plus de coûts/tracas que de bénéficier de cette approche.

Merci

10
johndacostaa

J'utiliserais une réplication transactionnelle SQL. Votre charge initiale prendrait du temps, mais une fois que vous vous êtes levé et que vous êtes en cours d'exécution, vous ne pouvez envoyer que sur les informations que vous souhaitez. Par exemple, si vous n'avez que 3 ou 4 tables qui sont mises à jour, vous ne pouvez envoyer que ces 3 ou 4 tables.

Vous pouvez également choisir ce que vous voulez expédier. Les indices de FK, de clusters/non clusters, de schémas de partition de table, de PROC stockés et de tonnes plus.

http://www.sql-server-performance.com/2010/transactional-replication-2008-R2/

Si ce n'est pas une option, vous pouvez utiliser RedGate SQL Backup - http://www.red-gate.com/products/dba/sql-BackUp/ . J'ai déjà utilisé cela avant et j'ai reçu des niveaux de compression jusqu'à 90%. Beaucoup plus petit que les SQL.

4
SqlSandwiches