Protokollfolgenummern und Wiederherstellungsplanung
Dieses Thema ist relevant für SQL Server-Datenbanken, für die das vollständige Wiederherstellungsmodell verwendet wird.
Für die Wiederherstellungsplanung sind die erste und die letzte Protokollfolgenummer (LSN, Log Sequence Number) die wichtigsten LSNs. Diese LSNs können von folgenden Speicherorten abgerufen werden:
In der backupset-Tabelle in msdb. Die Spalten lauten first_lsn und last_lsn.
In der RESTORE HEADERONLY-Anweisung Die Spalten lauten FirstLSN und LastLSN.
In der folgenden Tabelle sind diese Begriffe für verschiedene Sicherungen definiert.
Begriff |
Definition |
---|---|
first_lsn oder FirstLSN |
Protokollfolgenummer des ersten oder ältesten Protokolldatensatzes im Sicherungssatz. Für Datensicherungen und differenzielle Sicherungen identifiziert die erste LSN den ersten Protokolldatensatz, der zum Wiederherstellen dieser Sicherung erforderlich ist. Für Protokollsicherungen identifiziert die erste LSN den ersten Protokolldatensatz, der in der Sicherung vorhanden ist. |
last_lsn oder LastLSN |
Protokollfolgenummer des nächsten Protokolldatensatzes nach dem Sicherungssatz. Die letzte LSN identifiziert den nächsten Protokolldatensatz nach dem Ende der Sicherung. Für Datensicherungen und differenzielle Sicherungen (und für Protokollsicherungen, die massenprotokollierte Vorgänge enthalten) muss das Rollforward mindestens bis zu dieser LSN reichen. Andernfalls sind die während der Wiederherstellung kopierten Daten inkonsistent. Für Protokollsicherungen enthält die Protokollsicherung Protokolldatensätze bis zu dieser LSN, die jedoch selbst nicht eingeschlossen ist. |
Protokollfolgenummern und Datensicherungen bzw. differenzielle Sicherungen
Für Datensicherungen und differenzielle Sicherungen sind die Protokolldaten zwischen first_lsn und last_lsn in der Sicherung enthalten. Dies ermöglicht, die Sicherung ohne Protokollsicherungen zu verwenden, um bis zu last_lsn wiederherzustellen.
Für eine Datensicherung oder differenzielle Sicherung ist last_lsn der frühestmögliche Wiederherstellungspunkt, falls Sie die Sicherung in einer Wiederherstellungssequenz verwenden. Falls ein früherer Wiederherstellungspunkt erforderlich ist, muss eine ältere Sicherung verwendet werden.
Bei der Planung, welche Protokollsicherung für den Rollforward nach der Wiederherstellung einer Datensicherung oder differenziellen Sicherung verwendet werden soll, beginnen Sie im Allgemeinen mit der ersten Protokollsicherung nach dieser Datensicherung oder differenziellen Sicherung. Bei der Analyse der Sicherungseigenschaften werden Sie eine Protokollsicherung finden, deren first_lsn kleiner oder gleich der last_lsn aus der Datensicherung oder differenziellen Sicherung ist und deren last_lsn größer als last_lsn aus der Datensicherung oder differenziellen Protokollsicherung ist.
Protokollfolgenummern und Protokollsicherungen in einer Protokollkette
Eine neue Protokollkette beginnt entweder mit der ersten vollständigen Datenbanksicherung nach dem Erstellen der Datenbank oder nach dem Wechsel vom einfachen zum vollständigen oder massenprotokollierten Wiederherstellungsmodell. In der ersten Protokollsicherung einer Protokollkette, backupset.begins_log_chain= 1.
Mit first_lsn und last_lsn werden Protokollsicherungen zu einer fortlaufenden Sequenz (Protokollkette) verknüpft. Mithilfe einer Sequenz fortlaufender Protokollsicherungen können Sie ein Rollforward einer Datenbank ausführen von der neuesten Datensicherung oder differenziellen Sicherung oder von einer älteren Sicherung bis hin zu fehlenden oder beschädigten Datensicherungen oder differenziellen Sicherungen.
Bei einer Protokollsicherung ist first_lsn die LSN des ersten Protokolldatensatzes in der Sicherung. Ab diesem Protokolldatensatz enthält die Protokollsicherung Protokolldatensätze bis zu dem Protokolldatensatz (jedoch ohne diesen Protokolldatensatz), dessen LSN last_lsn ist. Zwei Protokollsicherungen sind nur dann fortlaufend, wenn die LSN des letzten Protokolldatensatzes in der früheren Sicherung (Backup_A) größer oder gleich der LSN des ersten Protokolldatensatzes in der späteren Sicherung (Backup_B) ist. Das heißt, Backup_A.last_lsn>= Backup_B.first_lsn. Falls dies nicht zutrifft, ist eine Lücke zwischen den beiden Sicherungen vorhanden.
Die Beziehung zwischen diesen LSNs sieht wie folgt aus:
A.last_lsn = B.first_lsn
Wenn A.last_lsn= B.first_lsn, dann ist B gewöhnlich die Protokollsicherung, die unmittelbar nach A erstellt wurde.
Diese Beziehung wird in der folgenden Abbildung dargestellt. Beachten Sie, dass der Protokolldatensatz n, der in der Protokollsicherung B vorkommt, als last_lsn in der Protokollsicherung A und als first_lsn in der Protokollsicherung B aufgezeichnet wurde.
A.last_lsn > B.first_lsn
Wenn A.last_lsn> B.first_lsn, dann ist eine Überlappung vorhanden. Eine Überlappung ergibt sich in der Regel beim Erstellen einer Kopieprotokollsicherung oder bei der ersten Protokollsicherung, die nach einer Wiederherstellung bis zu einem bestimmten Zeitpunkt erstellt wurde. Für die Überlappung können verschiedene Wiederherstellungsverzweigungen verwendet werden. Weitere Informationen finden Sie unter Wiederherstellungspfade.
Ursachen für unterbrochene Protokollketten
Im Allgemeinen verhindert SQL Server Database Engine (Datenbankmodul) Lücken in der Protokollsicherungssequenz, wodurch die Protokollkette intakt bleibt. Ein Datenbankadministrator kann jedoch die Protokollkette unterbrechen, indem er vom einfachen zum vollständigen oder massenprotokollierten Wiederherstellungsmodell wechselt.
Beim Wechsel des Wiederherstellungsmodells ist kein Rollforward möglich, wenn das einfache Wiederherstellungsmodell beteiligt ist, da die Protokollkette unterbrochen ist. Nach einem Wechsel zum vollständigen oder massenprotokollierten Wiederherstellungsmodell sollten Sie eine neue differenzielle Basis oder einen differenziellen Basissatz erstellen. Alternativ können Sie mithilfe differenzieller Sicherungen eine Lücke überbrücken.
Siehe auch