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?
quelle
[dba.se]
→ Datenbankadministratoren ;)Antworten:
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.
quelle
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.
quelle
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.
quelle
Dafür gibt es mehrere Gründe:
quelle
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 ...
quelle
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:
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.
quelle
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.
quelle
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:
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.
quelle
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.
quelle