Technische Hintergrundinformationen
Nbackup führt eine physische Sicherung der Datenbankseiten durch, indem Seiten kopiert werden, die seit der letzten Sicherung der unmittelbar vorhergehenden Ebene geändert wurden.Eine Sicherung der Stufe 0
kopiert alle Seiten, während eine Sicherung der Stufe 1
nur die Seiten kopiert, die nach der letzten Stufe 0
geändert wurden.Um die geänderten Seiten finden zu können, verwendet Firebird eine Markierung, die als SCN (kurz für Seiten-Scan) bezeichnet wird.Diese Zahl wird bei jeder Änderung des Sicherungsstatus erhöht.Für jede Sicherung mit nbackup gibt es drei Statusänderungen:
-
nbak_state_normal
(kein Backup) zunbak_state_stalled
(Datenbank schreibt in Delta-Datei) -
nbak_state_stalled
zunbak_state_merge
(Zusammenführen der Delta-Datei zurück in die Datenbank) -
nbak_state_merge
zunbak_state_normal
(kein Backup)
Note
|
Diese drei Statusänderungen treten auch dann auf, wenn die Sicherung fehlschlägt. |
Der SCN der Datenbank vor dem Start der Sicherung wird zusammen mit der Sicherung aufgezeichnet.Das allererste Backup erhält SCN 0
, das zweite 3
usw.Diese Nummer ist unabhängig von der Sicherungsstufe.Der SCN wird verwendet, um die Seiten einer Datenbank zu markieren.Also zum Beispiel:
SCN | Bedeutung |
---|---|
|
Seiten vor einer Sicherung |
|
Seiten, die während der Sicherung in die Delta-Datei geschrieben/aktualisiert wurden |
|
Seiten, die während des Zusammenführens der Delta-Datei in die Hauptsicherung geschrieben/aktualisiert wurden |
|
Seiten, die nach Beendigung der ersten Sicherung + Zusammenführung geschrieben/aktualisiert wurden |
Wenn eine Sicherung der Stufe 1
durchgeführt wird, sucht nbackup nach der Sicherung der letzten Stufe 0
und sichert alle Seiten mit einem SCN,der höher ist als der SCN dieser Sicherung der Stufe 0
(und so weiter).
Eine Sicherung und Wiederherstellung mit gbak stellt den Inhalt der Tabelle RDB$BACKUP_HISTORY
nicht wieder her und setzt den SCN aller Seiten auf 0
zurück.Der Grund dafür ist, dass gbak anstelle einer physischen Sicherung eine logische Sicherung erstellt.Eine Wiederherstellung mit gbak schreibt also die gesamte Datenbank neu (und kann sogar die Seitengröße ändern).Dies macht frühere Sicherungen mit nbackup als Ausgangspunkt für nachfolgende Sicherungen bedeutungslos: Sie müssen mit einer neuen Stufe 0
beginnen.