web-dev-qa-db-fra.com

Journal de transaction et miroir - à la recherche d'une explication la plus stupide possible

Tout d'abord, je dois admettre que je lutte avec le concept de journal de transaction. Je veux dire - je comprends que c'est un journal de toutes les transactions sur la base de données, mais lorsqu'il s'agit de la mettre correctement dans le contexte dans une tâche, je manque évidemment quelque chose. Donc, à quiconque répondra à la question - s'il vous plaît n'hésitez pas à développer la théorie derrière le journal des transactions.

La question principale est - j'ai la base de données SQL Server 2008 et 2 Go que j'ai besoin de miroir (12 Go de journal de transaction). Si je ne reflétais pas cette base de données, je suppose que je pouvais basculer en mode simple ou tronquer le journal après la sauvegarde. Mais dans ce cas - que dois-je faire si je souhaite garder ce journal de transaction sous contrôle? Si je comprends, je dois conserver ce journal de transaction entière si je souhaite pouvoir facilement refléter la base de données (juste faire une sauvegarde complète).

Y a-t-il quelque chose à ce sujet? Idéalement, j'aimerais qu'il soit possible de faire sauvegarde qui garde les deux MDF et LDF dans 1 fichier à chaque fois et après la sauvegarde est effectué le journal de transaction (LDF) sur la base de données est réduit à 0. Le problème avec cette Scénario sont des sauvegardes incrémentielles - si mon premier journal tronqué de sauvegarde tronqué, je suppose que la deuxième sauvegarde devait se référer en premier si je veux faire la mise en miroir plus tard (c.-à-d. Je serais coincé avec le groupe de fichiers au lieu d'une seule).

Alors, quelqu'un peut-il vous éclairer sur ce sujet? Je comprends que j'essaie de remplir de nombreux trous ici et que mes "solutions" proposées ne soient peut-être pas les meilleures, mais j'apprécie sincèrement si quelqu'un peut me pousser dans la bonne direction sur les journaux de transaction, comment ils ont une incidence sur la mise en miroir et la meilleure pratiques avec ces deux.

8
nikib3ro

Le journal des transactions est une méthode importante pour restaurer votre base de données de manière spécifique. Si vous avez une grande base de données> 500 Go et si vous devez restaurer votre base de données à partir d'une sauvegarde complète, cela coûtera beaucoup de temps. De plus, si vous sauvegardez votre base de données à chaque fois, réfléchissez à la durée de vie de cette sauvegarde.

Un concept très facile pour SQL Server peut être: définir le modèle de récupération de votre base de données complète

Créer un plan de maintenance (1) dans SQL Server:

  • Est-ce que Fullbackup chaque semaine peut-être dans D:\Yourbackup\Fulldbbackup.bak
  • Faites la sauvegarde différentielle tous les deux jours dans D:\Y VOTREBACKUP\DIFFBACK.BAK
  • Chaque 2 Houers sauvegardez votre transaction Connexion D:\Y Vourbackup\Tranlogbackup.trn

Créer un plan de maintenance (2) dans SQL Server:

  • Supprimer tous les fichiers plus anciens 8 jours à partir de D:\Yourbackup * .bak
  • Supprimer tous les fichiers plus anciens 3 jours de D:\Yourbackup * .trn

Dans ce cas, vous êtes en mesure de récupérer votre base de données dans une période spécifique, très rapide très rapide. SQL Server gérera automatiquement vos fichiers "sauvegarde", les fichiers plus anciens seront supprimés après votre plage de temps spécifique.

Je vous suggère de lire sur le journal de transaction SQL Server ici:

http://www.sqlservercenter.com/articles/design+and+theary/63350/

Pour utiliser les plans de maintenance dans SQL Server, demandez simplement à Bing/Google: D

vous devriez construire un petit test DB et tester cela avant d'aller en production

5
user9399

Afin de tirer parti de la mise en miroir, vous devez avoir la base de données en mode de récupération complète et devra prendre des sauvegardes de journal de transaction afin de conserver le fichier journal de la croissance. Si vous n'avez pas besoin des sauvegardes de journal, veuillez les purger après la quantité de plusieurs heures avec un plan de maintenance, mais elles doivent être prises.

Pour nettoyer l'environnement, vous devez supprimer la mise en miroir, commuter le mode de récupération en simple, réduisez la taille du fichier journal via la version recommandée Paul Randal Way , réactivez le mode de récupération complète, configurez-vous. sauvegardes, puis réinitialiser votre miroir. Vous pouvez essayer d'obtenir la taille du journal lorsque la mise en miroir est en place, mais il sera bien plus facile de le supprimer en premier. 1 Go ne devrait pas être trop mauvais d'une DB pour réinitialiser.

3
Jason Cumberland