FirebirdSQL logo

Inkrementelle Sicherungen erstellen

Um eine inkrementelle (“differenzielle”) Sicherung durchzuführen, geben wir eine Sicherungsstufe größer als 0 an.Eine inkrementelle Sicherung der Stufe N enthält immer die Datenbankmutationen seit der letzten Sicherung der Stufe N-1.

Beispiele:

Einen Tag nach der vollständigen Sicherung (Stufe 0) erstellen Sie eine mit Stufe 1:

C:\Data> nbackup -B 1 inventory.fdb inventory_2-Mar-2006.nbk

Diese Sicherung enthält nur die Mutationen des letzten Tages.

Einen Tag später erstellen Sie eine weitere mit Level 1:

C:\Data> nbackup -B 1 inventory.fdb inventory_3-Mar-2006.nbk

Diese enthält die Mutationen der letzten zwei Tage seit der vollständigen Sicherung, nicht nur die seit der vorherigen Sicherung der Stufe 1.

Note

Die vorherige inkrementelle Sicherung einer beliebigen Ebene muss vor dem Start der nächsten inkrementellen Sicherung abgeschlossen sein. Andernfalls führt nbackup nicht die gewünschte Sicherung durch und gibt den Fehler "Datenbank befindet sich bereits im physischen Sicherungsmodus" (engl. "Database is already in the physical backup mode") zurück.

Ein paar Stunden später erstellen wir ein Level-2-Backup:

C:\Data> nbackup -B 2 inventory.fdb inventory_3-Mar-2006_2.nbk

Dieses jüngste Backup enthält nur die Mutationen seit dem letzten Level-1-Backup, d.h. der letzten Stunden.

Wichtiger Leistungshinweis

Vor Firebird 3.0 lesen alle inkrementellen Sicherungen (d.h. Stufe 1, 2 usw.) die gesamte Datenbankdatei, um die Änderungen zu lokalisieren und in einer Sicherungsdatei zu speichern.Dies kann die Datenbankleistung bei großen Datenbanken (100GB+) und langsamen Festplattensubsystemen beeinträchtigen (normalerweise kann bei Nicht-SSD-Laufwerken ein Geschwindigkeitseinbruch festgestellt werden).Ab Firebird 3.0 wird nur der geänderte Teil der Datenbankdatei gelesen, sodass inkrementelle Sicherungen der Stufe 1 und höher viel schneller sind und die Datenbankleistung weniger beeinträchtigen.

Note

Alle Anmerkungen, die eine vollständige Sicherung betreffen, treffen auch für inkrementelle Sicherungen zu.

Warning

Noch einmal: Verwenden Sie nbackup nicht für Mehrdateiendatenbanken.

docnext count = 19

Wiederherstellen von inkrementellen Sicherungen

Wenn Sie inkrementelle Sicherungen wiederherstellen wollen, dann müssen Sie die vollständige Kette der inkrementellenSicherungsdateien angeben, beginnend mit der Level 0 Sicherung, bis zu dem Zeitpunkt, für den Sie eine Wiederherstellung wünschen.Die Datenbank wird immer von Grund auf erstellt; Schritt für Schritt. (Es handelt sich hier um ein schrittweises Hinzufügender inkrementellen Sicherungen.)

Die formale Syntax dafür ist:

nbackup -R database [backup0 [backup1 [...] ] ]

Somit sieht die Wiederherstellung der Level-2 Sicherung aus unserem vorherigen Beispiel wie folgt aus:

C:\Data> nbackup -R inventory.fdb inventory_1-Mar-2006.nbk
           inventory_3-Mar-2006.nbk inventory_3-Mar-2006_2.nbk

Natürlich wurde die Zeile nur zum Zwecke der besseren Lesbarkeit umgebrochen. In Wirklichkeit geben Sie das vollständige Kommando in einerZeile ein und drücken am Schluß die [Enter]-Taste.

  • Da im Voraus nicht bekannt ist, wie viele Dateinamen dem -R Schalter nachfolgen (da wir keinen Level bei der Wiederherstellung angeben), wird nbackup alle Argumente nach -R als Namen der Sicherungsdateien ansehen.Das ist der Grund, warum keine anderen Parameter (-U oder -P) an die Liste der Dateinamen angehängt werden sollen.

  • Es existiert kein formales Limit für die Anzahl der Backup-Levels, aber unter praktischen Gesichtspunkten, wird es kaum Sinn machen, dass man über 3 oder 4 hinaus geht.

Nichtverbundene Aneinanderreihung

Was passiert, wenn Sie versehentlich eine Sicherungsdatei vergessen anzugeben, oder wenn Sie eine Serie an Dateien angeben, die keinen Bezug zueinander aufweisen?Stellen Sie sich vor, dass Sie im obigen Beispiel irrtümlich inventory_2-Mar-2006.nbk anstatt von inventory_3-Mar-2006.nbk verwenden.Beide sind Level-1 Sicherungsdateien, somit bekommen wir eine schöne Aneinanderreihung von “0, 1, 2”-Level Sicherungen. Unsere Level-2 Datei ist eine inkrementelle Sicherung von der Level-1 Sicherung vom 3. März, und nicht von der Sicherung vom 2. März.

Glücklicherweise kann so ein Versehen nie zu einer fehlerhaft zurückgesicherten Datenbank führen.Jede Sicherungsdatei hat ihre eigene eindeutige ID.Des Weiteren besitzt jede Level-1 (oder höher) Sicherungsdatei die ID der Sicherung, von der sie abstammt.Bei der Wiederherstellung überprüft nbackup zunächst die IDs daraufhin, ob es eine Aneinderreihung gibt, die nicht zusammengehört.Ist dies der Fall, dann wird die Operation abgebrochen und Sie bekommen eine Fehlermeldung.

Sichern von Rohgerätedatenbanken

Firebird-Datenbanken müssen keine Dateien sein.Sie können auch auf einem sogenannten Rohgerät (engl. raw device) platziert werden, beispielsweise einer Festplattenpartition ohne Dateisystem.Die Frage, wo in solchen Fällen das delta platziert werden muss, wurde bei der Entwicklung von nbackup zunächst übersehen.Wenn sich die Datenbank auf Posix-Systemen z.B. auf /dev/hdb5 befindet, kann es vorkommen, dass das Delta als /dev/hdb5.delta erstellt wurde.In Anbetracht der Art und des Zwecks des Verzeichnisses /dev und seines oft begrenzt verfügbaren Speicherplatzes ist dies unerwünscht.

Ab Firebird 2.1 weigert sich nbackup, mit Rohgerätedatenbanken zu arbeiten, es sei denn, ein expliziter Speicherort für die Delta-Datei wurde festgelegt.Die Vorgehensweise wird in [nbackup-deltafile] weiter unten in diesem Handbuch erläutert.

Datenbanktrigger unterdrücken (Firebird 2.1+)

Firebird 2.1 führte das Konzept von Datenbanktriggern ein.Bestimmte Arten dieser Trigger können beim Herstellen oder Unterbrechen einer Datenbankverbindung ausgelöst werden.Im Rahmen des Sicherungsprozesses stellt nbackup eine reguläre Verbindung zur Datenbank her (in einigen Versionen sogar mehrmals).Um zu verhindern, dass Datenbanktrigger versehentlich ausgelöst werden, kann der neue Schalter -T verwendet werden.Beachten Sie, dass die entsprechenden Schalter in gbak und isql -nodbtriggers heißen (wir lieben Vielfalt hier bei Firebird).

Direkte I/O (Firebird 2.1.4+)

Ursprünglich verwendete nbackup direkte I/O nur, wenn eine Sicherung unter Windows NT erstellt wurde (und Nachfolger wie 2000, 2003 usw.).Auf allen anderen Betriebssystemen waren direkte I/O ausgeschaltet.Dies verursachte auf einigen Linux-Systemen Probleme, sodass in den Versionen 2.0.6 und 2.1.3 die direkten I/O auch unter Linux aktiviert wurden.Dies stellte sich jedoch für bestimmte andere Linux-Konfigurationen als problematisch heraus.In 2.1.4 und 2.5 wurde das ursprüngliche Verhalten wiederhergestellt, diesmal jedoch als Standard, der durch einen neu hinzugefügten Parameter überschrieben werden konnte: -D.Seine Verwendung ist wie folgt:

nbackup -B 0 cups.fdb cups.nbk -D on    -- direkte I/O an
nbackup -B 0 mugs.fdb mugs.nbk -D off   -- direkte I/O aus

Genau wie bei den Optionsschaltern selbst wird bei den Argumenten ON und OFF die Groß- und Kleinschreibung nicht berücksichtigt.

Direkte I/O werden nur beim Erstellen einer Sicherung angewendet, nicht während einer Wiederherstellung.Unter Windows wird dies durch Setzen von FILE_FLAG_NO_BUFFERING realisiert.Auf anderen Systemen werden O_DIRECT und POSIX_FADV_NOREUSE verwendet.Die beiden letzteren sind manchmal nicht verfügbar;in solchen Fällen werden sie (oder einer von ihnen) stillschweigend ausgelassen.Selbst wenn der Benutzer -D on explizit angegeben hat, führt dies nicht zu einer Warnung oder Fehlermeldung.

Informationsoptionen (Firebird 2.5+)

Neben den bereits erwähnten Parametern -FE und -D wurden in Firebird 2.5 auch die folgenden beiden eingeführt:

-Z

Zeigt einzeilige Versionsinformationen an.Diese Option kann unabhängig verwendet werden, aber auch in Kombination mit anderen Parametern wie -B, -R, -L usw.

-?

Zeigt eine Zusammenfassung der Verwendungs- und Befehlszeilenparameter von nbackup an.Achtung: Wenn diese Option vorhanden ist, werden alle anderen Parameter ignoriert!

Sicherungen auf Remote-Servern (Firebird 2.5+)

Nbackup selbst arbeitet nur mit lokalen Datenbanken.In Firebird 2.5 und höher können Sicherungen und Wiederherstellungen vom Typ nbackup auch remote über den Services Manager ausgeführt werden.Hierzu wird das Programm fbsvcmgr.exe auf dem lokalen Rechner verwendet;Es befindet sich im selben Ordner wie nbackup.exe und den anderen Firebird-Befehlszeilentools.Das erste Argument ist immer “Hostname: service_mgr”, wobei hostname der Name des Remote-Servers ist.Andere verfügbare Parameter sind:

-user username
-password password
-action_nbak
-action_nrest
-nbk_level n
-dbname database
-nbk_file filename
-nbk_no_triggers
-nbk_direct on|off

Das Erstellen eines vollständigen Backups auf dem Remote-Computer frodo sieht folgendermaßen aus:

fbsvcmgr frodo:service_mgr -user sysdba -password masterke
  -action_nbak -nbk_level 0
  -dbname C:\databases\countries.fdb -nbk_file C:\databases\countries.nbk

Und eine nachfolgende inkrementelle Sicherung:

fbsvcmgr frodo:service_mgr -user sysdba -password masterke
  -action_nbak -nbk_level 1
  -dbname C:\databases\countries.fdb -nbk_file C:\databases\countries_1.nbk

Um den ganzen Schebang wiederherzustellen:

fbsvcmgr frodo:service_mgr -user sysdba -password masterke
  -action_nrest -dbname C:\databases\countries_restored.fdb
  -nbk_file C:\databases\countries.nbk -nbk_file C:\databases\countries_1.nbk
Note

Jeder der oben genannten Befehle sollte als einzelner Satz ohne Zeilenumbrüche eingegeben werden.Die Bindestriche vor den Parameternamen können weggelassen werden. Insbesondere bei langen Befehlen wie diesen kann es hilfreich sein, sie beizubehalten,damit Sie die einzelnen Parameter leicht identifizieren können (die Argumente erhalten keinen Bindestrich).

Anmerkungen:

  • Der Services Manager erfordert immer eine Authentifizierung, sei es automatisch (root unter Posix, vertrauenswürdig unter Windows) oder explizit über die Parameter -user und -password.Die Umgebungsvariablen ISC_USER und ISC_PASSWORD werden nicht verwendet.AUTO ADMIN MAPPING in der Datenbank hat keine Auswirkung auf die Remoteverbindung (obwohl dies auch von der Konfiguration des Netzwerks abhängen kann).

    Hinweis: Wenn die vertrauenswürdige Windows-Authentifizierung aktiviert ist, wird der Kontoname des Benutzers auf dem lokalen Computer an den Services Manager auf dem Remotecomputer übergeben.Wenn der Eigentümer der entfernten Datenbank ein Windows-Konto (z. B. FRODO\PAUL) und kein Firebird-Konto ist, und der Name des Windows-Kontos auf dem lokalen Computer mit dem Namen des Eigentümerkontos auf dem entfernten Computer identisch ist,wird der Anfragende als Datenbankeigentümer anerkannt und darf ein Backup erstellen.Dies könnte ein Sicherheitsrisiko darstellen, da selbst in lokalen Netzwerken der Benutzer PAUL auf einem Computer nicht unbedingt dieselbe Person ist wie der Benutzer PAUL auf einem anderen Computer.

  • Das Wiederherstellen (-action_nrest) erfordert ebenfalls eine Authentifizierung, aber nach Überprüfung werden die Anmeldeinformationen in keiner Weise verwendet.Daher muss der Benutzer nicht der Datenbankeigentümer, SYSDBA oder Superuser sein.Bei der vertrauenswürdigen Windows-Authentifizierung muss der Benutzer auf dem Remotecomputer (auf dem sich die Datenbank befindet) überhaupt nicht vorhanden sein.

    Diese schwache Authentifizierung impliziert ein weiteres potenzielles Sicherheitsrisiko.Angenommen, eine vertrauliche Datenbank wird nicht unterstützt, und die Sicherungen sind auf Dateisystemebene gut geschützt.Ein durchschnittlicher Benutzer kann die Datenbank dann nicht mit nbackup wiederherstellen, da nbackup im Benutzerprozessbereich ausgeführt wird.Wenn derselbe Benutzer jedoch den Namen und den Speicherort der Sicherung kennt oder diese analog erraten kann, kann er möglicherweise auf die Datenbank zugreifen, indem er sie von fbsvcmgr in einem öffentlichen Ordner wiederherstellen lässt.Schließlich ruft fbsvcmgr den Firebird-Server auf, der möglicherweise Zugriff auf das Backup auf Dateiebene hat.Natürlich gibt es Lösungen dafür, aber es ist wichtig, sich des Risikos bewusst zu sein.

  • Der Services Manager kann auch lokal verwendet werden.In diesem Fall wird das erste Argument service_mgr ohne Hostnamen verwendet.Bei lokaler Verwendung hat AUTO ADMIN MAPPING den beabsichtigten Effekt.Dies gilt weiterhin, wenn Sie localhost: oder den Namen des lokalen Computers voranstellen.Die lokale Verwendung des Services Managers kann von Vorteil sein, wenn Sie keinen Dateisystemzugriff auf die Datenbank- und/oder Sicherungsdateien haben, der Firebird-Serverprozess jedoch.Wenn Sie über ausreichende Rechte verfügen, ist es praktischer, nbackup selbst mit seinen viel kürzeren Befehlen zu verwenden.

  • Die Angabe von -nbk_no_triggers oder -nbk_direct mit -action_nrest führt zu einer Fehlermeldung.Nbackup selbst ist hier milder: Es ignoriert einfach die Parameter -T und -D, wenn sie im falschen Kontext verwendet werden.

  • Anstelle eines Datenbankdateinamens können Sie auch einen Alias verwenden.

  • Die Länge des Datenbankpfads (oder Alias) ist auf 255 Zeichen begrenzt.

Eine praktische Anwendung

Ein auf nbackup basierendes inkrementelles Sicherungsschema könnte folgendermaßen aussehen:

  • Jeden Monat wird eine vollständige Sicherung mit Level 0 durchgeführt;

  • Wöchentlich eine Level-1 Sicherung;

  • Täglich eine Level-2 Sicherung;

  • Stündlich eine Level-3 Sicherung.

Solange alle Sicherungen erhalten bleiben, können Sie die Datenbank für jeden beliebigen Zeitpunkt (im Stundenintervall), wiederherstellen.Für jede Wiederherstellungsaktion wird ein Maximum von vier Sicherungsdateien verwendet.Natürlich sollten Sie die Ausführungszeiten von aufwendigen Sicherungen zeitlich so planen, dass diese nicht zu Stoßzeiten ausgeführt werden.In diesem Fall könnten die Level-0 und 1 Sicherungen am Wochenende, und die Level-2 Sicherungen in der Nacht durchgeführt werden.

Falls Sie nicht immer alle Sicherungsdateien ewig aufbewahren wollen, dann können Sie auch ein Löschkonzept umsetzen. Zum Beispiel:

  • Level-3 Sicherungen werden alle 8 Tage gelöscht;

  • Level-2 Sicherungen jeden Monat;

  • Level-1 Sicherungen nach sechs Monaten;

  • Vollständige Sicherungen nach zwei Jahren, wobei die erste Sicherung von jedem Jahr aufbewahrt wird.

Dies ist natürlich nur ein Beispiel.Was in Ihrem speziellen Fall sinnvoll ist, hängt von der Anwendung, der Größe der Datenbank, den Operationen, usw…​ ab.

Sollten Sie weiterlesen?

Sie sind nun an einem Punkt angelangt, wo Sie alles über das Erstellen und das Wiederherstellen von vollständigen und/oder inkrementellen Sicherungen mit nbackup wissen.Sie brauchen nur dann weiterlesen, falls Sie andere Sicherungstools Ihrer Wahl für Ihre Firebird-Datenbank einsetzen möchten (siehe [nbackup-lock-unlock]), oder falls Sie den Standardnamen oder den Speicherort der Deltadatei ändern wollen (siehe [nbackup-deltafile]).

Falls Sie keinen dieser Einsatzzwecke benötigen, dann wünschen wir Ihnen alles Gute bei der Verwendung von nbackup!

Sperren und entsperren

Falls Sie Ihre eigenen Sicherungstools verwenden, oder wenn Sie nur eine Dateikopie erstellen wollen, dann hilft Ihnen nbackup mit dessen Sperr/Entsperr-Modi ebenfalls weiter.“Sperren” bedeutet hier, dass die Hauptdatenbankdatei vorübergehend eingefroren wird.Dies bedeutet allerdings nicht, dass keine Änderungen in der Datenbank durchgeführt werden können.Wie im Sicherungsmodus werden auch hier alle Änderungen in eine temporäre Deltadatei geschrieben.Unmittelbar nach dem Entsperren wird die Deltadatei mit der Hauptdatenbankdatei zusammengeführt.

Zur Erinnerung: nbackup.exe befindet sich im bin Unterverzeichnis Ihrer Firebird-Installation.Typische Speicherorte, zum Beispiel, sind: C:\Programme\Firebird\Firebird_2_0\bin (Windows) oder /opt/firebird/bin (Linux).Es existiert keine graphische Oberfläche.Sie müssen das Programm von der Kommandozeile aus starten (oder von einer Batchdatei oder einer Anwendung).

Sperren der Datenbank und Sicherung selbst erstellen

Eine typische Reihenfolge, um eine eigene Sicherung durchzuführen, kann wie folgt aussehen:

  1. Sperren der Datenbank mit dem -L (Lock; Sperren) Schalter:

    nbackup [-U user -P password] -L database
  2. Kopieren/sichern/zippen Sie nun die Datenbank mit Ihren bevorzugten Sicherungstools. Die Erstellung einer einfachen Dateikopie ist ebenfalls möglich.

  3. Entsperren Sie die Datenbank mit -N (uNlock; entsperren):

    nbackup [-U user -P password] -N database

Die letzte Anweisung wird wiederum die Änderungen, die in die Deltadatei geschrieben wurden, mit der Hauptdatenbankdatei zusammenführen.

Die Sicherung beinhaltet die Daten, so wie diese zum Zeitpunkt der Sperre der Datenbank vorgefunden wurden, unabhängig davon, wie lange der Zustand der Sperre andauerte und wie lange Sie gewartet haben, bis die Sicherung tatsächlich durchgeführt wurde.

Anmerkungen:

  • Anstelle eines Datenbankdateinamens können Sie auch einen Alias angeben.

  • Die Parameter "-U" und "-P" können weggelassen werden, wenn die Envars ISC_USER und ISC_PASSWORD festgelegt sind, wenn Sie auf einem Posix-System als Root angemeldet sind oder wenn die vertrauenswürdige Authentifizierung unter Windows dies zulässt.Für weitere Informationen, siehe Anmerkungen unter Vollständige Sicherungen erstellen.

  • Ab Firebird 2.5 kann anstelle von -P password auch -FE filename verwendet werden.

  • Sowohl -L als auch -N erstellen reguläre Datenbankverbindungen. In Firebird 2.1 und höher ist es sinnvoll den Schalter -T hinzuzufügen (siehe Datenbanktrigger unterdrücken).

  • Wenn Sie eine Rohgerätedatenbank mit Firebird 2.1 oder höher sperren, kann die Option -S sehr hilfreich sein, siehe auch [nbackup-lock-unlock-rawdevices].

  • Sie können optional -Z hinzufügen, um Versionsinformationen in die erste Zeile der Ausgabe zu drucken.

Warning

Was für das Sichern/Wiederherstellen gilt, gilt auch für die Sperr-/Entsperrschalter: Verwenden Sie sie nicht für Datenbanken mit mehreren Dateien.Lassen Sie nbackup in Datenbanken mit mehreren Dateien überhaupt nicht los, bis sich die Dinge geändert haben!

Wiederherstellen eines Backups nach “nbackup -L”

Eine Kopie einer gesperrten Datenbank ist selbst ebenfalls eine gesperrte Datenbank. Sie können sie also nicht einfach zurückkopieren und verwenden.Wenn Ihre ursprüngliche Datenbank verloren geht oder beschädigt wird und die selbst erstellte Kopie wiederhergestellt werden muss (oder wenn Sie die Kopie auf einem anderen Computer installieren möchten), gehen Sie wie folgt vor:

  1. Kopieren/wiederherstellen/entpacken Sie die gesicherte Datenbankdatei mit Ihren dafür benötigten Werkzeugen.

  2. Entsperren Sie nun die Datenbank, allerdings nicht mit dem -N Schalter, sondern mit -F (fixup):

    nbackup -F database

    Auch hier können Sie optional einen Alias anstelle eines Dateinamens verwenden und -Z für Versionsinformationen hinzufügen.Andere Optionen machen keinen Sinn.

Warum existieren mit -N und -F zwei Entsperrschalter?

  • -N stellt sicher, dass irgendwelche Änderungen seit der Sperre mit -L, mit der Hauptdatenbankdatei zusammengeführt werden.Danach geht die Datenbank wieder in den normalen Lese/Schreib-Modus über und die temporäre Datei wird gelöscht.

  • -F ändert nur das Zustandsflag der selbst-wiederhergestellen Datenbank auf “normal”.

Somit verwenden Sie:

  • -N nachdem Sie eine eigene Kopie/Sicherung erstellt haben (um ein vorangegangenes -L wieder zurückzunehmen);

  • -F nachdem Sie eine eigene Sicherung wiederhergestellt haben.

Note

Es ist etwas unglücklich, dass der letzte Schalter mit -F für Fixup benannt wurde.Es wird in diesem Fall nichts hergerichtet/repariert, sondern es wird die Datenbank nur entsperrt.Andererseits führt der -N (uNlock) Schalter nicht nur ein Entsperren, sondern auch ein Fixup durch,nämlich die Integration der Änderungen von der Deltadatei in die Haupdatenbankdatei.Damit müssen wir leben.Eine Gedankenstütze: Sie können -F als nur kennzeichnen betrachten.

Internas

Note

Dieser Abschnitt enthält keine erforderlichen Kenntnisse, enthält jedoch einige zusätzliche Informationen, die Ihr Verständnis der verschiedenen Schalter vertiefen können.

nbackup [parameter] -L führt folgende Schritte durch:

  1. Datenbankverbindung aufbauen;

  2. Starten einer Transaktion

  3. Aufruf von ALTER DATABASE BEGIN BACKUP (diese Anweisung wurde im Abschnitt Weitere Informationen zu Sicherungen -B diskutiert);

  4. Die Transaktion committen;

  5. Datenbankverbindung trennen.

nbackup [parameter] -N folgt den gleichen Schritten, allerdings mit einem “…​ END BACKUP” in Schritt 3.

nbackup [parameter] -F führt folgende Schritte aus:

  1. Die wiederhergestellte Datenbankdatei wird geöffnet;

  2. In dieser Datei wird das Zustandsflag von gesperrt (nbak_state_stalled) auf normal (nbak_state_normal) geändert;

  3. Die Datei wird wieder geschlossen.

Note

nbackup -F arbeitet rein auf Dateiebene und kann daher auch ohne einen laufenden Firebird Server ausgeführt werden.Jeder -U oder -P Parameter, der zum Kommando hinzugefügt wird, wird vollständig ignoriert.

Sperren von Rohgerätedatenbanken

Wie unter [nbackup-backups-rawdevices] beschrieben, können Probleme auftreten, wenn ein Delta für eine Datenbank auf einem Rohgerät erstellt werden muss.In Firebird 2.1 und höher weigert sich nbackup daher, mit Rohgerätedatenbanken zu arbeiten, es sei denn, es wurde zuvor ein expliziter Speicherort für die Delta-Datei festgelegt.Informationen zum Verfahren finden Sie unter [nbackup-deltafile] etwas weiter unten.

Es gibt noch ein weiteres Problem, wenn Sie ein Rohgerät sperren und kopieren: Sie kennen die tatsächliche Größe der Datenbank nicht!Das Rohgerät kann 10 GB groß sein, aber die Datenbank belegt möglicherweise nur 200 MB dieses Speicherplatzes.Um zu vermeiden, dass das gesamte Gerät kopiert werden muss, um auf der sicheren Seite zu sein — was möglicherweise viel Zeit und Platz verschwendet --, hat Firebird 2.1 einen neuen Parameter für nbackup eingeführt: -S.Dieser Parameter ist nur in Kombination mit -L gültig. Wenn dieser vorhanden ist, schreibt nbackup die Datenbankgröße in Seiten nach dem Sperren der Datenbank in stdout.Da die Größe in Seiten angegeben ist, muss sie mit der Seitengröße der Datenbank multipliziert werden, um die tatsächliche Anzahl der zu kopierenden Bytes zu erhalten.Wenn Sie das Kopierdienstprogramm dd verwenden, können Sie die Seitengröße als (i)bs und die Ausgabe von nbackup -L -S als count angeben.

Sperren / Entsperren der Datenbank bei der Sicherung virtueller Maschinen

Die Verwendung von Sicherungswerkzeugen für virtuelle Maschinen ohne Vorbereitung der Datenbank für einen solchen Sicherungstyp kann zu einer beschädigten (d.h. nutzlosen) Sicherungskopie führen.

Der Firebird-Server verwendet intensiv seinen eigenen Cache im RAM, um den Betrieb zu beschleunigen, und implementiert komplexe Techniken, um die Datenbankkonsistenz zu jedem Zeitpunkt sicherzustellen.Backup-Tools für virtuelle Maschinen kennen den Cache von Firebird nicht und betrachten Datenbankdateien normalerweise nicht als Dateien mit wahlfreiem Zugriff.

Wenn die Sicherung der virtuellen Maschine abgeschlossen ist, hat die darin enthaltene Datenbankdatei den Status wie nach einem Hard-Reset der VM, und sehr oft ist eine solche Kopie nicht konsistent, also beschädigt.Die Wahrscheinlichkeit eines solchen Problems ist höher, wenn viele aktive Benutzer die Datenbank ändern oder wenn ein aktiver Sweep-Prozess läuft.

Solche inkonsistenten Sicherungen können in jeder virtualisierten Umgebung, einschließlich öffentlicher Clouds, auftreten.

Um eine gute Firebird-Datenbanksicherung mit dem VM-Sicherungstool zu erstellen, muss die Datenbankdatei vor der VM-Sicherung mit nbackup gesperrt und danach entsperrt werden.Normalerweise ermöglicht das VM-Sicherungstool die Ausführung benutzerdefinierter Skripts vor und nach der Sicherung, mit denen Sie Firebird-Datenbanken sperren / entsperren können.

Delta-Datei einstellen

Standardmäßig befindet sich die Delta-Datei im selben Verzeichnis wie die Datenbank selbst.Der Dateiname ist ebenfalls derselbe, jedoch mit .delta.Dies ist normalerweise kein Problem, aber manchmal ist es wünschenswert oder sogar notwendig, den Ort zu ändern, z.B. wenn die Datenbank auf einem Rohgerät gespeichert ist.Nbackup selbst hat keine Möglichkeit, den Speicherort festzulegen.Dies muss über SQL erfolgen.

Stellen Sie mit jedem Client eine Verbindung zur Datenbank her, über die Sie Ihre eigenen SQL-Anweisungen eingeben und den folgenden Befehl eingeben können:

alter database add difference file 'pfad-und-dateiname'

Die benutzerdefinierbare Spezifikation der Deltadatei wird in der Datenbank gespeichert.Diese ist in der Systemtabelle RDB$FILES hinterlegt.Um das Standardverhalten wiederherzustellen, führen Sie die folgende Anweisung aus:

alter database drop difference file

Sie können beim Erstellen einer neuen Datenbank auch einen benutzerdefinierten Delta-Speicherort angeben:

create database 'path-and-dbname' difference file 'path-and-deltaname'
Note
  • Falls Sie in der [ADD] DIFFERENCE FILE-Anweisung nur den Dateinamen angeben, dann ist es wahrscheinlich, dass sich die Deltadatei nicht in dem selben Verzeichnis wie die Datenbank befinden wird, sondern im aktuellen Verzeichnis aus Sicht des Servers.Unter Windows kann das zum Beispiel das Systemverzeichnis sein.Die gleiche Logik gilt auch für relative Pfadangaben.

  • Der gesamte Verzeichnispfad muss bereits vorhanden sein.Firebird versucht nicht, fehlende Verzeichnisse zu erstellen.

  • Falls Sie die Spezifikation der Deltadatei ändern möchten, dann müssen Sie zuerst die alte Spezifikation mit DROP entfernen und die Neue mit ADD hinzufügen.

Sicherungsverlauf

Die Firebird-Datenbank speichert einen Verlauf aller nbackup-Aktivitäten in der Systemtabelle RDB$BACKUP_HISTORY.Diese Informationen werden von nbackup selbst für die interne Verwaltung verwendet, können aber auch verwendet werden, um herauszufinden, wann die letzte Sicherung durchgeführt wurde, auf welcher Ebene und wie der Dateiname lautet.

Um beispielsweise die letzten 5 Sicherungen anzuzeigen, können Sie Folgendes verwenden:

SELECT RDB$BACKUP_ID, RDB$TIMESTAMP, RDB$BACKUP_LEVEL, RDB$GUID,
    RDB$SCN, RDB$FILE_NAME
FROM RDB$BACKUP_HISTORY
ORDER BY RDB$TIMESTAMP DESC
ROWS 5

Die Spalten in RDB$BACKUP_HISTORY sind:

Spalte Beschreibung

RDB$BACKUP_ID

Primärschlüssel

RDB$TIMESTAMP

Uhrzeit und Datum der Sicherung

RDB$BACKUP_LEVEL

Backup-Level

RDB$GUID

GUID der Sicherung (zum Überprüfen der Abhängigkeiten zwischen Dateien)

RDB$SCN

Höchste Seitenmarkierung in der Sicherung

RDB$FILE_NAME

Dateiname der Sicherung

Eine Erläuterung des Feldes RDB$SCN finden Sie im Abschnitt [nbackup-background].

Der Inhalt der Tabelle RDB$BACKUP_HISTORY wird von gbak nicht gesichert und wiederhergestellt.Weitere Informationen finden Sie im Abschnitt [nbackup-background].

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:

  1. nbak_state_normal (kein Backup) zu nbak_state_stalled (Datenbank schreibt in Delta-Datei)

  2. nbak_state_stalled zu nbak_state_merge (Zusammenführen der Delta-Datei zurück in die Datenbank)

  3. nbak_state_merge zu nbak_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

0

Seiten vor einer Sicherung

1

Seiten, die während der Sicherung in die Delta-Datei geschrieben/aktualisiert wurden

2

Seiten, die während des Zusammenführens der Delta-Datei in die Hauptsicherung geschrieben/aktualisiert wurden

3

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.

Dokumentenhistorie

Der genaue Dateiversionsverlauf wird im Firebird-Dokumentations-Git-Repository aufgezeichnet; siehe https://github.com/FirebirdSQL/firebird-documentation

Versionsgeschichte

0.1

21. Okt. 2005

PV

Erste Fassung.

1.0

1. Dez. 2006

PV

“Beta”-Referenz in der Versionsinfo zu Beginn entfernt.Warnung bzgl. der Angabe von Sicherungsdateinamen in Bezug auf die Verwendung mit nbackup -R geändert.“(oder wird)” im ersten Satz der Dokumentenhistorie entfernt.

In den Beispielen wurde C:\Datenbanken auf C:\Daten geändert, um Darstellungsprobleme im PDF Dokument mit der Hintergrundfarbe zu vermeiden.

Abschnitt Setzen der Deltadatei hinzugefügt, und den Abschnitt Sollten Sie weiterlesen? entsprechend abgeändert.

1.0

4. Dez. 2006

TS

Deutsche Übersetzung basierend auf der englischen Dokumentenversion 1.0. Feedback für die Übersetzung von Frank Ingermann und Paul Vinkenoog.

1.1

5. Mai 2008

PV

Backups erstellen und wiederherstellen: Warnung vor Hochlastrisiken mit nbackup 2.0.0-2.0.3 hinzugefügt.

Vollständige Sicherung wiederherstellen: Die falsche Aussage, dass nbackup eine vorhandene Datenbank überschreibt, wenn keine aktiven Verbindungen vorhanden sind, wurde korrigiert.Der kursive Text über den Fehler bei der interaktiven Wiederherstellung wurde in einen Hinweis geändert und dessen Korrektur in 2.0.1 erwähnt.

Inkrementelle Sicherung: In 2.1 wurde eine Warnung eingefügt, dass inkrementelle Sicherungen fehlerhaft sind.

Datenbanktrigger unterdrücken (Firebird 2.1+): Neuer Abschnitt.

Sollten Sie weiterlesen?: Rechtschreibfehler beseitigt (engl. you → your).

1.2

19. Sep 2011

PV

Formatierung der Dokumentquelle: Geändert max. Zeilenlänge bis 100, ohne offene Zeilen.

Alle Abschnitte und Unterabschnitte haben jetzt eine ID.

Einleitung: Erster Satz bearbeitet.

Nbackup features — eine Übersicht {zwei Doppelpunkte} Einschränkungen von nbackup: Das zuvor zuletzt aufgelistete Listenelement wurde bearbeitet, um den Services Manager zu erwähnen.Listenelement zum direkten Dateizugriff hinzugefügt.Letzten Absatz entfernt.

Funktionen und Parameter: Neuer Abschnitt.

Backups erstellen und wiederherstellen: Leicht veränderter letzter Satz des ersten Abs.Erweiterte Warnung: Informationen zur Rolle der direkten I/O mit großen Datenbanken unter Posix hinzugefügt.

Backups erstellen und wiederherstellen :: Vollständige Sicherungen :: Vollständige Sicherungen erstellen: Korrigiertes und erweitertes Listenelement für die Parameter -U und -P.Listenelemente für den Parameter -FE (neu in 2.5), den Parameter -T (neu in 2.1) und den Parameter -D (neu in 2.5, Backport auf 2.1.4) hinzugefügt.In Listenelementen, die mit “Die verschiedenen Parameter” beginnen, lautet der Text in Klammern jetzt (-B, -U usw.), da viele neue Parameter hinzugefügt wurden.

Backups erstellen und wiederherstellen :: Interna: Kleine Anpassung (engl. image → impression).

Backups erstellen und wiederherstellen :: Vollständige Sicherungen :: Wiederherstellen einer vollständigen Sicherung: Die Parameter -U und -P wurden aus der Spezifikation entfernt.Listenelement für Aliase hinzugefügt.Separater Hinweis zum fehlgeschlagenen interaktiven Wiederherstellen auf kursiven Text im Listenelement selbst geändert.Listenelement hinzugefügt, dass Server nicht ausgeführt werden muss und Anmeldeinformationen ignoriert werden müssen.

Backups erstellen und wiederherstellen :: Inkrementelle Backups: Bearbeitete Warnung: Fix in 2.1.1 erwähnt.

Backups erstellen und wiederherstellen :: Inkrementelle Backups :: Inkrementelle Sicherung wiederhergestellen: Die Parameter -U und -P wurden aus der formalen Syntax und dem 1. Listenelement entfernt.

Backups erstellen und wiederherstellen :: Sichern von Rohgerätedatenbanken: Neuer Abschnitt.

Backups erstellen und wiederherstellen :: Datenbanktrigger unterdrücken: Dieser Abschnitt wurde bearbeitet und erweitert, aber die Bemerkung “SYSDBA und nur Eigentümer” entfernt.

Backups erstellen und wiederherstellen :: Direkte I/O (Firebird 2.1.4+): Neuer Abschnitt

Backups erstellen und wiederherstellen :: Informationsoptionen (Firebird 2.5+): Neuer Abschnitt

Backups erstellen und wiederherstellen :: Sicherungen auf Remote-Servern (Firebird 2.5+): Neuer Abschnitt

Sperren und entsperren: Leicht veränderter letzter Satz des zweiten Abs.

Sperren und entsperren:: Sperren der Datenbank und Sicherung selbst erstellen: Kommentare hinzugefügt (Abs. + Auflistung).

Sperren und entsperren :: Wiederherstellen einer nach nbackup -L erstellten Sicherung: Informationen zur Verwendung von Alias und -Z wurden zu Schritt 2 der Prozedur hinzugefügt.Im nächsten Absatz übersetzt “en” (Rest aus dem niederländischen Original) → “und”.Hinweis zu Hinweis über das Lesen von -F als nur kennzeichnen hinzugefügt.

Sperren und entsperren :: Sperren von Rohgerätedatenbanken: Neuer Abschnitt.

Sperren und entsperren :: Interna: Bearbeiteter Hinweis.

Delta-Datei einstellen: 1. Absatz weitgehend umgeschrieben;bezieht sich jetzt auf Rohgerätedatenbanken.Letzten Satz in einen eigenen Absatz aufgeteilt.Informationen (Para + Programmliste) zum Setzen von Delta mit CREATE DATABASE hinzugefügt.1. Liste in Anmerkungen: ADD[ADD].

Dokumenthistorie: Link auf CVS geändert (sowohl Text als auch URL);zeigt jetzt direkt auf das Dokument.

Lizenzhinweise: Ende des Jahres in Copyright Copyright jetzt 2011.

1.3

12. Okt. 2011

PV

Funktionen und Parameter: In der ersten Tabelle: selbst wiederhergestellt → vom Benutzer wiederhergestellt.In der zweiten Tabelle: Selbstwiederherstellung → Benutzerwiederherstellung.

Sperren und entsperren :: Sperren der Datenbank und Sicherung selbst erstellen: Abschnitt umbenannt Sperren der Datenbank und Sicherung selbst erstellen.

Sperren und entsperren :: Wiederherstellen einer nach nbackup -L erstellten Sicherung: 2. Liste in der 1. Auflistung: selbst wiederhergestellt → vom Benutzer wiederhergestellt.

1.4

18. Sep. 2014

MR

Sicherungsverlauf: Neuer Abschnitt

Technische Hintergrundinformationen Neuer Abschnitt

1.5

27. Jun. 2020

MR

Konvertierung in AsciiDoc, geringfügige Bearbeitung von Texten

1.5-de

01. Jul. 2020

MK

Deutsche Übersetzung basierend auf der englischen Dokumentenversion 1.5.

1.6

25. Jul. 2020

AK

Absatz über VM-Sicherungen, Beispiel mit nicht standardmäßigem Port, Absatz mit Leistungshinweisen zur inkrementellen Sicherung

1.6-de

25. Jul. 2020

MK

Ergänzungen von Alexey Kovyazin in deutsche Übersetzung implementiert. Dokumenttitel angepasst.