FirebirdSQL logo

Sperren von Rohgerätedatenbanken

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.

Sperren / Entsperren der Datenbank bei der Sicherung virtueller Maschinen

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.

docnext count = 4

Delta-Datei einstellen

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
  • Falls Sie in der [ADD] DIFFERENCE FILE-Anweisung nur den Dateinamen angeben, dann ist es wahrscheinlich, dass sich die Deltadatei nicht in dem selben Verzeichnis wie die Datenbank befinden wird, sondern im aktuellen Verzeichnis aus Sicht des Servers.Unter Windows kann das zum Beispiel das Systemverzeichnis sein.Die gleiche Logik gilt auch für relative Pfadangaben.

  • Der gesamte Verzeichnispfad muss bereits vorhanden sein.Firebird versucht nicht, fehlende Verzeichnisse zu erstellen.

  • Falls Sie die Spezifikation der Deltadatei ändern möchten, dann müssen Sie zuerst die alte Spezifikation mit DROP entfernen und die Neue mit ADD hinzufügen.

Sicherungsverlauf

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

RDB$BACKUP_ID

Primärschlüssel

RDB$TIMESTAMP

Uhrzeit und Datum der Sicherung

RDB$BACKUP_LEVEL

Backup-Level

RDB$GUID

GUID der Sicherung (zum Überprüfen der Abhängigkeiten zwischen Dateien)

RDB$SCN

Höchste Seitenmarkierung in der Sicherung

RDB$FILE_NAME

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].

Technische Hintergrundinformationen

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:

  1. nbak_state_normal (kein Backup) zu nbak_state_stalled (Datenbank schreibt in Delta-Datei)

  2. nbak_state_stalled zu nbak_state_merge (Zusammenführen der Delta-Datei zurück in die Datenbank)

  3. 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

0

Seiten vor einer Sicherung

1

Seiten, die während der Sicherung in die Delta-Datei geschrieben/aktualisiert wurden

2

Seiten, die während des Zusammenführens der Delta-Datei in die Hauptsicherung geschrieben/aktualisiert wurden

3

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.

Dokumentenhistorie

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 C:\Datenbanken auf C:\Daten geändert, um Darstellungsprobleme im PDF Dokument mit der Hintergrundfarbe zu vermeiden.

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 ID.

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 -U und -P.Listenelemente für den Parameter -FE (neu in 2.5), den Parameter -T (neu in 2.1) und den Parameter -D (neu in 2.5, Backport auf 2.1.4) hinzugefügt.In Listenelementen, die mit “Die verschiedenen Parameter” beginnen, lautet der Text in Klammern jetzt (-B, -U usw.), da viele neue Parameter hinzugefügt wurden.

Backups erstellen und wiederherstellen :: Interna: Kleine Anpassung (engl. image → impression).

Backups erstellen und wiederherstellen :: Vollständige Sicherungen :: Wiederherstellen einer vollständigen Sicherung: Die Parameter -U und -P wurden aus der Spezifikation entfernt.Listenelement für Aliase hinzugefügt.Separater Hinweis zum fehlgeschlagenen interaktiven Wiederherstellen auf kursiven Text im Listenelement selbst geändert.Listenelement hinzugefügt, dass Server nicht ausgeführt werden muss und Anmeldeinformationen ignoriert werden müssen.

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 -U und -P wurden aus der formalen Syntax und dem 1. Listenelement entfernt.

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 “SYSDBA und nur Eigentümer” entfernt.

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 -Z wurden zu Schritt 2 der Prozedur hinzugefügt.Im nächsten Absatz übersetzt “en” (Rest aus dem niederländischen Original) → “und”.Hinweis zu Hinweis über das Lesen von -F als nur kennzeichnen hinzugefügt.

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 CREATE DATABASE hinzugefügt.1. Liste in Anmerkungen: ADD[ADD].

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.