SQL Server (2005/2008): Schneidet die vollständige Sicherung das Protokoll im vollständigen Wiederherstellungsmodus ab

41

Ich habe gerade eine Menge MSDN-Dokumentation gelesen und denke, ich verstehe die verschiedenen Wiederherstellungsmodelle und das Konzept einer Sicherungskette. Ich habe noch eine Frage:

Verkürzt eine vollständige Datenbanksicherung das Transaktionsprotokoll (im vollständigen Wiederherstellungsmodus)?

  • Wenn ja: Wo steht das in der MSDN? Ich konnte nur feststellen, dass nur BACKUP LOG das Protokoll abschneidet.

  • Wenn nein, warum? Da mit einer vollständigen Datenbanksicherung eine neue Sicherungskette gestartet wird, welchen Sinn hat es, die Transaktionen, die vor der vollständigen Sicherung abgeschlossen wurden, im Protokoll aktiv zu halten?

Heinzi
quelle

Antworten:

43

Nein - definitiv nicht. Das einzige, was das Löschen / Abschneiden des Protokolls in den Wiederherstellungsmodellen FULL oder BULK_LOGGED ermöglicht, ist eine Protokollsicherung - keine Ausnahmen. Ich hatte diese Auseinandersetzung vor einiger Zeit und veröffentlichte einen langen und detaillierten Blog-Beitrag mit einer Erklärung und einem Skript, mit dem Sie sich bei Missverständnissen in Bezug auf das Protokoll und die Protokollsicherungen beweisen können : wie Sie sich selbst überzeugen können .

Fühlen Sie sich frei, weitere Fragen zu beantworten. Übrigens - siehe auch den langen Artikel, den ich für das TechNet-Magazin über das Verständnis von Protokollierung und Wiederherstellung in SQL Server geschrieben habe .

Vielen Dank

Paul Randal
quelle
Vielen Dank, Sir, für Ihre SUPER ANTWORT und den Artikel, in dem ich über eine Million Fragen beantwortet habe.
M.Ali
13

Bei einer vollständigen Sicherung wird das Protokoll NICHT gekürzt. Sie müssen eine Sicherungsprotokolloperation ausführen. Bei einer vollständigen Sicherung wird die Protokollkette NICHT zurückgesetzt - dies würde die Replikation / den Protokollversand usw. völlig vermasseln.

Sie müssen sich genau ansehen, wie SQL Server Sicherungen durchführt, müssen jedoch wissen, dass während des Flugs ausgeführte / lange laufende Transaktionen nicht in der Sicherung enthalten sind (andernfalls wird die Sicherung möglicherweise nie abgeschlossen) Online-Datenbank macht garantiert die nächste Log-Sicherung überflüssig.

http://msdn.microsoft.com/en-us/library/ms175477.aspx

Matt Rogish
quelle
8

Nach meinem Verständnis ist das einzige, was das Transaktionsprotokoll abschneidet, eine Protokollsicherung .

Bei einer vollständigen Sicherung wird nur so viel Protokoll kopiert, dass es transaktionskonsistent ist, da der Sicherungsvorgang einige Zeit in Anspruch nimmt. In dieser Zeit haben sich möglicherweise die kopierten Seiten geändert.

Sie benötigen weiterhin Ihre Protokollsicherungen für die Wiederherstellung zu einem bestimmten Zeitpunkt.

Ich habe keinen MSDN, zu dem ein Link erstellt werden kann, aber ich kann Sie mit dem Blog von Paul Randal verknüpfen , der als Entwickler im SQL Server-Team DBCC CHECKDB und Teile der Onlinedokumentation geschrieben hat.

Er beantwortet auch Fragen in diesem Forum, so dass das eine noch bessere Autorität wäre als Informationen aus zweiter / dritter Hand von mir :)

Nick Kavadias
quelle
5

Menschen haben oft ein Missverständnis über die vollständige Sicherung und Protokollsicherungen. Damit das Backup im FULLBackup-Wiederherstellungsmodell funktioniert , müssen die T-Logs verwendet werden, da während der Backups möglicherweise noch Transaktionen in der Datenbank ausgeführt werden (es sei denn, Sie führen COLDbeim Herunterfahren der Datenbank ein sogenanntes Backup durch). Oracle verwendet dasselbe Konzept, wenn sich eine Datenbank im ARCHIVELOGModus befindet. Die Reihenfolge eines Backups läuft folgendermaßen ab:

  1. Backup starten - alle Aktionen in realen Dateien aussetzen und in T-Logs schreiben.
  2. Sicherung durchführen - alle Transaktionen werden fortgesetzt, aber nicht in echte Dateien geschrieben, sondern in T-Logs
  3. Sicherung beenden - Schreiben von Datenbanktransaktionen in echte Dateien fortsetzen.
  4. Wenn nötig, spülen Sie die in den T-Protokollen enthaltenen Daten in die realen Dateien.

Dies ist der Grund, warum T-Logs nicht standardmäßig abgeschnitten / verkleinert werden, da sie ein wesentlicher Bestandteil der Transaktionsfortsetzung während der Sicherungsphase sind.

Peter
quelle
1

Verwechseln Sie das Kürzen des Protokolls nicht mit dem Verkleinern des Protokolls.

  • TRUNCATE bedeutet, die Transaktionen im Protokoll zu entfernen, die vor dem letzten Prüfpunkt liegen (der Prüfpunkt ist, wenn Transaktionen in die Datenbank selbst geschrieben werden). Dies erfolgt mit dem Befehl BACKUP.

  • Mit SHRINK wird die tatsächliche Größe der Protokolldatei verringert. Dies geschieht mit DBCC-Befehlen.


quelle
1

Grundsätzlich müssen Sie das Transaktionsprotokoll nicht jedes Mal automatisch verkleinern, da Transaktionsprotokolle Speicherplatz benötigen. Wenn Sie das Protokoll automatisch kürzen, bleibt die Größe nahezu gleich.


quelle