Firebird Dokumentation → Firebird Datenbank Dokumentation → Firebird's nbackup Tool → 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).
Eine typische Reihenfolge, um eine eigene Sicherung durchzuführen, kann wie folgt aussehen:
Sperren der Datenbank mit dem -L (Lock; Sperren) Schalter:
nbackup [-U <user> -P <password>] -L <database>
Kopieren/sichern/zippen Sie nun die Datenbank mit Ihren bevorzugten Sicherungstools. Die Erstellung einer einfachen Dateikopie ist ebenfalls möglich.
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.
Was für die Sicherung und die Wiederherstellung gilt, trifft auch auf die Sperren/Entsperren-Schalter zu: Verwenden Sie diese nicht auf Mehrdateiendatenbanken. Bis sich diese Tatsache geändert hat, verwenden Sie nbackup nie auf solchen Datenbanken!
Eine Kopie einer gesperrten Datenbank ist selbst wiederum eine gesperrte Datenbank. Somit können Sie diese nicht einfach zurückkopieren und danach normal damit weiterarbeiten. Sollte Ihre Originaldatenbank verloren gehen oder beschädigt werden und soll dafür Ihre selbsterstellte Sicherung wiederhergestellt werden (oder wenn Sie die Kopie auf einem anderen Rechner installieren wollen), dann gehen Sie wie folgt vor:
Kopieren/wiederherstellen/entpacken Sie die gesicherte Datenbankdatei mit Ihren dafür benötigten Werkzeugen.
Entsperren Sie nun die Datenbank, allerdings nicht mit dem -N Schalter, sondern mit -F (fixup):
nbackup -F <database>
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.
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.
Hinweis: Dieser Abschnitt ist nicht notwendig, um mit nbackup arbeiten zu können, sondern dieser Abschnitt soll Ihnen für das bessere Verständnis der unterschiedlichen Kommandozeilenschalter dienen.
nbackup -L führt die folgenden Schritte durch:
Datenbankverbindung aufbauen;
Eine Transaktion starten;
Aufruf von ALTER DATABASE BEGIN BACKUP (diese Anweisung wurde in diesem Abschnitt diskutiert);
Die Transaktion committen;
Datenbankverbindung schließen.
nbackup -N folgt den gleichen Schritten, allerdings mit einem „...END BACKUP“ in Schritt 3.
nbackup -F arbeitet wie folgt:
Die wiederhergestellte Datenbankdatei wird geöffnet;
In dieser Datei wird das Zustandsflag von gesperrt (nbak_state_stalled) auf normal (nbak_state_normal) geändert;
Die Datei wird wieder geschlossen.
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.
Firebird Dokumentation → Firebird Datenbank Dokumentation → Firebird's nbackup Tool → Sperren und Entsperren |