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ürBackup
(Sicherung). Der Backup-Level0
bedeutet eine vollständige Sicherung. Sicherungslevel größer als0
, 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
undISC_PASSWORD
gesetzt sind.
- 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:
- 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.
- 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. - 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.
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!
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.
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), wirdnbackup
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
oder4
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.
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 >>