Release-Informationen


10.1 Kapitel 8. Wiederherstellen einer Datenbank

10.1.1 Verwendung der zurückgestellten Ein-/Ausgabe

In Kapitel 8., "Wiederherstellen einer Datenbank", wurde der folgende Abschnitt zur Verwendung der Funktion für zurückgestellte Ein-/Ausgabe hinzugefügt und aktualisiert:

Anmerkung:
Die unten aufgeführten Informationen zum Dienstprogramm db2inidb haben Vorrang vor den Informationen im Handbuch Neue Funktionen von Version 7.2.

db2inidb ist ein neues Tool, das mit DB2 geliefert wird und das Wiederherstellungen nach Systemabstürzen durchführen und eine Datenbank in den Status "Aktualisierende Wiederherstellung anstehend" setzen kann. ""

Die zurückgestellte Ein-/Ausgabe unterstützt fortlaufende Systemverfügbarkeit, indem sie eine vollständige Implementierung für die Handhabung der Onlineteilung einer Spiegeldatenbank, d. h. Teilung einer Spiegeldatenbank ohne Herunterfahren der Datenbank, bietet. Wenn ein Kunde sich keine Offline- oder Onlinesicherungen einer großen Datenbank leisten kann, können Sicherungen oder Systemkopien von einem Spiegelimage mit Hilfe zurückgestellter Ein-/Ausgabe und einer geteilten Spiegeldatenbank erstellt werden.

Zurückgestellte E/A verhindert das Schreiben auf Platte, um sicherzustellen, dass das geteilte Spiegeldatenbankimage einer Datenbank konsistent ist. Neben der Onlinesicherung und -wiederherstellung sollten alle Datenbankoperationen normal funktionieren, während eine Datenbank zurückgestellt ist. Einige Operationen können jedoch blockieren, während versucht wird, benutzte Seiten aus dem Pufferpool auf Platte zu schreiben oder Puffer zu protokollieren. Diese Operationen sollten normal fortgesetzt werden, sobald die Datenbank-E/A wieder aufgenommen wird. Es ist wichtig, dass die Datenbank-E/A von derselben Verbindung wieder aufgenommen wird, von der sie ursprünglich zurückgestellt wurde. Andernfalls kann ein nachfolgender Verbindungsversuch blockieren, wenn er das Schreiben benutzter Seiten aus dem Pufferpool auf Platte erfordert.

Beim Spiegeln einer Datenbank wird vor allem der gesamte Inhalt des Datenbankverzeichnisses kopiert. Es ist auch notwendig, das Protokollverzeichnis und alle Tabellenbereichsbehälter zu kopieren, wenn diese sich nicht im Datenbankverzeichnis befinden. Da die geteilte Spiegeldatenbank von diesen Verzeichnispfaden abhängt, müssen die Pfade, in die diese Verzeichnisse kopiert werden, identisch mit denen auf dem primären System sein. Dies impliziert, dass das Exemplar ebenfalls das gleiche sein muss. Als Ergebnis dieser Abhängigkeit ist es nicht möglich, eine Datenbank auf demselben System wie das primäre System zu spiegeln, sofern nicht die neue Option "relocate" des Tools db2inidb verwendet wird.

Die Option "relocate" ermöglicht es, eine Datenbank auf einem bestimmten System mit einer angegebenen Konfigurationsdatei zu verlagern. Dies kann das Ändern des internen Datenbankverzeichnisses, der Behälterverzeichnisnamen, des Protokollverzeichnisses, des Exemplarnamens und des Datenbanknamens umfassen. Wenn das Datenbankverzeichnis, die Behälterverzeichnisse und das Protokollverzeichnis erfolgreich auf andere Verzeichnispfade auf demselben System wie die primäre Datenbank gespiegelt wurden, kann das Tool db2inidb zusammen mit der Option "relocate" verwendet werden, um die internen Pfade der gespiegelten Datenbnak zu aktualisieren. Ein Nutzungsszenario mit dieser Option finden Sie weiter unten.

Je nachdem, wie die Speichereinheiten gespiegelt werden, ist die Verwendung von db2inidb unterschiedlich. Im Folgenden wird davon ausgegangen, dass die gesamte Datenbank konsistent im Speichersystem gespiegelt wird.

In einer Umgebung mit mehreren Knoten muss das Tool db2inidb auf jeder Partition ausgeführt werden, bevor das geteilte Image von einer der Partitionen verwendet werden kann. Das Tool db2inidb kann auf allen Partitionen gleichzeitig ausgeführt werden.

  1. Erstellen einer Klondatenbank

    Das Ziel ist, einen Klon der primären Datenbank zu erhalten, der nur für Lesezugriff verwendet werden kann. Die folgende Prozedur beschreibt, wie eine Klondatenbank erstellt werden kann:

    1. Stellen Sie E/A-Schreibvorgänge in der primären Datenbank mit folgendem Befehl zurück:
           db2 set write suspend for database
      
    2. Verwenden Sie Betriebssystembefehle zum Trennen der Spiegeldatenbank von der primären Datenbank.
    3. Nehmen Sie E/A-Schreibvorgänge in der primären Datenbank mit folgendem Befehl wieder auf:
           db2 set write resume for database
      

      Nach dem Ausführen des Befehls sollte die primäre Datenbank wieder im normalen Zustand sein.

    4. Hängen Sie die geteilte Spiegeldatenbank der Datenbank von einem anderen System aus an.
    5. Starten Sie das Datenbankexemplar mit folgendem Befehl:
           db2start
      
    6. Starten Sie die DB2-Wiederherstellung nach Systemabsturz mit folgendem Befehl:
      db2inidb datenbankname AS SNAPSHOT
      
      Anmerkung:
      Dieser Befehl entfernt den Status des zurückgestellten Schreibens und macht die Änderungen von Transaktionen rückgängig, die bei der Trennung unvollständig waren.

    Sie können diesen Prozess auch für eine Offlinesicherung verwenden. Wenn sie jedoch in der primären Datenbank wiederhergestellt wird, kann diese Sicherung nicht mehr zur aktualisierenden Wiederherstellung verwendet werden, da die Protokollkette nicht übereinstimmt.

  2. Verwenden der geteilten Spiegeldatenbank als Bereitschaftsdatenbank

    Während die gespiegelte (Bereitschafts-)Datenbank ständig über die Protokolle aktualisierend wiederhergestellt wird, werden neue Protokolle, die von der primären Datenbank erstellt werden, ständig vom primären System abgerufen. Die folgende Prozedur beschreibt, wie die geteilte Spiegeldatenbank als Bereitschaftsdatenbank verwendet werden kann:

    1. Stellen Sie E/A-Schreibvorgänge in der primären Datenbank zurück:
      	db2 set write suspend for database
      
    2. Verwenden Sie die Betriebssystembefehle zum Trennen der Spiegeldatenbank von der primären Datenbank.
    3. Setzen Sie die E/A-Schreibvorgänge in der primären Datenbank fort, so dass sie zurück in die normale Verarbeitung wechselt.
      	db2 set write resume for database
      
    4. Hängen Sie die geteilte Spiegeldatenbank der Datenbank auf einem anderen System an.
    5. Setzen Sie die Spiegeldatenbank in den Status "Aktualisierende Wiederherstellung anstehend", und stellen Sie die Spiegeldatenbank aktualisierend wieder her. ""
      	db2inidb datenbankname AS STANDBY
      

      Anmerkung:
      Dieser Befehl entfernt den Status des zurückgestellten Schreibens und setzt die gespiegelte Datenbank in den Status "Aktualisierende Wiederherstellung anstehend". ""
    6. Kopieren Sie Protokolle, indem Sie ein Benutzer-Exit-Programm einrichten, um Protokolldateien vom primären System abzurufen, damit sichergestellt ist, dass die neuesten Protokolle für diese gespiegelte Datenbank verfügbar sind.
    7. Stellen Sie die Datenbank bis zum Ende der Protokolle aktualisierend wieder her.
    8. Kehren Sie zurück zu Schritt f, und wiederholen Sie diesen Prozess, bis die primäre Datenbank inaktiv ist.

  3. Verwenden der geteilten Spiegeldatenbank als Sicherungsimage

    Die folgende Prozedur beschreibt, wie die gespiegelte Datenbank als Sicherungsimage zur Wiederherstellung über die primäre Datenbank verwendet werden kann:

    1. Verwenden Sie Betriebssystembefehle, um die gespiegelten Daten und Protokolle über die primäre Datenbank zu kopieren.
    2. Starten Sie das Datenbankexemplar mit folgendem Befehl:
           db2start
      
    3. Führen Sie den folgenden Befehl aus, um die gespiegelte Datenbank in den Status "Aktualisierende Wiederherstellung anstehend" zu setzen und das zurückgestellte Schreiben zu beenden. ""
      db2inidb datenbankname AS MIRROR
      
    4. Stellen Sie die Datenbank bis zum Ende der Protokolle aktualisierend wieder her.
  4. Teilen einer Spiegeldatenbank auf demselben System wie die primäre Datenbank

    Die folgende Prozedur beschreibt, wie Sie die Option "relocate" des Tools db2inidb zum Spiegeln einer Datenbank auf demselben System wie die primäre Datenbank verwenden können. Bei dem Beispiel wird davon ausgegangen, dass die Datenbank unter einem neuen Exemplar verwendet wird.

    1. Erstellen Sie ein neues Exemplar auf dem aktuellen System.
    2. Stellen Sie E/A-Schreibvorgänge in der primären Datenbank zurück:
      	db2 set write suspend for database
      
    3. Verwenden Sie die Betriebssystembefehle zum Trennen der Spiegeldatenbank von der primären Datenbank.
      Anmerkung:
      Das Datenbankverzeichnis, die Behälterverzeichnisse und das Protokollverzeichnis müssen in unterschiedliche Verzeichnisse kopiert werden. Wenn die Behälterverzeichnisse oder das Protokollverzeichnis unter dem Datenbankverzeichnis vorhanden sind, muss nur das Datenbankverzeichnis kopiert werden.
    4. Setzen Sie die E/A-Schreibvorgänge in der primären Datenbank fort, so dass sie zurück in die normale Verarbeitung wechselt.
      	db2 set write resume for database
      
    5. Erstellen Sie eine Konfigurationsdatei mit den folgenden Informationen:
      DB_NAME=<name>,<optionaler-neuer-name>
      DB_PATH=<primärer-db-verzeichnispfad>,<gespiegelter-db-verzeichnispfad>
      INSTANCE=<primäres-exemplar>,<gespiegeltes-exemplar>
      LOG_DIR=<primäres-db-protokollverzeichnis>,<gespiegeltes-db-protokollverzeichnis>
      CONT_PATH=<primärer-db-behälterpfad-1>,<gespiegelter-db-behälterpfad-1>
      ...
      CONT_PATH=<primärer-db-behälterpfad-n>,<gespiegelter-db-behälterpfad-n>
      NODENUM=<knotennummer>

      Anmerkung:
      Die Felder LOG_DIR und CONT_PATH sind nur erforderlich, wenn das Protokollverzeichnis und die Behälterverzeichnisse sich nicht im Datenbankverzeichnis befinden. Alle anderen Felder sind erforderlich, mit Ausnahme von NODENUM, das standardmäßig den Wert null verwendet, wenn nichts anderes angegeben ist.
    6. Starten Sie die Datenbank vom neu erstellten Exemplar.
      	db2start
      
    7. Verlagern Sie die gespiegelte Datenbank, entfernen Sie den Zurücksetzungsstatus, und setzen Sie die Spiegeldatenbank in den Status "Aktualisierende Wiederherstellung anstehend": ""
      	db2inidb datenbankname as STANDBY relocate using konfigurationsdatei
      
    8. Kopieren Sie Protokolle, indem Sie ein Benutzer-Exit-Programm einrichten, das Protokolldateien von der primären Datenbank abruft, damit sichergestellt ist, dass die neuesten Protokolle für diese gespiegelte Datenbank verfügbar sind.
    9. Stellen Sie die Datenbank bis zum Ende der Protokolle aktualisierend wieder her.
    10. Kehren Sie zurück zu Schritt h, und wiederholen Sie diesen Prozess, bis die primäre Datenbank inaktiv ist.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]