Arbeitsweise des Hot-Standby
CONZEPT 16-Server - Arbeitsweise des Hot-Standby Beschreibung des Zusammenspiels zwischen Primär- und Sekundärserver bei CONZEPT 16-Hot-Standby Systemen
Nach der Installation der Datenbankserver und dem Eintragen der Datenbanken, ist die Datenbank nur auf dem primären Server vorhanden. Beim Öffnen der Datenbank auf dem Primärserver, wird durch diesen eine Verbindung zum Sekundärserver (Eintrag "Serveradresse") hergestellt. Ist der Sekundärserver nicht erreichbar, dauert das Öffnen der Datenbank bis das "Timeout Verbindungsaufbau" abgelaufen ist. Der Benutzer kann sich anschließend an der Datenbank anmelden, unabhängig davon, ob ein Sekundärserver gefunden wurde oder nicht.
Alle Ereignisse in Verbindung mit der Hot-Standby-Option (Aufbau einer Verbindung, Abbruch der Verbindung, Ausfall von Primär- oder Sekundärserver usw.) werden in der Log-Datei der Datenbank ( <Datenbankname>.lgb ) protokolliert. Diese Log-Datei wird im Verzeichnis der Datenbank abgelegt (siehe auch Architektur des Servers ).
Der Primärserver fragt nach der Benutzeranmeldung und gelungenem Verbindungsaufbau zum Sekundärserver den Status der sekundären Datenbank ab. Da die Datenbank zu diesem Zeitpunkt noch nicht vorhanden ist (Status ist "unbekannt"), wird eine Synchronisation gestartet. Bei der Synchronisation wird die Datenbank in den Backup-Zustand (siehe Sicherungsereignisse ) versetzt und anschließend werden alle Segmente der Datenbank an den Sekundärserver geschickt. Bricht während der Übertragung der Segmente die Verbindung ab (es konnten also nicht alle Segmente der Datenbank übertragen werden), wird die Datenbank wieder gelöscht. Eine Datenbank, die nicht alle Segmente enthält ist unbrauchbar.
Die neue Sekundärdatenbank wird mit einem Zeitstempel versehen, der um 100 Nanosekunden kleiner ist, als der Zeitstempel der Master-Datenbank auf dem primären Server. Der Zeitstempel wird aus der Systemzeit generiert und hat eine Auflösung von ca. 1 Millisekunde. Durch den Zeitstempel der Master-Datenbank und dem nicht natürlich entstehenden Zeitstempel der Standby-Datenbank kann später ermittelt werden, ob die Daten synchron sind. Die Datenbank liegt jetzt auf beiden Systemen vor.
Die Datenbanken auf dem Primärserver und dem Sekundärserver müssen sich immer durch den Zeitstempel unterscheiden. Damit nicht zwei identische Zeitstempel in den Datenbanken vorkommen, dürfen die Datenbanken nicht von einem Server auf den anderen kopiert werden. Das Verschieben einer Datenbank auf den anderen Server ist aber möglich. Der Zeitstempel der Datenbank kann über die Web-Administration angezeigt werden.
Solange die Datenbank vom Primärserver zum Sekundärserver übertragen wird, hat die Datenbank auf dem Sekundärserver den Status "Synchronisation". Die in der Zwischenzeit angefallenen Daten werden nach der Synchronisation in die primäre Datenbank übertragen. Die Datenbank wird also nach der Synchronisation wieder zum Schreiben geöffnet. Der Status der Primärdatenbank ist dann "offen", da sich ja gerade ein Benutzer angemeldet hat. Der Zustand der Sekundärdatenbank wird nun auf "Standby" gesetzt. An der Datenbank mit dem Status "Standby" können sich generell keine Benutzer anmelden.
Ab diesem Zeitpunkt werden in regelmäßigen Abständen die neuen und geänderten Segmente der Primärdatenbank an das Sekundärsystem geschickt. Dabei erfolgt auch immer ein Abgleich der Zeitstempel der Datenbanken. Sendet das primäre System keine Update-Nachrichten mehr, erkennt das sekundäre System nach einem Timeout den Ausfall des Primärservers. Da während Update-Events keine Nachrichten an das Sekundärsystem versendet werden, signalisiert das Primärsystem seine Funktionstüchtigkeit mindestens alle drei Sekunden durch Keep-Alive-Pakete. Fällt das primäre System aus und es erfolgt ein Wechsel auf das Sekundärsystem, wird die Datenbank auf dem Sekundärsystem mit einem neuen Zeitstempel versehen. Anhand des Zeitstempels wird nach dem Schließen und erneuten Öffnen der Datenbanken festgestellt, ob die Datenbank auf dem Primärserver einen älteren Stand hat als die auf dem Sekundärsystem. Es ist daher wichtig, dass die Uhrzeiten des Primär- und des Sekundärservers weitestgehend synchron sind. Nach einem Wechsel auf das Sekundärsystem werden alle Funktionen insbesondere das weitere Arbeiten auf diesem System und der dort abgelegten Datenbank durchgeführt.
Weichen die Systemzeiten um mehr als eine Minute ab, wird die Uhrzeit des Standby-Systems an die Uhrzeit des aktiven Systems angepasst. Unterschiedliche Zeitzonen sind dabei irrelevant, da der Abgleich auf Basis der UTC-Zeit (Universal Time Coordinated) durchgeführt wird.
Sind bei den Einstellungen sowohl die Adresse der Direktverbindung, als auch die Adresse des "normalen" Netzwerkes angegeben, wird bei einem Ausfall der Direktverbindung der Status des anderen Servers über das normale Netzwerk abgefragt. So werden zum Beispiel Anmeldungen an das Sekundärsystem unterbunden, auch wenn keine Kommunikation über die Direktverbindung möglich ist. Zudem wird im laufenden Betrieb die Erreichbarkeit des Sekundärsystems für die Clients durch das Primärsystem überprüft. Kann das Sekundärsystem von einem Client nicht erreicht werden, werden entsprechende Warnungen in die Protokolldatei geschrieben.
Bei folgenden Operationen wird der Hot-Standby Betrieb unterbrochen und nach dem Ende der Operation eine erneute Synchronisation durchgeführt:
- **** Diagnose mit Recover oder Schlüsselanalyse
- **** Manuelle Datenraumerweiterung
- **** Manuelles Anlegen eines weiteren Datenraums
- **** Optimierung