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.

zurück zum Seitenanfang

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:

–bBackup (default; muss nicht unbedingt angegeben werden).
–cRestore (Create).
–rReplace: Eine bereits bestehende Datenbank wird durch den Restore überschrieben.
–user <benutzername>Angabe des Benutzernamens.
–password <passwort>Angabe des Passworts.
–vVerbose: 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_outputKeine Ausgabe von Meldungen.
–zZeigt die Versionsnummer von GBAK an.

zurück zum Seitenanfang

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

–tTransportable 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.
–gEs wird während des Backups keine Garbage Collection durchgeführt.
–ignoreChecksummenfehler werden während des Backup ignoriert.
–mMetadata only: Es werden nur die Metadaten gesichert, keine Tabelleninhalte.
–ntNon-Transportable Format: Das Gegenteil von –t. Benutzung nicht empfohlen.
–se <hostname>:service_mgrVerwendet 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
–vMeldungen ausgeben.
–tTransportables Format.
–user SYSDBABenutzername.
–password masterkeyPasswort (das Passwort kann in Anführungszeichen gesetzt werden, wenn Leerstellen enthalten sind).
dbserver:pmmDatenbank-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

zurück zum Seitenanfang

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

–cRestore 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.
–repErsetzt 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.
–iDeaktiviert alle Indexe beim Restore. Dadurch geht der Restore schneller und die Indexe können einzeln oder gemeinsam aktiviert und dadurch neu aufgebaut werden.
–nEntfernt 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.
–oTabellen 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_spaceLastet 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

zurück zum Seitenanfang

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 physikalisch 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 vorhandene security2.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 >>