Warum ist es so wichtig, Ihr Transaktionsprotokoll zu sichern?

14

Derzeit implementieren wir eine Sicherungslösung für einen Client und dessen ERP-Lösung verwendet SQL Server.

Die ERP-Lösung wurde von einem anderen Unternehmen eingerichtet. Und sie sagen mir, dass es sehr wichtig ist, das Transaktionsprotokoll zu sichern und zu kürzen.

Ich habe ein wenig in diesem Transaktionsprotokoll nachgelesen und verstehe nicht, warum dies so wichtig ist, wenn ich ohnehin bereits eine Sicherung des gesamten Computers durchführe (wir verwenden ArcServe UDP, das SQL Server kennt und verwendet) VSS). Nach meinem Verständnis kümmern sich Bereinigungsaufgaben auf der SQL Server-VM bereits um das Abschneiden des Protokolls. UDP ermöglicht jedoch auch das Abschneiden des SQL Server-Protokolls.

Nach meinem Verständnis kann das Transaktionsprotokoll zum Wiederherstellen beschädigter Datenbanken verwendet werden, da es sich um ein Protokoll aller Transaktionen handelt. Aber ich habe bereits eine stündliche Sicherung der gesamten Datenbank. Warum ist mir das wichtig?

Der Hochstapler
quelle
Off topic here - dafür gibt es eine Seite: dba.stackexchange.com
TomTom
@TomTom: [dba.se]Datenbankadministratoren ;)
Der Hochstapler
1
Ja. Und jetzt stellen Sie fest, dass die Datenbankadministratoren normalerweise Sicherungsstrategien für Datenbanken erstellen. Zu diesem Bereich gehört also eine datenbankspezifische Frage - wie Sicherungsstrategien.
TomTom
1
@ TomTom: Entschuldigung, ich bin sehr neu in Stack Exchange. Ich habe eindeutig falsch verstanden, was "Enterprise Storage, Backup und Disaster Recovery" umfasst. Danke, dass du mir den Weg gezeigt hast.
Der Hochstapler
Das hier ist das allgemeine Forum. Datenbanken sind so ein riesiger Bereich, dass sie außerhalb des noch allgemeineren Serverfehlers eine eigene Unterposition haben.
TomTom

Antworten:

11

Sie müssen dies nur tun, wenn Ihr DB-Wiederherstellungsmodus auf "voll" eingestellt ist. Wenn es auf "einfach" gesetzt ist, müssen Sie keine Sicherung des Transaktionsprotokolls erstellen. Aber achten Sie auf den Unterschied zwischen diesen beiden Optionen!

Zuallererst: Wenn Sie den DB zu einem bestimmten Zeitpunkt wiederherstellen möchten, müssen Sie den Modus "Voll" verwenden. (Ich denke, Sie können das Timing so genau einstellen, dass Sie sogar die Millisekunden für den Wiederherstellungspunkt angeben können.) Im "einfachen" Modus können Sie nur zur letzten vollständigen Sicherung zurückkehren .

Wenn Sie Ihr Transaktionsprotokoll nicht sichern / kürzen, wächst es die ganze Zeit (im Vollmodus). Ich habe Datenbanken gesehen, bei denen die .trn-Datei mehr als doppelt so groß war wie die Datenbank selbst. Dies hängt davon ab, wie oft Änderungen an der DB vorgenommen wurden.

Ein weiterer Punkt ist, dass eine Protokollsicherung normalerweise schneller ist als eine vollständige Sicherung.

Daher denke ich, dass Ihr Backup-Plan, jede Stunde ein vollständiges Backup zu erstellen, nicht optimal ist. Aber es hängt von Ihrer Situation ab:

Wenn Sie sagen: Okay, wenn ich die DB bis zur letzten vollen Stunde wiederherstellen kann, ist alles in Ordnung. -> Sie können auch darüber nachdenken, den Wiederherstellungsmodus auf "einfach" zu setzen, wenn Sie das vollständige Backup stündlich aufbewahren möchten.

Meiner Meinung nach ist es eine bessere Idee, am frühen Morgen eine vollständige Sicherung zu erstellen und dann stündlich eine Transaktionsprotokollsicherung durchzuführen. Es sollte viel schneller sein und Sie können zu jedem gewünschten Zeitpunkt wiederherstellen. Und auch Ihre .trn-Datei wird nicht zu groß ...

Hoffe das hilft.

frupfrup
quelle
Das ist sehr hilfreich, danke. Da ich aber eine stündliche Sicherung des gesamten Servers habe, habe ich auch das Transaktionsprotokoll und kann die Datenbank zu jedem Zeitpunkt innerhalb dieser Stunde wiederherstellen, oder? Die durchgeführten Sicherungen sind inkrementell und sollten daher übermäßig lange dauern, als wenn ich nur das Protokoll sichern würde.
Der Hochstapler
2
@OliverSalzburg Wenn Sie ein Transaktionsprotokoll haben, müssen Sie es sichern und abschneiden, da es sonst übermäßig anwächst. Wenn Sie in den einfachen Modus wechseln, haben Sie nicht das Transaktionsprotokoll, um zu einem bestimmten Zeitpunkt zu wechseln, und es gehen bis zu einer Stunde Daten verloren.
James Ryan
@OliverSalzburg kommt drauf an. Was meinen Sie mit "stündlicher Sicherung des gesamten Servers"? Es hört sich so an, als würden Sie kein SQL-Backup durchführen, oder? Wenn dies korrekt ist und Sie so etwas wie eine Snapshot-Sicherung des gesamten Servers / der gesamten virtuellen Maschine durchführen, besteht möglicherweise das Problem, dass Ihre Datenbank in der Sicherung nicht konsistent ist. Sie sollten etwas mit VSS verwenden. Aber ich sprach auch mit Experten, die sagten, dass ich Backuptools nicht wirklich vertrauen sollte, dass sie SYSTEM UND DB in einem konsistenten Zustand sichern ... also würde ich System- und DB-Backup trennen (wenn dies in Ihrer Umgebung möglich ist)
frupfrup
ADDON: Ich glaube nicht, dass .trn Log in einer normalen vollständigen SQL-Sicherung enthalten ist ... In der Sicherung ist nur die Datenbank mit allen Daten enthalten. Aber im Transaktionsprotokoll sind die ÄNDERUNGEN der DB. Ihre Datenbank funktioniert ohne diese Informationen. Also denke ich nicht, dass sie enthalten sind. Dies ist ein weiterer Grund, warum Sie das Protokoll sichern müssen, wenn Sie die Funktion verwenden möchten, um zu einem bestimmten Zeitpunkt zurückzukehren. Aber jetzt wundere ich mich ... du hast mich ein bisschen verwirrt :-)
frupfrup
1
@OliverSalzburg Basiert auf Ihrem letzten Kommentar. Wenn Ihr Backup-Tool Optionen zum Abschneiden und Wiederherstellen zu einem bestimmten Zeitpunkt anbietet, werden die Transaktionsprotokolle bereits gesichert, ohne dass dies explizit angegeben wird.
Jason Cumberland
3

Gut. Dies ist Ihnen wichtig, da das Transaktionsprotokoll so lange wächst, bis es den gesamten verfügbaren Speicherplatz belegt, wenn Ihr Wiederherstellungsmodell auf "Voll" eingestellt ist und Sie das Transaktionsprotokoll nicht mit der SQL-Sicherung (und nicht mit der Serversicherung) sichern. (Ich habe einmal gesehen, wie ein kleinerer Kollege SQL Server auf dem Systemlaufwerk installiert und das Transaktionsprotokoll nie gesichert hat. Es hat Windows gefressen .)

Ja, es wird auch zu einem bestimmten Zeitpunkt wiederhergestellt. Auf die Minute genau. Wie Twinkles sagt, ja, Leute, die Tische und ähnliches fallen lassen.

Ich weiß nicht, was Sie für Ihre stündliche Sicherung der gesamten Datenbank verwenden und ob es sich um dasselbe Produkt handelt, das Sie für die gesamte Maschine verwenden. In diesem Fall wird eine nicht SQL-fähige Sicherungslösung für Wiederherstellungen nicht unterstützt. Die Zeit, die VSS benötigt, um die MDF- und LDF-Dateien zu kopieren, kann beispielsweise zu einem internen Zeitstempel-Konflikt führen.

Katherine Villyard
quelle
1

Wir verwalten auch mehrere ERP-Systeme. Und das Problem ist oft, dass es nachts oft lange laufende Batch-Jobs gibt, die Daten mit anderen Systemen synchronisieren. Und sie dauern manchmal eine Stunde oder länger. Im Falle eines Absturzes müssen Sie also zu einem Punkt springen, an dem Sie konsistente Daten haben. (Das heißt, zwischen zwei Batch-Jobs.) Wenn Sie sich nur die Uhrzeit ansehen, wissen Sie möglicherweise nicht immer genau, wie der Status der Datenbank zu diesem Zeitpunkt war.

Aber natürlich kommt es auf die Situation an. Wenn Sie keine automatisierten Jobs usw. haben, können Sie eine stündliche Sicherung durchführen.

Raffael Luthiger
quelle
1

Dafür gibt es mehrere Gründe:

  1. Ein Datenbanksystem ist normalerweise ausgelastet und führt möglicherweise Tausende von Transaktionen pro Sekunde aus. Die Daten können auf mehrere Dateien in verschiedenen Dateisystemen verteilt sein. Es ist nicht einfach sicherzustellen, dass sich die Datenbank nach dem Wiederherstellen in einem konsistenten (auch als verwendbar bezeichneten) Zustand befindet. Wenn Ihre Backup-Lösung der Aufgabe gewachsen ist, großartig, aber Sie sollten sich diesbezüglich sicher sein, bevor Sie Ihren Job darauf setzen.
  2. Ein Beispiel: Jemand lässt versehentlich eine Tabelle mit wichtigen Daten fallen. Wenn Sie über eine Datenbanksicherung mit der Fähigkeit zur Wiederherstellung zu einem bestimmten Zeitpunkt verfügen, können Sie die Daten schnell wiederherstellen, ohne das gesamte System wiederherstellen zu müssen.
  3. Wenn sich die Datenbank im vollständigen Wiederherstellungsmodus befindet, wird das Transaktionsprotokoll von SQL Server erweitert. Der Speicherplatz im Transaktionslog wird nur wiederverwendet, wenn das Transaktionslog gesichert wurde. Wenn Sie das Transaktionsprotokoll nicht regelmäßig sichern, füllt sich Ihr Dateisystem, bis kein Speicherplatz mehr verfügbar ist. An diesem Punkt wird alles sofort zum Stillstand kommen , da keine neuen Transaktionen gestartet werden können.
Funkelt
quelle
1

Wenn Ihre Datenbank über das hinauswächst, was Sie in einer Stunde sichern können, benötigen Sie ein anderes Modell.

Eine vollständige Sicherung Ihrer Datenbank schneidet Ihre Protokolle ab, muss jedoch "SQL-fähig" sein, da in diesem Szenario die Sicherungssoftware dem SQL Server mitteilt, was gesichert wurde und was gekürzt werden muss.

Wenn Sie über eine Datenbank im Wiederherstellungsmodell "Vollständig" verfügen, wird das Transaktionsprotokoll unbegrenzt vergrößert, bis Sie eine vollständige SQL-fähige Sicherung erstellen.

Wiederherstellung ist hier wirklich das Problem, nicht Sicherung. Und es ist keine technische Entscheidung, sondern eine Geschäftsentscheidung!

Wenn es Ihren Geschäftsinhabern in Ordnung ist, eine Stunde oder mehr ihrer Datenbanktransaktionen zu verlieren (was SEHR schwierig oder unmöglich zu wiederholen ist!), Funktioniert Ihr Modell. Wenn das System stundenlang nicht funktioniert, während Sie die gesamte Datenbank aus dem Backup wiederherstellen, funktioniert Ihr Modell.

Wenn Ihr Unternehmen das ERP-System jedoch als ein kritisches Asset für den Betrieb betrachtet (oder nicht alle?), Ist es eine Geschäftsentscheidung, eine maximal zulässige Wiederherstellungszeit (auch als RTO (Recovery Time Objective) bezeichnet) für Ihre kritischen Services festzulegen.

Außerdem müssen die Geschäftsinhaber oder Systembeteiligten definieren, wie viele Daten sie riskieren, bei einem Vorfall verloren zu gehen, auch bekannt als RPO (Recovery Point Objective).

Die Antwort auf Ihre Frage könnte lauten: "NEIN Daten können verloren gehen! Das ERP-System muss rund um die Uhr verfügbar sein!" ... von dem wir alle wissen, dass es höchstwahrscheinlich nicht wirtschaftlich ist. Wenn Sie die mit dem Aufbau eines solchen vollständig redundanten Nonstop-Systems verbundenen Kosten angeben, erhalten Sie eine vernünftigere Zahl.

Der Punkt ist, wenn Sie vermeiden können, dass Transaktionen verloren gehen, sparen Sie Ihrem Unternehmen möglicherweise Hunderte oder Tausende von verlorenen Arbeitsstunden. Es bedeutet in jedem Unternehmen eine RIESIGE Ersparnis und wächst mit der Größe Ihres Unternehmens ...

tplive
quelle
+1 für die Wiederherstellung ist entscheidend, nicht die Sicherung. und Einbeziehen der Geschäftsbenutzer in die Entscheidung.
RateControl
1

Alle hatten großartige Reaktionen darauf, aber ich möchte noch eine wichtige Anmerkung hinzufügen ... oder zwei.

Es ist sehr wichtig, die Details der SQL Server-Wiederherstellungsmodelle und die Geschäftsanforderungen für Datenverlust zu kennen. In diesem Fall müssen Sie jedoch unbedingt wissen, wie Ihr Sicherungsprodukt mit SQL Server funktioniert. (Basierend auf den obigen Kommentaren klingt es so, als würden Sie Datenträgervolumes über eine VSS-Kopie sichern, was bedeutet, dass möglicherweise zusätzlich SQL Server-Sicherungen erforderlich sind oder nicht.)

Nachdem Sie kürzlich ein ähnliches Produkt getestet haben, sind einige der wichtigen Punkte, die Sie möglicherweise erfragen müssen:

  • Wie werden Wiederherstellungen bis zu einem bestimmten Zeitpunkt für eine Datenbank bei vollständiger Wiederherstellung durchgeführt?
  • Wie wird die erste Sicherung für eine neue Datenbank bei der vollständigen Wiederherstellung behandelt?
  • Benötigt das Sicherungsprodukt SQL Server-Protokollsicherungen, um bis zu einem bestimmten Zeitpunkt wiederhergestellt zu werden? (In meinem Fall war die Antwort ja.)
  • Kann Ihre Speicherinfrastruktur das Datenvolumen für die VSS-Kopien / -Differentiale (in einem bestimmten Intervall) zusätzlich zur normalen SQL-Last verarbeiten?

Hoffe das ist hilfreich.

Die Erfahrungen, die mein Team mit unserer kürzlich durchgeführten Evaluierung gemacht hat, lieferten einige sehr interessante Antworten auf die obigen Fragen. Sicher ist, dass Backups mit einem VSS-Backup-Produkt für uns komplexer sind.

Scott Ciulei
quelle
0

Wie viele andere bereits gesagt haben, besteht die Gefahr, dass Sie keine gültige Sicherung haben, wenn Sie ein Drittanbieter-Tool zum Sichern / Erstellen eines Snapshots der VM oder des Speichers verwenden. Alle Tools von Drittanbietern, die SQL Server-Sicherungen verwalten, implementieren SQL Server und stellen mithilfe von VSS eine Verbindung her. Auf diese Weise wird SQL Server aufgefordert, alle E / A-Vorgänge für die Datendateien stillzulegen, damit ein konsistenter Snapshot erstellt werden kann. Wenn nicht, können Sie viele Transaktionen in verschiedenen Status haben, und eine Wiederherstellung wird nicht wissen, ob diese Transaktionen vorwärts oder rückwärts gerollt werden können.

Ich habe nicht mit allen VM / Storage-Snapshot-Tools von Drittanbietern gearbeitet, aber diejenigen, mit denen ich gearbeitet habe, waren nie in der Lage, einen Snapshot-Speicher zu erstellen, in dem sich Systemdatenbanken befanden. SQL Server kann diese Datenbanken nicht stilllegen. Sie ALLE haben diese Datenbanken in einer gestreamten Weise gesichert - dh sie haben die BACKUP DATABASE-Befehle ausgegeben und dann die Sicherungsdatei selbst abgefangen.

Darüber hinaus wächst das Transaktionsprotokoll, wie viele bereits erwähnt haben, so lange, bis kein Platz mehr auf der Festplatte vorhanden ist, wenn Sie sich im vollständigen Wiederherstellungsmodell befinden und keine regelmäßigen BACKUP LOG-Anweisungen mehr ausgeben.

Die eigentliche Frage, die Sie stellen müssen, und die ich oben möglicherweise übersehen habe ... haben Sie mehrere Male erfolgreich aus diesen Sicherungen wiederhergestellt und sind mit der Konsistenz der Daten in diesen Wiederherstellungen zufrieden. Persönlich, auch das würde mir nicht ausreichen, es fühlt sich immer noch wie ein Würfelwurf an, und das ist etwas, was ein guter DBA niemals braucht, wenn es um Backup und Wiederherstellung geht.

jfay_dba
quelle
0

Erkennen Sie, dass Transaktionsprotokolle nicht einfach ein Wiederherstellungsmechanismus sind. Eine ordnungsgemäße Protokollpflege kann auch eine wichtige Rolle für die Gesamtleistung der Datenbank (dh den Transaktionsdurchsatz) spielen.

Das häufige Sichern Ihrer Protokolldateien hat folgende Aufgaben:

  1. Dies verringert die Anzahl der VLFs in den physischen Protokolldateien, was der Leistung zuträglich ist.
  2. Sie sind besser vorbereitet, die Protokollsicherungen für den Fall zu verwenden, dass Sie eine Datenbank wiederherstellen müssen.
  3. Es ist viel schneller als ein vollständiges Backup

Wenn Sie keine vollständige Sicherung mehr stündlich durchführen können, sind Sie sich nicht sicher, inwieweit Sie von häufigeren Protokollsicherungen profitieren würden. Nach meinem Verständnis sichert eine vollständige Sicherung auch so viel des Protokolls, wie erforderlich ist, um eine vollständige Wiederherstellung sicherzustellen.

Wenn Ihre App dagegen zwischen Ihren stündlichen vollständigen Sicherungen Tonnen von Transaktionen generiert, erklärt dies möglicherweise, warum die ursprünglichen Entwickler eine detailliertere Protokollpflege vorgeschlagen haben. Viele Transaktionen können die VLF-Anzahl in Ihren Protokollen erhöhen, was zu Leistungseinbußen führen kann, bis das Protokoll abgeschnitten wird. Ich habe gesehen, dass dies als "Abfrage-Timeout abgelaufen" -Fehler in einer Anwendung ausgedrückt wird (kurz bevor sie hängt).

Empfehlungen zur Pflege des Transaktionsprotokolls werden in diesem Artikel 8 Schritte zur Verbesserung des Transaktionsprotokolldurchsatzes ausführlich beschrieben . Darüber hinaus erwähnt dieser Artikel Top Tips für eine effektive Datenbankwartung eine etwas willkürliche VLF-Anzahl (<200), die für mich sehr gut funktioniert hat.

Nerraga
quelle
0

Andere Leute haben bereits die meisten Gründe für ein Translog-Backup usw. angegeben. Es scheint Zweifel daran zu geben, warum dies eine gute Strategie ist, wenn Sie bereits ein Backup des Servers durchführen.

Für mich haben sich ein paar gute Gründe ergeben, die nicht oben stehen. Was passiert, wenn Ihre Drittanbieter-App keine Sicherung erstellt, die Sie wiederherstellen können? Haben Sie versucht, Ihr Backup wiederherzustellen? Was ist mit einem neuen Server, den Sie gerade aus Ihren Vorlagen erstellt haben (denken Sie an DR)? Was ist mit einem anderen Server in Ihrer Domain, der eine andere Sortierung hat? oder SQL-Instanz?

Ich mache aus keinem anderen Grund redundante Backups als manchmal, wenn Ihre Drittanbieter-App nicht der schnellste Weg zur Wiederherstellung ist. Manchmal ist auch der Speicher betroffen, in dem Ihre Drittanbieter-App speichert, oder er ist aus eigenen Gründen beschädigt.

Matthew
quelle