Inkrementelle Backups
Warning
|
Die inkrementelle Sicherungsfunktion wurde in Firebird 2.1.0 vollständig beschädigt und in 2.1.1 erneut behoben. |
Nbackup Funktionalität - Ein Überblick
Backups erstellen und wiederherstellen
Warning
|
Die inkrementelle Sicherungsfunktion wurde in Firebird 2.1.0 vollständig beschädigt und in 2.1.1 erneut behoben. |
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 |
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.
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. |
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.
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.
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.
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.
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).
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.
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!
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.
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.
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!
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.
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! |
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:
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
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 |
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:
Datenbankverbindung aufbauen;
Starten einer Transaktion
Aufruf von ALTER DATABASE BEGIN BACKUP
(diese Anweisung wurde im Abschnitt Weitere Informationen zu Sicherungen -B diskutiert);
Die Transaktion committen;
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:
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.
Note
|
nbackup |
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.
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.
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
|
|
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 |
---|---|
|
Primärschlüssel |
|
Uhrzeit und Datum der Sicherung |
|
Backup-Level |
|
GUID der Sicherung (zum Überprüfen der Abhängigkeiten zwischen Dateien) |
|
Höchste Seitenmarkierung in der Sicherung |
|
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].
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:
nbak_state_normal
(kein Backup) zu nbak_state_stalled
(Datenbank schreibt in Delta-Datei)
nbak_state_stalled
zu nbak_state_merge
(Zusammenführen der Delta-Datei zurück in die Datenbank)
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 |
---|---|
|
Seiten vor einer Sicherung |
|
Seiten, die während der Sicherung in die Delta-Datei geschrieben/aktualisiert wurden |
|
Seiten, die während des Zusammenführens der Delta-Datei in die Hauptsicherung geschrieben/aktualisiert wurden |
|
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.
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 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 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 Backups erstellen und wiederherstellen :: Interna: Kleine Anpassung (engl. image → impression). Backups erstellen und wiederherstellen :: Vollständige Sicherungen :: Wiederherstellen einer vollständigen Sicherung: Die Parameter 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 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 “ 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 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 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. |