Unterschied zwischen Vollsicherung und Nur-Kopie-Vollsicherung

17

Ich habe im SQL Server Central-Thread gesehen. Schneidet eine vollständige Sicherung das Protokoll ab? Diese vollständige Sicherung schneidet das Protokoll nicht ab:

Weder vollständige noch differenzielle Sicherungen kürzen das Transaktionsprotokoll. - Lynn Pettis
Nein - Eine vollständige Sicherung schneidet das Protokoll nicht ab. - Chad Crawford

Was ist also der Unterschied zwischen einer vollständigen Sicherung und einer vollständigen Sicherung nur durch Kopieren?

Für die Protokollsicherung gibt es eine Nur-Kopie-Sicherung, die verhindert, dass die Protokollkette unterbrochen wird, ohne das Protokoll abzuschneiden. Was ist also ein Nur-Kopie-Vollbackup?

IT-Forscher
quelle

Antworten:

14

Zumindest müssen Sie differenzielle Sicherungen berücksichtigen. Wenn nicht nur die vollständige Kopie verwendet wird, ist die nächste Diff-Sicherung deaktiviert. Nur-Kopie-Backups :

Nur-Kopie-Vollsicherungen (alle Wiederherstellungsmodelle) Eine Nur-Kopie-Sicherung kann nicht als differenzielle Basis oder differenzielle Sicherung dienen und wirkt sich nicht auf die differenzielle Basis aus.

Der einzige Unterschied zwischen Voll- und Vollkopie besteht darin, dass die Differenzkette durch die Vollkopie nicht unterbrochen wird. Keiner von ihnen unterbricht die Protokollkette, da keiner von ihnen die Protokolldatei abschneidet.

Remus Rusanu
quelle
24

Der Hauptunterschied zwischen vollständigen und Nur-Kopie-Sicherungen besteht darin, ob die LSN (Log Sequence Number) und insbesondere die LSN DatabaseBackupLSNaktualisiert werden.

Wenn Sie eine vollständige Sicherung erstellen, DatabaseBackupLSNwird die aktualisiert. Wenn Sie nach der vollständigen Sicherung eine differenzielle Sicherung erstellen, hat diese Sicherung eine, DatabaseBackupLSNdie der vollständigen Sicherung entspricht, und daher kann SQL die beiden miteinander verknüpfen (z. B. weiß es von diesen LSNs, dass der Diff der vollständigen Sicherung gefolgt ist).

Das Problem tritt auf, wenn geplante Sicherungen ausgeführt werden, sodass Sie zunächst eine vollständige Sicherung und dann eine Folge von Differentials ausführen. Wenn Sie manuell eine vollständige Sicherung erstellen, wird die LSN aktualisiert, und ab diesem Zeitpunkt verweist jede differenzielle Sicherung, die Sie über eine geplante Sicherung erstellen, auf die neue LSN, die nicht die ursprüngliche ist. Wenn eine Wiederherstellung erforderlich ist, können Sie Ihre geplante vollständige Sicherung wiederherstellen. Wenn Sie jedoch nach dem manuellen Auftrag versuchen, eine der differenziellen Sicherungen wiederherzustellen, schlägt dies fehl, da die LSNs nicht mehr übereinstimmen.

Bei einer Nur-Kopie-Sicherung wird die nicht berührt DatabaseBackupLSN, und als solche wird diese Sicherungskette nicht unterbrochen.

Es gibt eine gute Beschreibung des Problems und warum so viele Leute es in Breaking the Backup Chain - REDUX (oder Eating Crow) von Michael K. Campbell missverstehen , das gute visuelle Anleitungen wie diese enthält:

SQLmag-Image - Vollständige Sicherung v Nur-Kopie-Sicherungen

Eine gute Erklärung der vier verschiedenen LSNs und ihrer Verwendung finden Sie unter Grundlegendes zu SQL Server-Protokollfolgenummern für Sicherungen von Simon Liew.

Sie können das Problem vermeiden, indem Sie nicht mehr als eine Aufgabe für Standardsicherungen einer Datenbank ausführen. Alle Ad-hoc- oder sekundären Sicherungen sollten mit der Option Nur-Kopie durchgeführt werden. Ausführliche Informationen finden Sie unter Nur-Kopie-Sicherungen (SQL Server). Grundsätzlich verwenden Sie jedoch die Option "Nur-Kopie-Sicherung" in SSMS über T-SQL, das WITH COPY_ONLYim Befehl angegeben ist Oder verwenden Sie mit PowerShell den -CopyOnlyParameter.

Keith Langmead
quelle
1
Hinzufügen: Praktisch NUR KOPIEREN ermöglicht das Erstellen eines Backups für Nicht-Backup-Zwecke. Für einen Kunden werden Sicherungen automatisch auf einem Unternehmenssicherungssystem durchgeführt. Das Abrufen einer Wiederherstellung ist SCHULD, insbesondere das Abrufen einer Sicherung in einer anderen Umgebung (Papierkram, tagsüber). Mit NUR KOPIEREN kann ich eine Kopie erstellen, OHNE die von Enterprise Backup verwaltete Sicherung zu beeinträchtigen, und diese dann in einer Testumgebung wiederherstellen.
TomTom
12

Angenommen, wir haben eine Datenbank mit geplanten Sicherungen. Die vollständige Sicherung wird alle 24 Stunden um 00:00 Uhr einmal ausgeführt. Außerdem gibt es differenzielle Sicherungen, die alle 6 Stunden ausgeführt werden, und Transaktionsprotokollsicherungen, die stündlich ausgeführt werden. Was ist, wenn wir mitten am Tag ein zusätzliches vollständiges Backup erstellen müssen, um einen anderen Server wiederherzustellen? Was sollen wir in diesem Fall tun? Natürlich können wir ein vollständiges Backup erstellen.

BACKUP DATABASE Test TO DISK = 'C:/Test.bak'

Wenn Sie jedoch eine Datenbank sichern, wirken sich einige Änderungen darauf aus, wie die folgenden Sicherungen wiederhergestellt werden (differenzielle Sicherungen und Transaktionsprotokollsicherungen wirken sich beide auf den Wiederherstellungsvorgang aus). In diesem Fall sind alle folgenden differenziellen Sicherungen von der letzten vollständigen Sicherung abhängig. Wenn die letzte vollständige Sicherung verloren geht, kann die Datenbank nicht wiederhergestellt werden.Bildbeschreibung hier eingeben

Aber wie können wir eine Sicherung erstellen, die die folgenden Sicherungs- oder Wiederherstellungsprozesse für diese Datenbank nicht beeinflusst? Hier kommen Nur-Kopie-Backups zum Einsatz.

BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY

Bildbeschreibung hier eingeben

Alexandr Omelchenko
quelle
2

Bei einer vollständigen Sicherung und einer Reihe von Protokolldateisicherungen wird eine Protokollkette unter Verwendung der LSN (Log Sequence Number) verwaltet. Wenn Sie eine Sicherung durchführen möchten, ohne die Protokollkette zu unterbrechen, führen Sie eine Nur-Kopie-Sicherung durch.

Wenn Sie keine Nur-Kopie-Sicherung durchführen, ist die Protokollkette unterbrochen und die von Ihnen erstellte Sicherung ist die letzte vollständige Sicherung. Dies bedeutet, dass die vorherigen Protokollsicherungen nicht auf die neu erstellten vollständigen Sicherungen angewendet werden können. Die Protokollkette wird hauptsächlich für Zeitpunktwiederherstellungen oder Protokollversandszenarien verwaltet.

Beispiel: Angenommen, Sie haben ein Sicherungsszenario, bei dem alle 6 Stunden (Mitternacht, 6 Uhr, Mittag, 18 Uhr) vollständige Sicherungen durchgeführt und alle 15 Minuten Sicherungen protokolliert werden. Um 9.00 Uhr geht die Anfrage ein, dass eine Kopie Ihrer Datenbank auf einem Testserver abgelegt werden soll. Sie möchten die Sicherung durchführen, ohne die Protokollkette zu unterbrechen oder Ihre Sicherungsjobs zu unterbrechen. In diesem Fall wird eine Nur-Kopie-Sicherung erstellt. Durch die Sicherung nur mit Kopie werden Ihre regulären Sicherungssätze nicht gestört.

StanleyJohns
quelle
1
Ich glaube nicht, dass eine Nur-Kopie-Sicherung die Protokollkette beeinflusst. Eine Nur-Kopie-Vollsicherung setzt die Differentialbasis nicht zurück. Das ist der einzige Unterschied. Siehe diese Links: sqlservercentral.com/Forums/Topic1471058-391-1.aspx?Update=1 und sqlinthewild.co.za/index.php/2011/03/08/…
IT-Forscher
1
Ich habe Ihrer Antwort nicht zugestimmt. Sowohl die vollständige Sicherung als auch die nur kopierte vollständige Sicherung unterbrechen nicht die Protokollkette. Abgesehen von der Option "differenzielle Basis nicht zurücksetzen" ist eine vollständige Sicherung nur als Kopie in jeder Hinsicht identisch mit einer normalen vollständigen Sicherung. Siehe den Forum-Link, den ich in meinem vorherigen Kommentar erwähnt habe.
IT-Forscher
Nehmen wir an, Sie haben eine vollständige Sicherung: FB1 und 3 Protokollsicherungen: LB1, LB2, LB3. Führen Sie nun eine manuelle vollständige Sicherung durch: FB2 (ohne copy_only). Warten Sie auf 3 weitere Protokollsicherungen: LB4, LB5, LB6. Löschen Sie nun den FB2. Können Sie FB1 + LB1 + LB2 + LB3 + LB4 + LB5 + LB6 wiederherstellen?
StanleyJohns
Ja, ich kann wiederherstellen. Ich habe eine vollständige Sicherung (nicht nur kopiert) von FB1, dann eine Protokollsicherung (LB1), dann eine vollständige Sicherung (nicht nur kopiert) von FB2 und dann erneut eine Protokollsicherung (LB2) durchgeführt. Dann habe ich in dieser Reihenfolge FB1 + LB1 + LB2 wiederhergestellt. Richtig wiederhergestellt und alle eingegebenen Zeilen gefunden.
IT-Forscher
2
-1, da die Option "Nur kopieren" mit einer vollständigen Sicherung nichts mit LSN-Ketten zu tun hat. Itresearcher hat darauf hingewiesen, aber Sie haben Ihre Antwort nicht aktualisiert / gelöscht.
Edward Dortland
0

Eine vollständige Sicherung und eine Sicherung nur durch Kopieren unterbrechen die Protokollkette nicht. Nur wenn Sie eine tlog-Sicherung durchführen, liegt eine LSN-Abweichung vor.

Kevin
quelle