Erstellen und Wiederherstellen von Sicherungen

<< nbackup Funktionalität - Ein Überblick | Firebird's nbackup Tool | Sperren und Entsperren >>

Erstellen und Wiederherstellen von Sicherungen

Um zu beginnen: 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). So wie bei den meisten Tools, die mit Firebird mitkommen, besitzt auch nbackup keine graphische Benutzeroberfläche. Sie müssen nbackup von der Kommandozeile aus starten (oder von einer Batchdatei oder einer Anwendung).

Vollständige Sicherungen

Erstellen von vollständigen Sicherungen

Um eine vollständige Datenbanksicherung durchzuführen, verwenden Sie das folgende Kommando:

 nbackup [-U <user> -P <password>] -B 0 <database> [<backupfile>]

Zum Beispiel:

 C:\Daten> nbackup -B 0 inventory.fdb inventory_1-Mar-2006.nbk

Anmerkungen:

  • Der Parameter -B steht für Backup (Sicherung). Der Backup-Level 0 bedeutet eine vollständige Sicherung. Sicherungslevel größer als 0, werden für inkrementelle Sicherungen verwendet. Dies wird später behandelt.
  • Anstatt eines Datenbankdateinamens können Sie auch einen Alias verwenden.
  • Anstatt eines Dateinamens für die Sicherung können Sie auch stdout angeben. Dies wird die Sicherung an die Standardausgabe übergeben, von wo Sie die Sicherung an eine Bandarchivierung oder an ein Komprimierungstool weiterleiten können.
  • Die -U (User; Benutzer) und -P (Passwort) Parameter müssen nicht notwendigerweise angegeben werden:
    • falls Sie als Superuser (root, Administrator...) angemeldet sind, oder
    • falls die Umgebungsvariablen ISC_USER und ISC_PASSWORD gesetzt sind.
Zum Zwecke der Vereinfachung werden diese Parameter in den Beispielen nicht verwendet.
  • Die unterschiedlichen Parameter (-B, -U und -P) können in einer beliebigen Reihenfolge angegeben werden. Natürlich muss jeder Parameter unmittelbar mit dessen Argument(en) näher spezifiziert werden. Im Falle von -B existieren drei Argumente: Backup-Level, Datenbank und Sicherungsdatei, und zwar in dieser Reihenfolge!
  • Falls der -B Parameter zum Schluß kommt, können Sie den Namen der Sicherungsdatei auch weglassen. In diesem Fall wird nbackup einen Dateinamen, der auf dem Datenbanknamen, dem Backup-Level und dem aktuellen Zeitstempel basiert, zusammensetzen. Dies kann zu Problemen in der Namensgebung führen (und einer fehlgeschlagenen Sicherung), falls zwei Sicherungskommandos, mit identischem Backup-Level, innerhalb der selben Minute ausgeführt werden.

Warnung: Verwenden Sie nbackup nicht für Mehrdateiendatenbanken. Dies kann eine Beschädigung der Datenbank und Datenverlust zur Folge haben, trotz der Tatsache, dass sich nbackup bzgl. dieser Verwendung trotzdem ausführen lassen wird.

Einige Anmerkungen zu den Internas

Hinweis: Was hier folgt, ist nicht notwendigerweise ein Wissen, das Sie für die Verwendung von nbackup benötigen. Dieser kurze Abschnitt gibt nur einen groben und unvollständigen Überblick, was intern bei der Ausführung von nbackup -B geschieht:

  1. Zuallererst wird die Hauptdatenbankdatei durch das Ändern eines internen Flags gesperrt. Von diesem Zeitpunkt an werden alle Änderungen in der Datenbank in eine temporäre Datei geschrieben, die auch als Differenzdatei oder Deltadatei bezeichnet wird.
  2. Danach wird die Sicherung durchgeführt. Bei der daraus resultierenden Sicherungsdatei handelt es sich nicht um eine reguläre Dateikopie, sondern eine Wiederherstellung muss ebenfalls mit nbackup durchgeführt werden.
  3. Nach der Fertigstellung der Sicherung wird der Inhalt der Deltadatei mit der Hauptdatenbankdatei zusammengeführt. Im Anschluß daran wird die Sperre auf der Datenbankdatei wieder entfernt (das Flag wird wieder auf "normal" zurückgesetzt) und die Deltadatei wird gelöscht.

Die Funktionalität von Schritt 1 und 3 ist über zwei neue SQL-Anweisungen verfügbar: ALTER DATABASE BEGIN BACKUP und ALTER DATABASE END BACKUP. Entgegen den verwendeten Bezeichnungen führen diese Anweisungen nicht die eigentliche Sicherung durch, sondern sie stellen den Zustand her, unter dem die Hauptdatenbankdatei auf sichere Art und Weise gesichert werden kann. Um dies klar zu stellen: Sie brauchen diese Anweisungen nicht selbst ausführen, sondern nbackup wird das zum richtigen Zeitpunkt für Sie durchführen.

zurück zum Seitenanfang

Wiederherstellen einer vollständigen Sicherung

Eine vollständige Sicherung wird wie folgt wiederhergestellt:

 nbackup [-U <user> -P <password>] -R <database> [<backupfile>]

Zum Beispiel:

 C:\Daten> nbackup -R inventory.fdb inventory_1-Mar-2006.nbk

Verwendungshinweise:

  • Sie geben keinen Level bei der Wiederherstellung an.
  • Der -R Parameter muss zum Schluß angegeben werden. Die Gründe dafür werden später klarer.
  • Falls die angegebene Datenbank bereits existiert und es keine Verbindungen zu dieser Datenbank gibt, dann wird die Datenbank ohne Warnung überschrieben! Falls Benutzer mit der Datenbank verbunden sind, dann wird die Wiederherstellung fehlschlagen und Sie bekommen eine Fehlermeldung angezeigt.
  • Auch hier kann die Sicherungsdatei weggelassen werden. Falls Sie das tun, wird Sie nbackup zur Eingabe eines Dateinamens auffordern. Dieses Feature funktioniert derzeit allerdings nicht ordnungsgemäß (zumindest nicht unter Windows). Falls Sie den/die Sicherungsdateinamen auf diese Art und Weise angeben, dann bekommen Sie eine Fehlermeldung und eine fehlgeschlagene Wiederherstellung!

zurück zum Seitenanfang

Inkrementelle Sicherungen

Erstellen von inkrementellen Sicherungen

Um eine inkrementelle ("differentielle") Sicherung zu erstellen, muss ein Backup-Level größer 0 angegeben werden. Eine inkrementelle Sicherung des Levels N beinhaltet immer die Datenbankänderungen seit der aktuellsten Level N-1 Sicherung.

Beispiele:

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

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

Diese Sicherung wird nur die Änderungen des letzten Tages beinhalten.

Wieder einen Tag später erstellen Sie eine weitere Level 1 Sicherung:

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

Diese Sicherung beinhaltet die Änderungen der letzten beiden Tage, eben seit der vollständigen Sicherung, und nicht seit der letzten Level 1 Sicherung.

Ein paar Stunden später, erstellen Sie eine Level 2 Sicherung:

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

Diese jüngste Sicherung beinhaltet nur die Änderungen seit der aktuellsten Level 1 Sicherung, das bedeutet, die Änderungen der letzten Stunden.

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

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

zurück zum Seitenanfang

Wiederherstellen von inkrementellen Sicherungen

Wenn Sie inkrementelle Sicherungen wiederherstellen wollen, dann müssen Sie die vollständige Kette der inkrementellen Sicherungsdateien 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ügen der inkrementellen Sicherungen.)

Die formale Syntax dafür ist:

 nbackup [-U <user> -P <password>]
          -R <database> [<backup0> [<backup1> [...] ] ]

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

 C:\Daten> 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 einer Zeile ein und drücken am Schluß die [Enter] Taste.

Anmerkungen (zusätzlich zu den Anmerkungen bei der Wiederherstellung einer vollständigen Sicherung):

  • 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.

Nicht-verbundene 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.

zurück zum Seitenanfang

Ein praktisches Beispiel

Ein nbackup-basiertes inkrementelles Sicherungskonzept könnte wie folgt 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 Sperren und Entsperren), oder falls Sie den Default-Namen oder den Speicherort der Deltadatei ändern wollen (siehe Setzen der Deltadatei).

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

Siehe auch:
englischsprachig:
InterBase® and Firebird command-line utilities: nbackup

zurück zum Seitenanfang
<< nbackup Funktionalität - Ein Überblick | Firebird's nbackup Tool | Sperren und Entsperren >>