Wenn ich das Sicherungsskript von Ola Hallengren auf meinen Servern bereitstelle, setze ich den @CleanupTime
Parameter für Protokollsicherungen immer auf Null. Auf diese Weise wird bei jeder Ausführung des Protokollsicherungsjobs nach Protokollsicherungsdateien gesucht, die älter als die letzte vollständige Sicherung sind, und diese werden gelöscht. Dies gilt jedoch auch für vollständige COPY_ONLY
Backups! Der Protokollsicherungsjob sollte nur nach der letzten nicht COPY_ONLY
vollständigen Sicherung suchen , um alte Protokollsicherungsdateien zu löschen.
Ich frage mich nur, ob ich der einzige bin, der darauf gestoßen ist, oder ob das, was ich vorschlage, Sinn macht. Wenn ich am mittleren Tag eine vollständige Nur-Kopie-Sicherung durchführen muss, um eine TEST-Datenbank mit IDK zu aktualisieren, sollte diese Nur-Kopie-Sicherung die reguläre tägliche Sicherungssequenz nicht beeinflussen. Lassen Sie mich bitte Ihre Gedanken wissen.
quelle
Antworten:
Teil II von II (musste meine Antwort teilen)
Mach es besser
In Anbetracht Ihres von Ihrem Unternehmen definierten RPO und RTO möchten Sie jetzt möglicherweise den Parameter von
@CleanupTime
auf etwas Höheres als ändern0
. Warum? Da der Wert0
funktioniert nur zusammen mit dem eingebauten in Fail-Safe - Mechanismus.Verwenden wir die folgende Zeitleiste:
Zu einem bestimmten Zeitpunkt werden Ihre Transaktionsprotokollsicherungen (und vollständigen Sicherungen?) Auf ein Netzwerklaufwerk kopiert und von dort mithilfe einer Sicherungslösung gesichert, möglicherweise kombiniert mit einer Art Band- und / oder Festplattenspeicher. Sobald die erste
BACKUP LOG ...
nach der letzten auftritt, sindBACKUP DATABASE ...
Ihre vorherigenBACKUP LOG ...
Dateien verschwunden ...Fragen, die Sie sich stellen sollten
Wenn Sie sich die obigen Fragen ansehen, sollten Sie eine andere Bereinigungszeit verwenden (z. B.
@CleanupTime=48
), um Transaktionsprotokollsicherungen im Wert von zusätzlichen Stunden auf den Festplatten Ihres Datenbankservers zu speichern.Leistungen
COPY_ONLY
Backup erstellenBACKUP DATABASE ...
COPY_ONLY
BackupAufbau eines soliden Fundaments
Zu jedem Zeitpunkt wird etwas fehlschlagen. Sie müssen sicherstellen, dass Sie eventuelle Fehler auf der ganzen Linie berücksichtigen können, und den Stakeholdern dennoch garantieren, dass Ihre Lösung 99, .....% narrensicher ist.
Wie ich es mache
Arbeiten mit Ola-Lösung ist eine absolute Brise, WENN Sie einen oder zwei Gedanken zu machen , wie Sie wollen eine Datenbank erholen und auf der Grundlage Ihrer Unternehmen RPO und RTO.
Meine persönliche Implementierung besteht darin, die folgenden Zeitpläne / Aufbewahrungsrichtlinien zu haben:
Produktionssysteme
Testsysteme
Das Testsystem wird während der Produktionsstunden gesichert. Dies kann 10:00 Uhr morgens oder 14:00 Uhr nachmittags für vollständige und xx: 15 für die Transaktionsprotokollsicherungen sein.
Warum mache ich das so?
... oder meine Gedanken hinter diesen Entscheidungen ...
Durch die Verteilung der Sicherungszeiten auf verschiedene Steckplätze verteile ich die Festplatten-E / A gleichmäßig auf den Speichersystemen. Keine Zusammenfassung massiver E / A auf der Festplatte während der vollen Stunden (FULL) oder vierteljährlichen Stunden (TLOG).
Ich unterscheide aufgrund der Größe der Datenbanken zwischen SAP und Nicht-SAP.
Testsysteme dürfen den Speicher tagsüber überladen. Keine Auswirkungen auf die Hochleistung.
Die DIFF- und FULL-Sicherungen werden vor dem Start der Bandsicherungen durchgeführt und normalerweise vor dem Start der Bandsicherungen beendet.
Die Aufbewahrungsrichtlinien ermöglichen es mir, die vom Unternehmen festgelegten RTO und RPO zu erreichen, selbst wenn die (Band-) Sicherungslösung einen Tag lang nicht verfügbar ist.
Backups funktionieren weiterhin und sind mit RTO und RPO kompatibel, selbst wenn das Netzwerk (als Ganzes oder nur teilweise) einen Tag lang nicht verfügbar ist.
Dein Denkprozess
Ihre
@CleanupTime
Einstellung beruhte wahrscheinlich auf einem falschen Verständnis von Olas Skript.quelle
Teil I von II (musste meine Antwort teilen)
Hier gibt es ein oder zwei Dinge, über die man nachdenken muss. Meiner Meinung nach haben Sie möglicherweise eine Abkürzung im Denkprozess gewählt. Ich werde es erklären, während ich diese Annahme mache ...
Vielleicht möchten Sie einen kurzen Blick auf meine akzeptierte Antwort hier werfen , die in Bezug auf die Frage " Bedarfsvorschlag zur Sicherungsstrategie [geschlossen]" veröffentlicht wurde , um Ihnen einige Ideen zu RTO und RPO zu geben.
Warum? Weil das Einstellen
@CleanupTime=0
eine schlechte Idee sein könnte ...Beantworten Sie zuerst Ihre Frage.
Ist es ein Fehler in Olas Skript? - Nein. Ola hat sein Skript so konzipiert, dass es nach der letzten
BACKUP DATABASE...
(vollständigen Sicherung) sucht und dann die Transaktionsprotokollsicherungen (BACKUP LOG ...
) löscht, die vor dieser Sicherung durchgeführt wurden, und nur dann, wenn die@CleanupTime
niedrigere als bei der vollständigen Sicherung ist.Funktioniert wie geplant, da a
BACKUP DATABASE ... WITH COPY_ONLY...
immer noch eine vollständige Sicherung ist .Sicherheit zuerst
Wenn Sie eine Sicherung mit der
BACKUP DATABASE ... COPY_ONLY...
Option erstellen und anschließend erstellenBACKUP LOG...
, können Sie die Datenbank mithilfe der vollständigenCOPY_ONLY
Sicherung und der verfügbaren Transaktionsprotokollsicherungen weiterhin in einem konsistenten Zustand wiederherstellen .Ich habe dies mit meiner StackExchange-Datenbank getestet:
COPY_ONLY
BackupsBACKUP LOG ...
Verwendung von Ola-SkriptenManuelle Sicherung mit
COPY_ONLY
Sicherung des Transaktionsprotokolls mit Olas Skripten
Wiederherstellen
Möglicherweise beträgt der Unterschied in den Zeitstempeln nicht ca. 7 Minuten.
Ergebnisse
Zusammenfassung
Olas Skript funktioniert wie geplant. Wir haben überprüft, dass a
BACKUP DATABASE ... WITH COPY_ONLY...
und a zusätzlichBACKUP LOG ...
zusammenarbeiten. Die ausfallsichere Funktion stellt sicher, dass Sie Ihre Datenbank mit der letzten vollständigen Sicherung (COPY_ONLY oder nicht) und den verfügbaren Transaktionsprotokollsicherungen wiederherstellen können.(Bitte lesen Sie Teil II von II für weitere Antworten)
quelle
Sie haben Recht! Ich denke, das ist ein Fehler oder eine Absicht. Ich konnte das Szenario wiederholen.
Wenn Sie also Olas Skript folgendermaßen ausführen:
Oder einheimisch:
Wenn Sie eine neue vollständige Sicherung oder vollständige
copy_only
Sicherung oder sogar eine differenzielle Sicherung ausführen , werden alle Ihre vorherigen Protokollsicherungen gelöscht, nachdem Sie eine weitere Protokollsicherung ausgeführt haben (@CleanupTime = 0
Olas Protokollsicherungsskript mit param).Getestet mit Olas Skriptversion: 7. Oktober 2016 .
Basierend auf Olas Website :
COPY_ONLY
Backups wurden nicht erwähnt .In der Zwischenzeit können Sie den Protokollsicherungsparameter als Problemumgehung ändern
@CleanupTime = NULL
. Oder wechseln Sie zu einem anderen Backup- Tool (z. B. Minion Backup oder dbatools ) oder rollen Sie Ihren eigenen benutzerdefinierten Code, da das letzte Update von Olas Wartungsplan am 7. Oktober 2016 erfolgte. Es gibt einen Github, wenn Sie ein Problem / eine Verbesserung ansprechen möchten .quelle
CleanupTime = 0
param zu verwenden, also habe ich daran gedacht, es zu testen. Wir lernen jeden Tag etwas Neues. und jacopy_only
sollte in Ola-Schrift verschieden sein.