So implementieren Sie Backups mit InterBase XE7 Online-Dump
Dmitry Kuzmenko, 08-SEP-2016
InterBase unterstützt seit Version 2007 Online-Dump - das Online-Kopieren von Datenbankdateien. Anstelle von gbak -b/-c erhalten Sie dadurch nach dem Kopieren eine sofort nutzbare Datenbank, ohne sie aus einem Backup „wiederherstellen“ zu müssen (etwas, das keine Datenbank ist). Online-Dump ist sehr schnell, fast wie das Kopieren von Dateien durch das Betriebssystem.
Verwenden Sie den folgenden Befehl, um einen Online-Dump der Datenbank zu erstellen:
gbak -d [Optionen] Datenbank Ziel
(Die vollständige Dump-Beschreibung finden Sie in der Dokumentation, Doc\OpGuide.pdf, oder hier)
Wie bei der Datenbankdatei kann das Ziel einen beliebigen Namen und eine beliebige Erweiterung haben. Das Ergebnis des Befehls ist eine Dump-Datei, die der ursprünglichen Datenbank entspricht, jedoch im Nur-Lese-Modus.
Die Zeit für den ersten Lauf dieses Befehls ist die Zeit zum Scannen (Lesen) der Quelldatenbank plus die Zeit zum Schreiben der Zieldatei.
Solange sich das Ziel im Nur-Lese-Modus befindet, ist es mit der Datenbankdatei verknüpft. Beim ersten Dump wird die gesamte Datenbankdatei gelesen und in das Ziel kopiert. Beim zweiten und den folgenden Dumps werden nur geänderte Seiten in das Ziel geschrieben. Dies wird als „inkrementeller Dump“ bezeichnet.
Wichtig! InterBase XE7 liest bei jedem wiederholten Dump-Befehl (natürlich mit denselben Dateinamen) nur geänderte Seiten der Datenbank und schreibt sie in das Ziel. Andere Versionen vor XE7 lesen die gesamte Quelldatenbank. Daher ist die Leistung unterschiedlich, und XE7 ist viel schneller. Wenn in der Quelldatenbank keine Seiten geändert wurden, dauert der inkrementelle Dump von XE7 etwa 1 Sekunde, während InterBase2007-XE3 die Zeit benötigt, um die gesamte Datenbankdatei zu lesen. Die Zeit hängt von der Größe der Quelldatenbank und der Speichergeschwindigkeit ab. Wenn die Speichergeschwindigkeit beispielsweise etwa 400 MB/s beträgt, wird eine 100-GB-Datenbank in 250 Sekunden (4 Minuten 10 Sekunden) gescannt.
Hinweis. InterBase XE7 unterstützt Datenbankdateiformate von XE7 (ODS 16), XE/XE3 (ODS 15) und 2009 (ODS 13). Die oben erwähnte intelligente Scan-Funktion funktioniert nur mit dem Datenbankformat XE7 (ODS 16).
Wenn Sie das Ziel in den Lese-Schreib-Modus (normalen Modus) versetzen müssen, verwenden Sie den Befehl:
gfix Ziel -mode read_write
Danach verliert das Ziel jedoch die Verbindung zur Datenbank, und ein anschließender Lauf von gbak -d Datenbank Ziel ist nicht mehr möglich, da das Ziel als „andere“ Datenbank betrachtet wird.
Wenn Sie das Ziel vollständig überschreiben möchten, anstatt einen inkrementellen Dump durchzuführen, verwenden Sie die Option -ov:
gbak -d -ov Datenbank Ziel
Dump des Dumps
Der erste Dump des Dumps funktioniert, die nachfolgenden Inkremente jedoch nicht. Zum Beispiel:
gbak -d Datenbank Ziel1
Hier erhalten wir Ziel1 als vollständig gedumpte Datenbank im Nur-Lese-Modus.
Als Nächstes:
gbak -d Ziel1 Ziel2
Wie Sie sehen, erstellen wir einen Dump des Dumps. Ja, dieser Befehl kopiert Ziel1 in Ziel2. Beide Ziele befinden sich im Nur-Lese-Modus. Wenn wir diese beiden Befehle jedoch erneut ausführen, werden Änderungen, die von der Datenbank zu Ziel1 gelangt sind, nicht in Ziel2 kopiert. Ziel2 bleibt also im Zustand nach dem ersten, ursprünglichen Kopiervorgang. Es werden keine Fehler- oder Warnmeldungen ausgegeben.
Wenn Sie also jemals einen Dump des Dumps erstellen möchten, sollten Sie nur einen vollständigen Dump verwenden:
gbak -d -ov Ziel1 Ziel2
Die Option -ov ist zwingend erforderlich, um sicherzustellen, dass Ziel2 mit der Quelle von Ziel1 geschrieben (und überschrieben) wird.
Backup-Schema 1
Beispiel für Dumps in verschiedenen Zeitintervallen:
gbak -d Datenbank Ziel
Dies wird beispielsweise jede Stunde ausgeführt. Hier haben wir die Produktionsquelldatenbank und eine „Backup“-Kopie Ziel, die eine Stunde zurückliegt.
Zusätzlich können wir alle 24 Stunden Folgendes ausführen:
gbak -d Datenbank Ziel2
Hier haben wir die Produktionsdatenbank, die Ziel-Kopie mit 1 Stunde Verzögerung und die Ziel2-Kopie mit 24 Stunden Verzögerung.
Sie können beliebig viele Dumps von einer Datenbank erstellen.
Es versteht sich von selbst, dass die Ziel-Dumps als Nur-Lese-Datenbanken für jeden Zweck verwendet werden können - Berichte, Analysen usw. - für Aufgaben, die keinen Blick in die aktuelle Datenbank erfordern.
Vorteil: Jeder Dump kann unabhängig geplant werden.
Nachteil: Verzögerungen zwischen dem neuesten und dem ältesten Dump.
Backup-Schema 2
Sequentieller Dump auf verschiedene Ziele. In diesem Fall müssen Sie einen Scheduler (Betriebssystem oder benutzerdefiniert) einrichten, um die folgenden Befehle jeweils in einem bestimmten Zeitintervall auszuführen:
gbak -d Datenbank Ziel1
gbak -d Datenbank Ziel2
gbak -d Datenbank Ziel3
Wenn Sie ein 1-Stunden-Intervall zwischen diesen Befehlen verwenden, erhalten Sie Dumps (Backups) wie folgt:
Ziel1 um 12:00, Ziel2 um 13:00, Ziel3 um 14:00. Der nächste Lauf von Dump Ziel1 wird um 15:00 aktualisiert und so weiter. Als Ergebnis haben wir Kopien der Datenbanken der letzten 3 Stunden.
Vorteil: Wir haben Dumps für mehrere Stunden, die nahe an der ursprünglichen Datenbank bleiben.
Nachteil: Diese Befehle sind etwas schwieriger zu planen. In diesem Beispiel müssen die Dump-Befehle zu genauen Zeiten geplant werden:
Dump in Ziel1 um 00:00, 03:00, 06:00…
Dump in Ziel2 um 01:00, 04:00, 07:00…
Dump in Ziel3 um 02:00, 05:00, 08:00…
Zusammenfassung
Gbak -d kann für einen Dump auf lokalen Speicher und für einen Dump über das Netzwerk verwendet werden - da der inkrementelle Dump nur geänderte Seiten an das Ziel sendet. Das Ziel kann also auf einem entfernten Netzwerkspeicher platziert werden. Das Netzwerk muss jedoch über eine gute Bandbreite verfügen, um mit dem lokalen Speicher kompatibel zu sein. Andernfalls sind die Schreibvorgänge in das Ziel langsam.
Online-Dump kann nicht nur als Werkzeug zur Erstellung einer Online-Backup-Kopie der Datenbank verwendet werden, sondern auch als Werkzeug für „horizontale Skalierung“ des Systems, um die Last von Produktions-, Berichts- und Analyseanwendungen auszugleichen.
Obwohl Sie sehen, dass Online-Dump der schnellste Weg ist, eine Online-Datenbankkopie zu erhalten (anstelle von gbak -b/-c), kann er, da der Dump mit Seiten arbeitet, einige Beschädigungen auf Seiten überspringen, wenn die Datenbank korrupt ist. Daher müssen Sie die Datenbankkonsistenz weiterhin mit dem guten alten gbak -b/-c überprüfen, aber Sie können dies seltener tun als zuvor.