Datensicherung
<< Datenbank-Konfiguration | Firebird 2 Administrations-Handbuch | Links, Literatur >>
Datensicherung
Backups einer Firebird-Datenbank sind aus folgenden Gründen sinnvoll:
- Die Datenbank-Datei (
.fdb
-Datei) sollte nicht direkt als Datei gesichert werden, da sie nicht zwischen verschiedenen Plattformen und InterBase®/Firebird-Versionen kompatibel ist. - Die
.fdb
-Datei befindet sich außerdem in einem unstabilen Zustand, wenn noch mindestens ein Benutzer mit der Datenbank verbunden ist (offene Schreibzugriffe, usw.). Auch das spricht gegen ein Sichern der Datenbank-Datei auf Datei-Ebene. - Im Backup müssen keine leeren Seitenbereiche oder Indexe gespeichert werden. Die Backup-Datei ist also (meistens viel) kleiner.
- Durch einen Backup mit anschließendem Restore können Datenbanken auch repariert bzw. wieder verkleinert werden.
- Wenn eine Datenbank auf eine andere Plattform transportiert werden soll (z. B. von einem Windows-auf einen Linux-Server), wird nicht die Datenbank-Datei transportiert, sondern das Backup. Dieses wird dann auf dem Ziel-Server über einen Restore wieder eingespielt.
Bei einem Backup entsteht eine Backup-Datei. Diese hat ein eigenes Dateiformat und enthält eine konsistente Datensicht, da das Backup als eigene Transaktion die Daten ausliest.
Ein Backup kann auch im laufenden Betrieb ausgeführt werden. Während dieser Zeit ist die Leistung der Datenbank herabgesetzt, vor allem wenn das Backup länger läuft.
Die übliche Datei-Endung für Backups ist: .fbk
Datensicherung in Produktiv-Umgebungen
In Produktiv-Umgebungen sollte regelmäßig ein Backup ausgeführt werden. Die so entstehende .fbk
-Datei kann dann mit üblichen Methoden zur Dateisicherung gesichert werden.
Wenn der Server nachts durchläuft, kann das Backup über einen Scheduler erfolgen (bei Windows: AT-Dienst, bei Linux: cron).
Windows
Über den AT-Befehl können einem Windows-NT-basierten Server (NT4, 2000, XP, 2003) Aufgaben erteilt werden, die zu einem bestimmten Zeitpunkt ausgeführt werden sollen.
Beispiel: Es soll jede Nacht um 4 Uhr eine Datenbank gesichert werden. Geben Sie dazu auf der Windows-Eingabeaufforderung folgenden Befehl ein:
at 04:00 /every:mo,di,mi,do,fr,sa,so /interactive ->c:\Programme\Firebird\bin\gbak -t -user SYSDBA -password masterkey
->harry:c:\DB\pmm.fdb k:\Backups\pmm.fbk
Tipp: Lassen Sie solche Aufgaben nicht nachts zwischen 02:00 und 03:00 Uhr laufen. Bei der Umstellung auf Sommerzeit im Frühjahr gibt es diese Stunde gar nicht, beim Wechsel auf Winterzeit gleich zwei mal.
Das GBAK
-Tool
Backup und Restore werden mit dem GBAK
-Tool von Firebird ausgeführt. Das GBAK
-Tool kann auf einem beliebigen Rechner installiert sein, auch auf dem Datenbank-Server selbst. Es befindet sich im bin
-Verzeichnis der Firebird-Installation.
GBAK
ist ein Kommandozeilen-Tool, es kann also gut von Batchdateien, Shellskripten oder Zeitplan-Diensten aus aufgerufen werden.
Allgemeine Aufruf-Syntax
GBAK <optionen> -user <benutzer> -password <passwort> <quelle> <ziel>
Die wichtigsten allgemeinen Optionen:
–b | Backup (default; muss nicht unbedingt angegeben werden). |
–c | Restore (Create). |
–r | Replace: Eine bereits bestehende Datenbank wird durch den Restore überschrieben. |
–user <benutzername> | Angabe des Benutzernamens. |
–password <passwort> | Angabe des Passworts. |
–v | Verbose: Genaue Ausgabe von Meldungen über die aktuell durchgeführte Aktion. |
–y <dateiname> | Gibt alle Meldungen in die Datei aus. Die angegebene Datei darf zum Zeitpunkt des Starts von GBAK nicht existieren! |
–y suppress_output | Keine Ausgabe von Meldungen. |
–z | Zeigt die Versionsnummer von GBAK an. |
Backup
Beim Backup wird als Quelle die Datenbank und als Ziel die Backup-Datei angegeben. Das Ziel muss ein Dateiname im Dateisystem des Rechners sein, der GBAK
ausführt. Wenn kein Pfad für die Zieldatei angegeben wird, wird das aktuelle Verzeichnis (Current Directory) verwendet.
Ein Backup kann nur vom SYSDBA
oder vom Eigner einer Datenbank ausgeführt werden.
Optionen
–t | Transportable Backup: Es wird ein Backup erstellt, das von allen InterBase®/Firebird-Datenbanken gelesen werden kann, unabhängig von Version und Plattformen. Empfohlen für alle Backups. |
–g | Es wird während des Backups keine Garbage Collection durchgeführt. |
–ignore | Checksummenfehler werden während des Backup ignoriert. |
–m | Metadata only: Es werden nur die Metadaten gesichert, keine Tabelleninhalte. |
–nt | Non-Transportable Format: Das Gegenteil von –t . Benutzung nicht empfohlen. |
–se <hostname>:service_mgr | Verwendet den ServiceManager. Backup: Die Sicherungs-Datei wird auf dem Datenbank-Server angelegt. Restore: Die Rücksicherung erfolgt von einer Datei, die auf dem Datenbank-Server liegt. Diese Option muss zwingend verwendet werden, wenn die Benutzer-Datenbank security2.fdb gesichert werden soll. |
#BeispielFürEinenBeispiel für einen gängigen Backup
gbak -v -t -user SYSDBA -password masterkey dbserver:pmm c:\Backup\pmm.fbk
–v | Meldungen ausgeben. |
–t | Transportables Format. |
–user SYSDBA | Benutzername. |
–password masterkey | Passwort (das Passwort kann in Anführungszeichen gesetzt werden, wenn Leerstellen enthalten sind). |
dbserver:pmm | Datenbank-Name (pmm ist hier offensichtlich ein auf dem Server dbserver gesetztes Alias). |
Noch ein Beispiel:
gbak -v -t -user SYSDBA -password masterkey joe:/db/pmm.fdb c:\backup.fbk
#BeispielFürEinBeispiel für ein Backup, nur Metadaten
gbak -v -t -m -user SYSDBA -password masterkey dbserver:pmm c:\backup.fbk
Restore
Mit dem Restore wird ein vorher erstelltes Backup wieder in eine Datenbank umgewandelt. Als Quelle wird die Backup-Datei (.fbk
-Datei) und als Ziel der Datenbankname angegeben. Es ist möglich, eine bestehende Datenbank durch den Restore zu überschreiben.
Optionen
–c | Restore in eine neue Datenbank. D. h. die Datenbank-Datei der neuen Datenbank DARF NICHT existieren, sonst wird der Restore mit einer Fehlermeldung abgebrochen. Schließt sich mit –rep aus. |
–rep | Ersetzt eine bereits bestehende Datenbank. Diese Datenbank darf zum Zeitpunkt des Restore nicht benutzt werden! Kann nur vom SYSDBA oder vom Eigner der zu überschreibenden Datenbank durchgeführt werden. Schließt sich mit –c aus. |
–i | Deaktiviert alle Indexe beim Restore. Dadurch geht der Restore schneller und die Indexe können einzeln oder gemeinsam aktiviert und dadurch neu aufgebaut werden. |
–n | Entfernt alle Gültigkeitsbeschränkungen (validity constraints) aus den Metadaten. Dadurch können auch Datenbestände zurückgesichert werden, die solche Beschränkungen verletzen und sich sonst nicht wieder herstellen ließen. |
–o | Tabellen werden einzeln zurückgesichert. Dadurch können sie auch nur teilweise wieder hergestellt werden. |
–p <bytes> | Setzt eine andere Seitengröße für die neu zu erstellende Datenbank. Die Seitengröße muss ein Vielfaches von 1024 sein. Werte > 16984 sind nicht zugelassen, Werte < 4096 nicht empfohlen (ab Firebird 2.1 nicht mehr zugelassen). |
–use_all_space | Lastet alle Datenbankseiten zu 100% aus anstelle der sonst üblichen 80%. |
#BeispielGängigenRestoreBeispiel für einen gängigen Restore
gbak -c -v -user SYSDBA -password masterkey c:\backup\pmm.fbk dbserver:pmm
Beispiel für einen Restore über eine bestehende Datenbank
gbak -rep -v -user SYSDBA -password masterkey c:\backups\pmm.fbk dbserver:/db/pmm2.fdb
Benutzer-Datenbank security2.fdb
Alle Benutzer des Firebird-Dienstes sind in der Benutzer-Datenbank security2.fdb
im Firebird-Stammverzeichnis gespeichert. Für eine vollständige Datensicherung sollte auch von dieser Datenbank eine Sicherung angefertigt werden. Hierzu kann GBAK
verwendet werden.
Allerdings kann die Security-Datenbank nicht remote gesichert werden. Es muss zwingend der ServiceManager verwendet werden. Dadurch entsteht die Sicherungsdatei physisch auf dem Datenbank-Server. Wenn sie in ein freigegebenes Verzeichnis hinein erzeugt wird, kann sie anschließend an einen anderen Ort verschoben werden.
Aus Sicherheitsgründen sollte weder die Security-Datenbank noch eine Datensicherung davon für nicht-Administratoren zugänglich sein.
Eine direkte Rücksicherung der security2.fdb
ist allerdings möglich, da der Firebird-Dienst diese immer offen hat. Für den Fall, dass die security2.fdb
also wiederhergestellt werden soll, gehen Sie folgendermaßen vor:
- Es muss auf jeden Fall eine funktionsfähige Benutzer-Datenbank vorliegen, damit der Dienst laufen kann. Ggf. muss also eine Neuinstallation erfolgen. (Hier ist dann ein
SYSDBA
-Benutzer eingerichtet, dessen Passwort nach der Installation bekannt ist.) - Führen Sie mit
GBAK
einen Restore aus, allerdings nicht direkt auf die vorhandenesecurity2.fdb
im Firebird-Stammverzeichnis, sondern zu einem anderen Ort. - Fahren Sie den Firebird-Dienst herunter. Bei Windows mit dem Dienste-Manager, bei Linux mit dem
fbmgr
-Tool. - Ersetzen Sie die
security2.fdb
im Firebird-Stammverzeichnis durch die eben per Restore erstellte Datei. - Fahren Sie den Firebird-Dienst wieder hoch.
zurück zum Seitenanfang
<< Datenbank-Konfiguration | Firebird 2 Administrations-Handbuch | Links, Literatur >>