Ist es möglich, die Stufe aus der letzten inkrementellen Sicherung zu kennen, die mit nbackup von Firebird erstellt wurde?

8

Es ist eine ziemlich einfache Frage. Firebird hat ein Backup-Tool namens nbackup , während Sie inkrementelle Backups erstellen können.

Das Tool beschwert sich, wenn Sie die Sicherung nicht in der richtigen Reihenfolge vornehmen (z. B. eine Sicherung der Stufe 0 und dann eine Stufe 2). Dann nehme ich an, dass das Tool eine Markierung in die Datenbank setzt, die die Stufe der letzten durchgeführten Sicherung anzeigt.

Die Dokumentation finden Sie hier

Wie kann ich diese Informationen abrufen?

    
Epiplon 28.08.2014, 18:01
quelle

1 Antwort

9

Soweit ich weiß, besteht die einzige Möglichkeit darin, die Tabelle RDB$BACKUP_HISTORY abzufragen (dafür gibt es keinen Service Manager-Aufruf). Um die letzte Sicherung zu erhalten, können Sie verwenden:

%Vor%

Die Tabelle RDB$BACKUP_HISTORY hat die folgenden Spalten:

  • RDB$BACKUP_ID Primärschlüssel
  • RDB$TIMESTAMP Zeitstempel der Sicherung
  • RDB$BACKUP_LEVEL Backup-Level
  • RDB$GUID GUID der Sicherung (wird auch in den Sicherungsdateien verwendet, um Abhängigkeiten zu steuern und zu überprüfen)
  • RDB$SCN höchste Seitenmarkierung im Backup (siehe unten)
  • RDB$FILE_NAME Dateiname des erstellten Backups

Nbackup führt eine physische Sicherung der Datenbankseiten durch. Der SCN (Abkürzung für Page Scan ...) ist eine Nummer, mit der Datenbankseiten markiert werden. Diese Anzahl wird bei jeder Änderung des Sicherungsstatus erhöht. Für jede Sicherung mit nbackup gibt es 3 Statusänderungen: nbak_state_normal (keine Sicherung) - & gt; nbak_state_stalled (Datenbank schreibt in Delta-Datei) - & gt; nbak_state_merge (Zusammenführen der Delta-Datei in die Datenbank) - & gt; nbak_state_normal (keine Sicherung).

Die erste Sicherung erhält SCN 0, die zweite SCN 3 usw. (egal welche Stufe).

  • SCN 0: Seiten vor jedem Backup
  • SCN 1: Seiten, die während der Sicherung in die Deltadatei geschrieben / aktualisiert wurden
  • SCN 2: Seiten, die während der Zusammenführung der Delta-Datei in die Hauptsicherung geschrieben / aktualisiert wurden (obwohl ich nicht sicher bin, ob die in die Hauptdatei zurückgeschriebenen Seiten der Delta-Datei SCN 1 oder 2 erhalten)
  • SCN 3: Seiten geschrieben / aktualisiert nach Beendigung der ersten Sicherung + Zusammenführung
  • ...
  • SCN 6: Seiten geschrieben / aktualisiert nach Beendigung der zweiten Sicherung + Zusammenführung

Wenn Sie eine Sicherung der Stufe 1 erstellen, sucht sie nach der Sicherung der letzten Stufe 0 und sichert alle Seiten mit einem SCN, der höher ist als der SCN der Sicherung der Stufe 0 (usw.). Dies wird auch in den Firebird 2.1-Versionshinweisen beschrieben: New Online Inkrementelles Backup .

Beachten Sie, dass eine Sicherung und Wiederherstellung mit gbak die Tabelle RDB$BACKUP_HISTORY löscht und die SCN aller Seiten auf 0 zurücksetzt. Der Grund dafür ist, dass gbak eine logische Sicherung anstelle von a erstellt physische Sicherung Bei einer Wiederherstellung mit gbak wird die gesamte Datenbank neu geschrieben (und kann sogar die Seitengröße ändern). Dies macht vorherige Backups mit nbackup bedeutungslos als Ausgangspunkt für nachfolgende Backups: Sie müssen mit einer neuen Ebene 0 beginnen.

Da diese Informationen im nbackup-Handbuch fehlen, habe ich ein Ticket auf dem Firebird-Tracker erstellt: Ссылка

    
Mark Rotteveel 28.08.2014, 18:40
quelle

Tags und Links