Datenbank Shadow

<< Sequence | IBExpert Glossar | SMALLINT (SMALLINTEGER) >>

Datenbank Shadow (Dateispiegelung)

Shadow Dateien sind eine exakte live Kopie der originalen aktiven Datenbank. Mit ihnen können Sie live Duplikate Ihrer Produktionsdatenbank führen, die im Notfall schnell die Produktionsdatenbank ersetzen können. Diese Shadows werden zeitgleich vom Firebird/InterBase® Server verwaltet. Sie werden aus Sicherheitsgründen verwendet: sollte die ursprüngliche Datenbank durch Hardwareprobleme beschädigt oder laufunfähig, kann der Shadow sofort als die primäre Datenbank übernehmen. Es ist daher wichtig, dass Shadowdateien nicht auf demselben Server, oder zumindest nicht auf demselben Laufwerk, als die Datenbank selbst laufen.

Mit Firebird/InterBase® können Sie bis zu 65,536 (216) Datenbankdateien - einschließlich Shadowdateien - erzeugen. Allerdings kann es eventuell sein, dass das Betriebssystem ein niedrigeres Limit bei der erlaubten Anzahl gleichzeitig geöffnete Dateien aht. Und in einigen Fällen bietet das Betriebssystem einen Weg dieses Limit zu erhöhen (siehe in Ihrer Betriebssystemdokumentation nach dem Standardlimit für offene Dateien, und wie Sie dieses erhöhen).

Shadowdateien, genau wie die Hauptdatenbank- und Sekundärdateien, dürfen nicht auf vernetzten oder Remotesystemen liegen (d.h. gemappten Laufwerke auf Windows und NFS-Dateien auf UNIX).

Die Anzahl der Shadowdateien für eine Datenbank können mit dem IBExpert Systemdienste Menüpunkt, Datenbankstatistik, oder mit GSTAT? (die Anzahl Shadowdateien befindet sich in der Datenbank Headerseite Information) vermittelt werden.

Shadowdateien bieten einige Vorteile:

  • Sie bieten einen wertvollen Datenbankschutz, zusätzlich zu regelmäßigen Datenbankbackups und der Firebird/InterBase®'s Multigenerations-Architektur.
  • Wenn die Datenbank beschädigt wird, kann die Shadow sofort, mit minimalem Zeitverlust, aktiviert werden.
  • Shadows laufen automatisch mit wenig oder gar keinem Verwaltungsaufwand.
  • Sie haben volle Kontrolle über die Shadowkonfiguration, auch über ihre Nutzung des Laufwerkplatzes und Verteilung über andere verfügbare Laufwerke.
  • Exklusiver Datenbankzugang ist bei der Shadowerzeugung nicht notwendig.
  • Shadowdateien benutzen den gleichen Speicherplatz wie die Datenbank selbst, im Gegensatz zu Logdateien, die viel größer als die Datenbank werden können.
  • Shadowdateien verwenden keinen getrennten Prozess. Der Datenbankprozess wickelt auch das Schreiben zum Shadow ab.

Es gibt jedoch einige Einschränkungen:

  • Shadowdateien helfen nur bei gewissen Problemen. Wenn die Datenbank durch einen Benutzerfehler oder ein Firebird/InterBase® Problem irreparabel beschädigt wird, dann wird die Shadowdatei genau so beschädigt. Wenn aber eine Datenbank durch einen Benutzer versehentlich gelöscht wird, oder durch einen Hardwarefehler auf dem Hauptserver beschädigt wird, bleibt die Shadowdatei unversehrt und kann sofort eingesetzt werden.
  • Die Verwendung von Shadowdateien vergleicht nicht eine Replikation. Das Shadowing schreibt nur in eine Richtung und erstellt eine Kopie aller Schreiboperationen, die an der Hauptdatenbank ausgeführt werden. Applikationen haben keinen direkten Zugriff auf die Shadowdatei.
  • Die Shadowdatei kann nicht verwendet werden, um die Datenbank auf einen bestimmten Zeitpunkt zurückzusetzen. Wenn die Shadow eingesetzt wird, um die Datenbank wiederherzustellen, wird alles bis zum Zeitpunkt des Auftretens des ursprünglichen Problems zurückgeholt.
  • Shadowdateien verursachen eine kleine Leistungsabfall der Datenbankoperationen. Jeder Vorgang in der Datenbank, der Metadaten oder Daten modifiziert, wird in der Shadowdatei gespiegelt.
  • Das Shadowing ersetzt kein vorsichtiges Sicherheitssystem innerhalb des Betriebsssytem; es ist aber ein Teil oder Erweiterung des Ganzen.
  • Shadowing funktioniert nur für Operationen, die durch den Firebird/InterBase® Datenbank Services Manager (GDS) laufen, da diese alle SQL- und Datenbankabfragen bearbeitet.
  • Shadowing muss auf einem lokalen Festplatte laufen. Ein NFS Dateisystem oder gemappte Laufwerke sind nicht erlaubt.
  • Shadowing auf Band oder auf einem anderen Medium ist nicht möglich.

Weitere Information über die Verwendung von Shadowdateien finden Sie im Firebird administration using IBExpert Kapitel, Working with shadows.

zurück zum Seitenanfang

Shadow Aufgaben

Die Hauptaufgaben beim Setup und bei der Verwaltung von Shadowdateien sind:

Eine Shadowdatei erzeugen

(Quelle: InterBase® 7.1 Operations Guide)

Zuerst muss die Shadowdatei mit der CREATE SHADOW-Anweisung erstellt werden. Diese Anweisung hat folgenden Syntax:

 CREATE SHADOW shadow_number
 [AUTO | MANUAL] [CONDITIONAL] shadow_filename

Die Shadownummer identifiziert einen Shadowsatz, der die primären Shadowdatei und Sekundärdateien (wenn welche vorhanden sind) zusammenholt. Die Hauptfunktion der Shadownummer ist für die Identifikation der Shadowdatei, sollten Sie sie löschen wollen (siehe Shadowdatei löschen).

Die Shadowerzeugung kann ohne Auswirkung auf andere Benutzer ausgeführt werden, da kein exklusiven Zugriff notwendig ist. Bevor eine Shadowdatei erzeugt wird, sollte folgendes zuerst überlegt werden:

  1. Shadowdatei Speicherstelle: Eine Shadowdatei sollte auf einem anderen Laufwerk als die Hauptdatenbankdatei erzeugt werden, da das Shadowing als ein Wiederherstellungsmechanismus im Falle eines Hardwareausfalls beabsichtigt ist. Die Speicherung der Hauptdatenbankdatei und der Shadowdatei auf demselben Laufwerk ist daher sinnlos!
  2. Verteilung des Shadows: Ein Shadow kann als eine einzelne Datei (Shadowdatei) oder als mehrere Dateien (Shadowsatz) erzeugt werden. Um Speicherplatz und Disk I/O zu optimieren, darf jede Datei eines Shadowsatzes auf einem anderen Disk gespeichert werden.
  3. Benutzerzugang: sollte ein Shadow nicht zur Verfügung stehen, kann Benutzerzugang zur Hauptdatenbank abgelehnt werden, bis das Shadowing wieder aufgenommen werden kann, oder Benutzer dürfen weiter auf der Hauptdatenbank arbeiten (d.h. die Arbeit kann kann wie gewöhnt fortfahren). Allerdings werden alle Änderungen während dieser Zeit nicht auf der Shadowdatei kopiert. Siehe Auto Modus und manueller Modus für weitere Information.
  4. Automatische Shadowerzeugung: um sicherzustellen, dass ein neues Shadow automatisch erzeugt wird, erzeugen Sie ein Conditional Shadow (bedingtes Shadow) (siehe unten).

Vermerk: Wenn der IBExpert Systemdienste Menüpunkt, Restore Datenbank Option, Shadowdateien nicht wiederherstellen aktiviert ist, werden Shadowdateien bei einem Restore nicht wiederhergestellt. Die Shadowdefinition wird gelöscht; um diese wieder herzustellen muss das Shadow mit der CREATE SHADOW-Anweisung neu erzeugt werden. Diese Option ist manchmal notwendig, sollte die Zieldatenbank keine Shadowdateien unterstützen, z.B. bei der Migration von einer früheren InterBase® Version, wo Shadows nicht unterstützt werden, oder wenn die Maschine, wo die Shadowdatei(en) gespeichert sind, nicht verfügbar ist.

Die nachfolgenden Kapitel behandeln die Erzeugung von Shadows mit verschiedenen Optionen:

Diese Optionen schließen sich nicht gegenseitig aus, z.B. es ist möglich eine einzelne Conditional Shadow mit der Parameter, manuellem Mode, zu erzeugen.

Einzelne oder mehrfachen Shadowdateien erzeugen

(Quelle: InterBase® 7.1 Operations Guide)

Um eine einzelne Shadowdatei für die Beispieldatenbank, employee.gdb, zu erzeugen, geben Sie folgendes im IBExpert SQL Editor ein:

 CREATE SHADOW 1 '/usr/interbase/examples/employee.shd';

Der Name der Shadowdatei ist employee.shd und es wird durch die Nummer 1 identifiziert. Die erfolgreiche Erzeugung der Shadowdatei kann mit folgendem isql Befehl geprüft werden:

 SHOW DATABASE;
    Database: employee.gdb
    Shadow 1: '/usr/interbase/examples/employee.shd' auto
    PAGE_SIZE 4096
    Number of DB pages allocated = 392
    Sweep interval = 20000

Die Seitengröße der Shadowdatei hat die gleiche Größe wie die Hauptdatenbank. Eine große Datenbank darf auf mehereren Shadowdateien gespiegelt werden, mit den Shadowdateien über mehreren Festplatten verteilt. Jede Datei in dem Shadowsatz muss mit Namen und Größe definiert werden. Es gibt zwei mögliche Spezifikationen:

  • Definieren Sie die Anfangsseite für jede Sekundärdatei
  • Definieren Sie die Länge in Datenbankseiten für jede Datei.

Sie könnten beide Optionen angeben, allerdings ist dies zwecklos. Wenn die angegebenen Informationen nicht genau übereinstimmen, verwendet Firebird/InterBase® den Längenwert vor dem Anfangsseitenwert. Generell sollten Sie entweder immer Längenwert oder immer Anfangsseitenwerte verwenden, um Beständigkeit und Lesbarkeit zu gewährleisten.

Wenn die Dateien mit dem LENGTH-Keyword angegeben werden, geben Sie bei der letzten Datei keine Länge an, da Firebird/InterBase® die letzte Datei dynamisch füllt. Siehe Sekundärdateimanager für weitere Information.

Folgendes Beispiel erzeugt einen Shadowsatz mit drei Dateien. Die primäre Datei, EMPLOYEE.SHD, ist 10.000 Datenbankseiten lang; die zweite Datei ist 20.000 Seiten lang und die letzte Datei wird offen gelassen, um nach Bedarf wachsen zu können.

 CREATE SHADOW 1 'employee.shd' LENGTH 10000
    FILE 'emp2.shd' LENGTH 20000
    FILE 'emp3.shd';

Die zweite Alternative ist, die Anfangsseite anzugeben:

 CREATE SHADOW 1 'employee.shd'
    FILE 'emp1.shd' STARTING AT 10000
    FILE 'emp2.shd' STARTING AT 30000;

Mit dem SHOW DATABASE-Befehl können die Dateinamen, Seitenlängen oder Anfangsseiten bestätigt werden:

 SHOW DATABASE;
    Database: employee.gdb
    Shadow 1: '/usr/interbase/examples/employee.shd' auto length 10000
    file /usr/interbase/examples/emp1.shd length 2000 starting 10000
    file /usr/interbase/examples/emp2.shd length 2000 starting 30000
    PAGE_SIZE 4096
    Number of DB pages allocated = 392
    Sweep interval = 20000 

Sie Seitenlänge der Sekundärdateien in der Hauptdatenbank muss nicht mit der Seitenlänge der sekundäre Shadowdateien übereinstimmen. Als die Datenbank größer und die erste Shadowdatei voll wird, schaltet die Datenbank automatisch auf die nächste Datei.

Auto Modus und manueller Modus

(Quelle: InterBase® 7.1 Operations Guide)

Eine Shadowdatenbank könnte aus verschiedenen Gründen plötzlich nicht zur Verfügung stehen (z.B. Diskausfall, Netzwerkunterbrechung oder versehentliche Löschung). Wenn eine Shadowdatei im Auto Modus erzeugt wurde und plötzlich nicht zur Verfügung steht, laufen alle Datenbankoperationen ohne Spiegelung weiter. Wenn die Shadowdatei im manuellen Modus erzeugt wurde, werden weitere Datenbankzugriffe solange verweigert, bis der Datenbankadministrator explizit angibt, wie weiter verfahren werden soll.

Die Vorteile der beiden Modi werden unten verglichen:

ModusVorteilNachteil
AutoDatenbankoperation wird nicht unterbrochen.Resultiert in einem temporären Zeitabschnitt, wo die Datenbank nicht gespiegelt wird. Der Datenbankadministrator bemerkt vielleicht nicht, dass die Datenbank ohne Shadowing weiterläuft.
ManualVerhindert, dass die Datenbank versehentlich ohne Shadowing läuft.Die Datenbankoperation wird bis zur Lösung des Problems angehalten. Der Datenbankadministrator muss eingreifen.

Auto Modus

Das AUTO-Keyword wird verwendet, um eine Shadowdatei im Auto Modus zu erzeugen:

 CREATE SHADOW 1 AUTO 'employee.shd';

Auto Modus ist der Defaultwert, also muss er nicht explizit angegeben werden.

Im Auto Modus wird die Datenbankoperation nicht unterbrochen, auch wenn keine Spiegelung ausgeführt werden kann. Um das Shadowing wieder aufzunehmen könnte es eventuell notwendig sein, eine neue Shadowdatei zu erzeugen. Wenn die ursprüngliche Shadowdatei als ein Conditional Shadow erzeugt wurde, wird ein neues Shadow automatisch erzeugt. Weitere Information finden Sie unter Conditional Shadows.

Manueller Modus

Das MANUAL-Keyword wird verwendet, ein Shadow im manuellen Modus zu erzeugen:

 CREATE SHADOW 1 MANUAL 'employee.shd';

Der manuelle Modus ist von Nutzen, wenn kontinuierliches Shadowing wichtiger ist als kontinuierliche Datenbankoperation. Wenn ein Shadow im manuellen Modus nicht zur Verfügung steht, werden weitere Operationen an der Datenbank verhindert.

Die Datenbankarbeit kann mit folgendem Befehl, eingegeben vom SYSDBA oder vom Datenbankbesitzer, wieder aufgenommen werden:

 gfix -kill database

Dieser Befehl löscht Metadaten-Referenzen, die der Hauptdatenbank entsprechen, zur nicht verfügbaren Shadowdatei. Nachdem die Referenzen gelöscht wurden kann eine neues Shadow erzeugt werden, sollte das Shadowing fortgesetzt werden.

Shadowinformation wird in den Metadaten der primären Datenbankdatei gespeichert. Sollte diese Datei aus irgendeinem Grund nicht verfügbar sein, werden die Pointer auf die Shadowdatei unterbrochen. In dieser Situation kann der Datenbankadministrator den -active-Parameter im GFIX-Tool? verwenden, um die ursprüngliche Shadowdatei in eine neue Primärdatenbank umzuwandeln.

Conditional Shadows (bedingte Shadows)

(Quelle: InterBase® 7.1 Operations Guide)

Ein Shadow darf so definiert werden, so dass wenn es eine Datenbank ersetzen soll, der Server eine neue Shadowdatei erzeugt. Auf diesem Weg kann das Shadowing ohne Unterbrechung fortfahren. Diese Einstellung wird Conditional Shadow genannt und wird mit dem CONDITIONAL-Keyword angegeben:

 CREATE SHADOW 3 CONDITIONAL 'atlas.shd';

Eine Conditional Shadow-Datei erzeugt in zwei Situationen automatisch eine neue Shadowdatei:

  • Die Datenbank oder eine ihrer Shadowdateien wird nicht verfügbar.
  • Die Shadowdatei übernimmt wegen Hardwareausfall die Funktion der Hauptdatenbank.

zurück zum Seitenanfang

Eine Shadowdatei aktivieren

(Quelle: InterBase® 7.1 Operations Guide)

Sollte die Hauptdatenbank aus irgendeinem Grund nicht verfügbar sein kann die Shadowdatei aktiviert werden, d.h. sie übernimmt die Funktion der Hauptdatenbank und alle Benutzer können auf die Shadowdatei als Hauptdatenbank zugreifen. Diese Aktivierung darf entweder automatisch oder durch den Eingriff des Datenbankadministrators erfolgen.

Shadowinformation wird in den Metadaten der primären Datenbank gehalten. Sollte diese Datei aus irgendeinem Grund nicht verfügbar sein, werden die Zeiger auf dem Shadow unterbrochen. Um die Shadowdatei zu aktivieren, sollten Sie als SYSDBA oder der Datenbankbesitzer eingeloggt sein, und verwenden Sie GFIX? mit der -activate Option, um die ursprüngliche Shadowdatei in eine neue primäre Datebankdatei zu konvertieren.

Wichtig! Stellen Sie zuerst sicher, dass die Shadowdatei nicht aktiv ist, d.h. wenn es aktive Transaktionen in der Hauptdatenbank gibt, sind auch Transaktionen in der Shadowdatei aktiv. Prüfen Sie auch, dass die Hauptdatenbank nicht verfügbar ist. Wenn eine Shadowdatei aktiviert wird, und die Hauptdatenbank noch verfügbar ist, kann die Shadowdatei durch bestehende Verbindungen mit der Datenbank beschädigt werden.

Um ein Shadow zu aktivieren, geben Sie den Pfad und den Namen der primären Datei an. Zum Beispiel:

 gfix -a[ctivate] shadow_name

shadow_name ist der explizite Pfad und der Name der Shadow-Primärdatei.

Examples

Für einen Windows NT Server:

 gfix -a F:\SHADOW\ORDENT\ORDERS.SHD

Für alle UNIX Server:

 gfix -a /usr/shadow/ordent/orders.shd

Nachdem eine Shadowdatei aktiviert wurde, sollte ihr Name in der ursprünglichen Datenbankdatei geändert werden. Dann kann ein neues Shadow erzeugt werden, sollte das Shadowing weitergeführt werden, und ein anderer Laufwerk verfügbar ist.

zurück zum Seitenanfang

Eine Shadowdatei löschen

(Quelle: InterBase® 7.1 Operations Guide)

Wenn eine Shadowdatei nicht mehr benötigt wird, kann es einfach gelöscht werden. Um das Shadowing anzuhalten, verwenden Sie die Shadownummer als Argument mit der DROP SHADOW-Anweisung. Zum Beiespiel:

 DROP SHADOW 1

Wenn Sie die Shadownummer nachschlagen müssen, verwenden Die den isql-Befehl? SHOW DATABASE.

Wichtig! DROP SHADOW löscht alle Shadowreferenzen aus den Datenbankmetadaten sowie die physischen Dateien auf dem Laufwerk. Wenn die Dateien entfernt worden sind, gibt es keine Möglichkeit, sie wieder herzustellen. Da aber ein Shadow eine Kopie einer bestehenden Datenbank ist, wird ein neues Shadow identisch mit dem gelöschten Shadow.

Eine Shadowdatei kann von seinem Erzeuger, dem SYSDBA oder jedem Benutzer mit Betriebssystem Administrationsrechten gelöscht werden.

zurück zum Seitenanfang

Shadowdateien hinzufügen/Ein Shadow modifizieren

(Quelle: InterBase® 7.1 Operations Guide)

Shadowdatenbanken können aus mehreren Dateien bestehen. Als die Shadowdatei wächst, können Dateien hinzugefügt werden, um den zusätzlichen Platz-Anforderungen gerecht zu werden.

Eine Shadowdatei kann erzeugt oder modifiziert werden: zuerst löschen Sie die aktuelle Shadowdatei mit der DROP SHADOW-Anweisung. Dann können Sie die CREATE SHADOW-Anweisung verwenden, um ein Shadow mit mehreren Dateien zu erstellen.

Beispiel

 DROP SHADOW 2
 CREATE SHADOW 3 AUTO CONDITIONAL
 'F:\SHADOW\ORDENT\ORDERS.SHD' LENGTH 10000
 FILE 'F:\SHADOW\OIRDENT\ORDERS2.SHD'

Die für sekundäre Shadowdateien definierte Seitenlänge muss nicht mit der Seitenlänge der sekundären Datenbankdateien übereinstimmen. Als die Datenbank wächst und ihre erste Shadowdatei voll wird, werden Datenbankupdates automatisch in die nächste Shadowdatei gespeichert.

Siehe auch:
englischsprachig:
Firebird administration using IBExpert: Working with shadows
Firebird Database Housekeeping Utility: Shadow files
Firebird Internals
Firebird Backup & Restore Utility

zurück zum Seitenanfang
<< Sequence | IBExpert Glossar | SMALLINT (SMALLINTEGER) >>