Untersuchung verschiedener Replikationsverfahren unter IBM DB2

Werbung
Untersuchung verschiedener Replikationsverfahren
unter IBM DB2 LUW am konkreten Beispiel
der Digitalen Bibliothek
der Friedrich-Schiller-Universität Jena und
des Freistaates Thüringen
Studienarbeit Andreas Krug
[email protected]
Betreuer
Dipl.-Math. Ulrike Krönert
Dipl.-Inf. Thomas Scheer
Dipl.-Dok. Michael Lörzer
Thüringer Universitäts- und Landesbibliothek Jena
Bibliotheksplatz 2
07743 Jena
und
Prof. Dr. Klaus Küspert
Friedrich-Schiller-Universität Jena
Fakultät für Mathematik und Informatik
Institut für Informatik
Lehrstuhl für Datenbanken und Informationssysteme
Ernst-Abbe-Platz 14
07743 Jena
01. Juli 2009
Kurzfassung
Das Ziel dieser Studienarbeit liegt in der Untersuchung verschiedener Replikationsverfahren unter dem DBMS
IBM DB2 LUW,
der Auswahl eines geeigneten Verfahrens für ein
konkretes Anwendungsbeispiel und der praktischen Anwendung des Verfahrens.
Im ersten Schritt erfolgen hierzu die Begrisklärung der Hochverfügbarkeit und die Auseinandersetzung mit theoretischen Grundlagen der Replikation. Aufbauend auf diesen Grundlagen werden dann die drei betrachteten Replikationsverfahren, d.h. die SQL- und QReplikation sowie das HADR-Verfahren, untersucht. Generell stehen dabei die Architektur
und die Funktionsweise der jeweiligen Replikationsumgebung sowie der Replikationsbereich
im Fokus. Abgerundet werden die Untersuchungen mit der Betrachtung spezieller Komponenten und Merkmale der Verfahren, wie beispielsweise bei der SQL-Replikation die
Zwischenspeichertabellen, bei der Q-Replikation die unterschiedlichen Replikationstypen
und bei HADR die verschiedenen Synchronisationsmodi.
Im zweiten Schritt erfolgen der Vergleich und die Bewertung der Replikationsverfahren.
Auf Grundlage dieser Bewertung und eines denierten Anforderungskatalogs wird ein geeignetes Verfahren für das konkrete Beispiel der Digitalen Bibliothek der Friedrich-SchillerUniversität und des Freistaates Thüringen ausgewählt.
Im dritten und letzten Schritt wird der Prozess der Konguration des ausgewählten Verfahrens aufgezeigt und es werden Möglichkeiten zur Verwaltung und Pege skizziert, Verhaltensbeispiele in Ausfallszenarien genannt und über die Erprobung des Verfahrens auf
einem Testsystem berichtet.
Inhaltsverzeichnis
1 Einleitung
1
1.1
Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Ziele der Studienarbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.3
Aufbau der Studienarbeit
1
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Ausgangs- und Zielzustand
3
3 Hochverfügbarkeit
6
4 Theoretische Grundlagen der Replikation
8
4.1
Hardware- und softwarebasierte Replikation
4.2
Klassikation der Replikationsverfahren
5 Replikationsverfahren unter IBM
5.1
5.2
5.3
5.4
SQL-Replikation
. . . . . . . . . . . . . . . . . .
8
. . . . . . . . . . . . . . . . . . . .
8
11
DB2 LUW
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
5.1.1
Architektur einer SQL-Replikationsumgebung . . . . . . . . . . . . .
11
5.1.2
Funktionsweise
12
5.1.3
Subskriptionsgruppen
. . . . . . . . . . . . . . . . . . . . . . . . . .
15
5.1.4
Zieleinheitstypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
5.1.5
Replikationsarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
5.1.6
Zwischenspeichertabellen . . . . . . . . . . . . . . . . . . . . . . . . .
20
5.1.7
Replikationsbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
Q-Replikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
5.2.1
Architektur einer Q-Replikationsumgebung
. . . . . . . . . . . . . .
21
5.2.2
Funktionsweise
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
5.2.3
Replikationstypen
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
5.2.4
Replikationsbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
High Availability Disaster Recovery (HADR)
. . . . . . . . . . . . . . . . .
27
5.3.1
Architektur und Funktionsweise . . . . . . . . . . . . . . . . . . . . .
27
5.3.2
Synchronisationsmodi
. . . . . . . . . . . . . . . . . . . . . . . . . .
31
5.3.3
Automatic Client Reroute (ACR) . . . . . . . . . . . . . . . . . . . .
32
5.3.4
Replikationsbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
Vergleich und Bewertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
5.4.1
Architektur einer Replikationsumgebung . . . . . . . . . . . . . . . .
36
5.4.2
Funktionsweise
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
5.4.3
Replikationsbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
5.4.4
Verwaltung und Pege . . . . . . . . . . . . . . . . . . . . . . . . . .
39
5.4.5
Performance-Untersuchungen von Ascho
40
i
. . . . . . . . . . . . . . .
6 Praktische Umsetzung einer Hochverfügbarkeitslösung
mittels eines Replikationsverfahrens
42
6.1
Anforderungsanalyse und Auswahl eines Verfahrens . . . . . . . . . . . . . .
42
6.2
Konguration des HADR-Systems
. . . . . . . . . . . . . . . . . . . . . . .
45
6.3
Monitoring, Verwaltung und Pege . . . . . . . . . . . . . . . . . . . . . . .
51
6.4
Verhalten in Ausfallszenarien
. . . . . . . . . . . . . . . . . . . . . . . . . .
53
6.4.1
Ausfall des Primärsystems . . . . . . . . . . . . . . . . . . . . . . . .
53
6.4.2
Ausfall des Sekundärsystems
. . . . . . . . . . . . . . . . . . . . . .
54
6.4.3
Wartungsmaÿnahmen
. . . . . . . . . . . . . . . . . . . . . . . . . .
55
6.5
Erprobung auf einem Testsystem
. . . . . . . . . . . . . . . . . . . . . . . .
55
7 Zusammenfassung und Ausblick
57
Glossar
59
Literatur
67
Abbildungsverzeichnis
69
Tabellenverzeichnis
71
Quellcodeverzeichnis
73
ii
1
Einleitung
1.1 Motivation
Der Einsatz von Datenbankmanagementsystemen (DBMS) im Bereich informationsverarbeitender Anwendungen ist in der Gegenwart nicht mehr wegzudenken. Im Zuge der durch
Infrastrukturinvestitionen und technische Fortschritte bedingten wachsenden Nutzeranzahl
und Zugangsgeschwindigkeit zu derartigen Anwendungen steigt die Menge an Daten, die
durch das DBMS gespeichert und verwaltet werden muss. Auch die Komplexitätserhöhung
der zugrunde liegenden Funktionalität darf hierbei nicht auÿer Acht gelassen werden. Die
daraus resultierende steigende Lastanforderung an die Server erfordert zudem Maÿnahmen,
die sicherstellen, dass die Anwendungen dauerhaft zur Verfügung stehen.
In der Gesamtbetrachtung erschlieÿen sich zwei wesentliche Fragen:
1. Wie kann gewährleistet werden, dass Änderungen am Datenbankinhalt jederzeit ausfallsicher gespeichert werden?
2. Durch welche Maÿnahmen kann sichergestellt werden, dass bei einem Ausfall eines
Systems die Anwendungen dennoch mit aktuellem Datenbestand erreichbar sind?
Zur Beantwortung der beiden Fragen gibt es verschiedene Möglichkeiten und Herangehensweisen. Die mehrfache Speicherung der Daten auf geographisch verteilten Speichersystemen ist dabei ein Bestandteil einer Hochverfügbarkeitslösung. Diese Vorgehensweise wird
im Allgemeinen auch als Replikation bezeichnet und in dieser Studienarbeit eingehend
behandelt.
1.2 Ziele der Studienarbeit
Ein Ziel dieser Studienarbeit liegt in der Untersuchung verschiedener Replikationsverfahren
unter dem DBMS
IBM DB2 LUW
in der Version 9. Hierbei werden unter anderem die
Architekturen der Verfahren erklärt und Auskünfte über deren Funktionsweise gegeben.
Darauf aufbauend ist ein weiteres Ziel der Studienarbeit die praktische Anwendung eines Replikationsverfahrens am konkreten Beispiel der Digitalen Bibliothek der FriedrichSchiller-Universität Jena und des Freistaates Thüringen.
1.3 Aufbau der Studienarbeit
Die vorliegende Studienarbeit umfasst neben dieser Einleitung sechs weitere Kapitel.
Das
zweite Kapitel liefert eine Übersicht über den Ausgangs- und Zielzustand. In diesem
wird unter anderem auch die zugrunde liegende Webanwendung umrissen und die damit
verbundene Notwendigkeit einer praktischen Umsetzung eines Replikationsverfahrens aufgezeigt.
Das
dritte Kapitel beschreibt die Stellung der Replikation im Gesamtkontext des Hoch-
verfügbarkeitsbegries im Bereich von Datenbankmanagementsystemen. Es soll damit deutlich gemacht werden, dass die Replikation einen Teil des Gesamtpaketes zur Erreichung
einer hohen Verfügbarkeit von Anwendungen darstellt.
1
Das
vierte Kapitel beschäftigt sich mit einigen theoretischen Vorbetrachtungen der Re-
plikation, insbesondere mit der Frage der Datenussrichtung sowie der Problemstellung,
zu welchem Zeitpunkt die geänderten Daten repliziert werden.
Das
fünfte Kapitel
widmet sich drei verschiedenen Replikationsverfahren unter dem
IBM DB2 LUW Version 9. So werden hier die Verfahren der SQL-Replikation,
Q-Replikation sowie der High Availability Disaster Recovery (HADR ), wobei unter andeDBMS
rem Bezug auf die Architektur und Funktionsweise genommen wird, eingehend erklärt.
Im
sechsten Kapitel liegt die Konzentration auf der Beschreibung der praktischen Um-
setzung einer Hochverfügbarkeitslösung mittels eines Replikationsverfahrens. Hier werden
anfangs eine Anforderungsanalyse und die daraus resultierende Auswahl eines Verfahrens
begründet. Es folgen die Beschreibung der Konguration und erläuternde Worte zur Frage
der Verwaltung und Pege des gewählten Replikationsverfahrens. Im Anschluss daran werden verschiedene Ausfallszenarien betrachtet. Das Kapitel schlieÿt mit einer Beschreibung
der Erprobung des Verfahrens auf einem Testsystem.
Das
siebte Kapitel fasst die vorliegende Studienarbeit zusammen und gibt einen Ausblick
über weitergehende Möglichkeiten zur Umsetzung einer Hochverfügbarkeitslösung.
2
2
Ausgangs- und Zielzustand
Die Thüringer Universitäts- und Landesbibliothek (ThULB) betreibt in Zusammenarbeit
mit dem Rechenzentrum der Friedrich-Schiller-Universität Jena seit 1999 eine Digitale
Bibliothek namens
Die Aufgabe von
UrMEL (University Multimedia Electronic Library).
UrMEL
besteht in der Bündelung der vielfältigen Aktivitäten an der
Friedrich-Schiller-Universität Jena zur Bereitstellung multimedialer und historischer Do-
UrMEL derzeit
die drei Projektkonzeptionen [UrM09] University@UrMEL, Journals@UrMEL und Collections@UrMEL, die auf dem Open-Source-System MyCoRe (siehe dazu auch Abschnitt
kumente in gemeinsamen Projekten [UrM09]. Zu diesem Zwecke umfasst
6.5) basieren.
Unter
University@UrMEL
ndet man eine Ansammlung von Hochschuldokumenten wie
Dissertationen, Examensarbeiten, Forschungsberichte und Vorlesungsskripte. Es dient zudem als Plattform für die Einrichtung elektronischer Semesterapparate [UrM09]. Auÿerdem werden Audio- wie auch Videoaufnahmen unter anderem von Vorlesungseinheiten zum
kostenfreien Abruf zur Verfügung gestellt.
Eine Ansammlung digitaler Zeitschriften ist unter
Journals@UrMEL
einsehbar. Hierun-
ter zählen digitalisierte historische Zeitschriften, die auf diesem Wege leichter zugänglich
gemacht und darüber hinaus vor dem Verfall geschützt werden, sowie erworbene digitale
Zeitschriften von Verlagen und durch die ThULB eigens herausgegebene Zeitschriften.
In der dritten Projektkonzeption
Collections@UrMEL
ndet man eine Reihe von Spezi-
alapplikationen zur digitalen und multimedialen Aufbereitung und wissenschaftlichen Erschlieÿung wertvoller Bestände aus Archiven und Handschriftensammlungen [UrM09].
Durch die unterschiedlichen medialen Bestandteile in den drei Projektbereichen von
UrMEL werden eine Vielzahl von Dateiformaten verwendet und ein groÿer Datenbestand
verwaltet, der zurzeit eine Gröÿe von mehreren Terabytes umfasst.
Das zugrunde liegende Open-Source-System
MyCoRe
benötigt zur Speicherung und Ver-
waltung der Informationen ein relationales DBMS. Durch die Verwendung von
Hibernate
[Hat09], einem objektrelationalen Mapping-Werkzeug, ist es dem Anwender überlassen,
welches DBMS eingesetzt wird. Im konkreten Beispiel wird das DBMS
Version 9 eingesetzt. Dieses läuft gegenwärtig auf einer
Sun XFire 4540
IBM DB2 LUW
mit dem Betriebs-
system
Linux Red Hat
Wie in
Abbildung 1 zu erkennen ist, erfolgte die Datensicherung bislang durch Online-
in der Version 5.1.
Backups und eine zusätzliche nächtliche Sicherung mittels der DB2-eigenen Programme
db2move
und
db2look
[IBM09]. Diese zusätzliche Sicherung dient dem Szenario eines To-
talausfalls, bei dem eine bereits vorbereitete Maschine, das Sekundärsystem, mit den gesicherten Daten als Produktiv- beziehungsweise Primärsystem einspringen kann. Falls eine
Recovery nach einem Systemfehler oder gar einem Totalausfall notwendig ist, kann derzeit
nicht ausgeschlossen werden, dass in das System neu eingefügte Informationen oder Änderungen an bereits bestehenden Daten verloren gehen. Darüber hinaus besteht die Gefahr
der Inkonsistenz zwischen den in der Datenbank abgelegten Informationen auf der einen
Seite und den tatsächlichen Daten im Dateisystem auf der anderen Seite. Hiermit ist beispielsweise gemeint, dass Daten in Form von Bildern auf dem Dateisystem zwar vorhanden
sind, die Zuordnungen, die in der Datenbank abgelegt wurden, aber verloren gegangen
sind.
3
Abbildung 1: Ausgangszustand mit manuellem Einspielen der Datensicherung
Der durch diese Studienarbeit zu erreichende Zielzustand ist eine Hochverfügbarkeitslösung
im Sinne eines Replikationsverfahrens, um die eben beschriebenen Probleme zu vermeiden
und eine Systemumgebung zu schaen, die im Falle eines Ausfalls des Primärsystems zu
keiner Unterbrechung der Anwendungen führt und damit neben der Sicherheit der Daten
auch gewährleistet, dass die Projekte von
Die
UrMEL jederzeit verfügbar sind.
Abbildung 2 stellt eine Illustration des Zielzustandes dar. Daraus kann entnommen
werden, dass im Vergleich zum Ausgangszustand das manuelle Einspielen der Daten auf
dem Sekundärsystem entfällt. Durch ein zu wählendes Replikationsverfahren wird dieses
nahezu konsistent zum Primärsystem gehalten. Bei einem Totalausfall des Primärsystems
springt fortan das Sekundärsystem ein mit aktuellem Datenbestand. Die Rollenverteilung
wechselt dadurch: Das ehemalige Sekundärsystem wird zum Primärsystem und bearbeitet
nun alle Anfragen des Anwendungsservers. Sobald das eigentliche Primärsystem wieder
verfügbar ist, erfolgt eine Synchronisation mit dem aktuellen Primärsystem und die Rollenverteilung entspricht wieder dem ursprünglichen Zustand. Weitergehende Informationen
zur Auswahl des Verfahrens und zur Konguration sind im
sechsten Kapitel zu nden.
Es ist zudem anzumerken, dass der Ausfall des Anwendungsservers nicht Bestandteil der
weiteren Ausführungen ist. Es wird also im Betrachtungsbereich der Studienarbeit davon
ausgegangen, dass der Anwendungsserver fehlerfrei und ausfallsicher läuft und es hier nicht
zu einem Engpass kommen kann. In der Realität muss dieser Fall natürlich mit betrachtet
4
Abbildung 2: Zielzustand mit Replikation
werden, da der Anwendungsserver in der jetzigen Form eine Art Flaschenhals darstellt.
Denn sobald dieser nicht betriebsbereit ist, ist das ganze System nicht mehr verfügbar.
5
3
Hochverfügbarkeit
Der Begri der
Hochverfügbarkeit
umfasst eine Vielzahl von Kennzahlen und Faktoren, die
den dauerhaften Betrieb und die dauerhafte Erreichbarkeit von Anwendungen und Daten
gewährleisten. Aus diesem Grund stellt das folgende Kapitel nur einen Einblick in die
Thematik dar und erfüllt daher keinen Anspruch auf Vollständigkeit.
Allgemein gesehen bezeichnet der Begri der Hochverfügbarkeit die Fähigkeit eines Systems, einen uneingeschränkten Betrieb auch und gerade bei Ausfällen desselben oder einer
seiner Komponenten zu gewährleisten, ohne dass es einen unmittelbaren menschlichen Eingri erfordert.
Unter der
Verfügbarkeit
eines Dienstes, im konkreten Beispiel also die Verfügbarkeit des
DBMS, versteht man die Wahrscheinlichkeit, dass das DBMS innerhalb eines spezischen
Zeitraums funktionstüchtig ist [WG03].
Formal gesehen lässt sich diese Verfügbarkeit wie folgt berechnen:
Verfügbarkeit[%] =
1−
Ausfallzeit
Produktionszeit
+ Ausfallzeit
∗ 100
Verfügbarkeit ist demnach der Grad, zu dem die vollständige Funktionalität gemäÿ der
Spezikation einer Anwendung für den Nutzer vorhanden ist. Verfügbarkeit wird auch als
Maÿ zur Bewertung der Zuverlässigkeit einer Anwendung verstanden [Küs85]. Sie ist
ein wichtiger Messwert im Bereich hochverfügbarer Systeme. Ein auf Hochverfügbarkeit
ausgerichtetes System kann durch die folgenden Eigenschaften nach [Hel04] charakterisiert
werden:
•
Toleranz und Transparenz gegenüber Fehlern,
•
vorsorgende Build-in-Funktionalitäten,
•
proaktives Monitoring und schnelle Fehlererkennung,
•
schnelle Wiederherstellungsmöglichkeiten,
•
automatisierte Wiederherstellung ohne administrative Eingrie sowie
•
kein oder geringer Datenverlust.
Harvard Research Group (HRG), ein im Marktforschungs- und Beratungssegment tätiAvailability Environment Classication (AEC 0 bis 5) in sechs Verfügbarkeitsklassen ein, die in der folgenden Tabelle
Die
ges Unternehmen, unterteilt die Hochverfügbarkeit in ihrer
1 überblicksartig dargestellt sind. Die Kategorisierung richtet sich dabei nach der Anzahl
der Neunen im Grad der Verfügbarkeit. Im Falle von AEC-5 besteht demnach eine Verfügbarkeit von 99,999%, bei AEC-0 liegt sie unter 90%.
Inwieweit eine Anwendung verfügbar ist, richtet sich vor allem danach, in welchem Umfang
ungeplante Ausfälle verhindert werden können. Diese Ausfälle werden dabei nach [Hel04]
in die folgenden Ursachenklassen kategorisiert:
•
Katastrophen (z.B. Sturm, Hochwasser oder Brand),
6
HRG-Klasse Bezeichnung
Erklärung
AEC-0
Conventional
Funktion kann unterbrochen werden, Datenintegri-
AEC-1
Highly Reliable
AEC-2
High Availability
tät ist nicht essenziell.
Funktion kann unterbrochen werden, Datenintegrität muss jedoch gewährleistet sein.
Funktion darf innerhalb festgelegter Zeiten oder
zur Hauptbetriebszeit nur minimal unterbrochen
werden.
AEC-3
Fault Resilient
Funktion muss innerhalb festgelegter Zeiten oder
während
der
Hauptbetriebszeit
ununterbrochen
aufrechterhalten werden.
AEC-4
Fault Tolerant
Funktion muss ununterbrochen aufrechterhalten
werden, der 24*7-Betrieb (24 Stunden, 7 Tage die
Woche) muss gewährleistet sein.
AEC-5
Disaster Tolerant
Funktion muss unter allen Umständen verfügbar
sein.
Tabelle 1: Verfügbarkeitsklassen der Harvard Research Group
•
Systemfehler (z.B. unerwartetes Systemversagen),
•
Fehler durch den Menschen (z.B. fehlerhafte Bedienung und Konguration, versehentliches Entfernen von Systemdaten oder Datenmanipulierung),
•
logische Fehler der Applikation (z.B. Funktionsfehler) und
•
Datenkorruptionen.
Aber auch geplante Ausfallzeiten können den Grad der Verfügbarkeit reduzieren. Analog
zu den ungeplanten Ausfällen können sie nach [Hel04] kategorisiert werden in:
•
Systempege (z.B. Reorganisation oder Datensicherung),
•
Wartung der Hardware und
•
das Einspielen von Upgrades und Patches.
Das Ziel der bestmöglichen Minimierung genannter Ausfallzeiten und damit der Erreichung
eines möglichst hohen Grades der Verfügbarkeit ergibt sich vor allem aus der Notwendigkeit für hochverfügbare Anwendungen, die aus geschäftlichen Anforderungen auf der einen
Seite und gesetzlichen Anforderungen (Langzeitarchivierung, elektronische Verwertbarkeit,
Datensicherheit oder Kompatibilität der Daten) auf der anderen Seite resultieren.
7
4
Theoretische Grundlagen der Replikation
Im Kontext der Datenverarbeitung bezeichnet die
Replikation das Speichern ein und dersel-
ben Information auf mehreren unterschiedlichen (möglicherweise auch geographisch verteilten) Speichermedien. Sie gehört zu den Verfahren der Datensicherung und hat im Bereich
der Hochverfügbarkeit von DBMS-Produkten eine enorme Bedeutung.
Replikationsverfahren werden unter anderem dazu eingesetzt, die Verfügbarkeit der Daten
zu erhöhen, die Performance zu steigern und die Last auf die jeweiligen Datenserver zu
minimieren. Auch im Segment der verteilten Datenbanken werden Replikationsverfahren
angewendet, um sicherzustellen, dass Daten, die in das Primärsystem eingefügt werden
oder Änderungsoperationen an diesen zeitnah auf den verschiedenen Datenbanken vorliegen. Damit kann gewährleistet werden, dass auf den verteilten Datenbanken ein identischer
Datenbestand vorliegt und somit die Konsistenzbedingungen erfüllt werden. Replikationsverfahren nden zudem Anwendung in Data-Warehouse-Systemen sowie in der Zusammenarbeit zwischen mobilen und stationären Datenbanken [Gol05].
4.1 Hardware- und softwarebasierte Replikation
Grundlegend unterscheidet man zwischen hardwarebasierten und softwarebasierten Replikationsverfahren. Erstgenannte werden über Controller oder Appliances realisiert. Unter
einer
Appliance
versteht man hierbei eine für eine spezische Funktionalität kongurierte
Hardwarekomponente. Die zu speichernden Informationen werden so auf direktem Wege
auf die verschiedenen Speichermedien übertragen, sodass die beteiligten Speichermedien
untereinander einen konsistenten Datenbestand vorweisen können. Sie bieten im Allgemeinen den Vorteil der höheren Performance und reduzieren die Granularität sowie die
Entscheidungsbreite, was genau wann repliziert werden muss. Eine bekannte technische
Umsetzung ist das Hardware-
RAID (Redundant Array of Independent Disks).
Softwarebasierte Replikationsverfahren werden demgegenüber durch eigenständige Prozesse oder Teilprozesse des DBMS auf dem Server betrieben. Das bedeutet, dass die Organisation der Datenverteilung durch eine Funktion innerhalb des DBMS, durch das Betriebssystem selbst oder durch externe Programme realisiert wird. Sie sind im Vergleich
zu hardwarebasierten Verfahren kostengünstiger, müssen dafür aber im Bereich der Performance Einbuÿen hinnehmen und verursachen ein höheres Datentransferaufkommen. Als
bekannte Verfahren seien hier die
IBM
genannt. Auf diese wird im
SQL-Replikation, Q-Replikation
und
fünften Kapitel näher eingegangen.
HADR
der Firma
Die Wahl eines Verfahrens aus einem der beiden Bereiche steht dabei sehr in Abhängigkeit
zu dem spezischen Szenario, da eine Universallösung für die verschiedensten Probleme
fehlt. Es ist daher erforderlich, für jedes Szenario anhand einer Anforderungsanalyse das
bestmögliche Replikationsverfahren auszuwählen und zu implementieren. Dies führt zu
einem Mehraufwand bei der Planung, Implementierung und Pege des Systems.
4.2 Klassikation der Replikationsverfahren
Replikationsverfahren lassen sich in Abhängigkeit zweier Parameter klassizieren, welche
wiederum die unterschiedlichen Kriterien der Konsistenz beschreiben. Diese Parameter
lassen sich nach [GHOS96] wie folgt erfragen:
8
1. Wann werden Änderungsoperationen ausgeführt?
2. In welchem Replikat werden die Änderungsoperationen ausgeführt?
Unter einem
Replikat
versteht man in diesem Falle den Datenbestand einer physischen
Speichereinheit innerhalb der Replikationsumgebung, der in der Regel konsistent zu den
Datenbeständen aller anderen Replikationsteilnehmer ist.
Bezogen auf die erste Frage, wann Änderungsoperationen ausgeführt werden, unterscheidet
man ein synchrones von einem asynchronen Verfahren.
Beim synchronen Verfahren, welches auch
eager
genannt wird, gilt eine Änderungsope-
ration erst dann als abgeschlossen, wenn sie auf jedem Replikat erfolgreich durchgeführt
worden ist. Die Ausführung der Änderungsoperationen erfolgt nahezu zeitgleich auf den
verschiedenen Replikaten. Schlägt auf einem Replikat die Änderungsoperation fehl, so gilt
die gesamte Änderungsoperation als fehlerhaft. Es werden also entweder alle Replikate
aktualisiert oder keines. Aus diesem Grund bezeichnet man dieses Verfahren auch als pessimistische Replikation. Dieser Umstand kann nach [GHOS96] zu gröÿeren Problemen führen. Verwendet man beispielsweise ein System mit n-vielen Replikaten und einer Vielzahl
an Änderungsoperationen pro Sekunde, so wird ein nichtlineares Wachstum an durchzuführenden Replikataktualisierungen erreicht. Dies macht deutlich, für welche Gröÿenordnungen sich synchrone Verfahren nicht anbieten. Als Nachteil dieses Verfahrens ist weiterhin
der entstehende Kommunikationsoverhead anzusehen, der zwischen den einzelnen Replikationsteilnehmern entsteht und zur Vergröÿerung der Antwortzeit beiträgt. Ein Vorteil
des synchronen Verfahrens besteht hingegen in der Erkennung von Konikten vor dem
abschlieÿenden Commit. Dadurch ist die direkte Sicherstellung der ACID-Eigenschaften
möglich.
Im Unterschied dazu steht das asynchrone Verfahren, welches auch als
tische Replikation
lazy
oder
optimis-
bezeichnet wird. Hier erfolgt die Aktualisierung der Replikate erst nach
dem Commit der Änderungsoperation auf einem der Replikate. Das bedeutet zum einen,
dass die Antwortzeit geringer ist als bei dem synchronen Verfahren, zum anderen aber
auch, dass die Replikate für einen gewissen minimalen Zeitraum inkonsistent zueinander
sind. Es gibt hierbei wiederum zwei verschiedene Möglichkeiten, auf welchem Replikat die
Primary-Copy -Ansatz und
Update-Everywhere -Ansatz [Mun09].
Der Primary-Copy -Ansatz beschreibt eine Replikationsumgebung, bei der ein Replikations-
Änderungsoperation durchgeführt werden kann, nämlich der
der
teilnehmer als Master-System fungiert. Alle anderen Teilnehmer fungieren als sogenannte
Slave-Systeme. Ein Master-System ist dadurch charakterisiert, dass es die höchste Priorität
in der Umgebung besitzt. Das bedeutet beispielsweise, dass die Änderungsoperationen immer zuerst auf dem Master-System ausgeführt werden. Ist die Änderungsoperation erfolgreich, werden die Änderungsoperationen auf die Slave-Systeme repliziert. Diese Architektur
birgt die Gefahr eines sogenannten
Single-Point-of-Failure (SPoF),
da bei einem Ausfall
des Master-Systems als alleiniger Zugrispunkt für Änderungsoperationen diese in dieser
Umgebung nicht mehr ausgeführt werden können. Unter einem Single-Point-of-Failure versteht man also eine einzelne Fehlerstelle, die für den Gesamtausfall des Komplettsystems
verantwortlich ist. Aus diesem Grund muss darauf geachtet werden, dass im Falle eines
Ausfalls des Master-Systems ein beliebiges Slave-System die Funktionalität des MasterSystems übernimmt und damit für einen Fortlauf des Gesamtsystems sorgt.
Im Gegensatz dazu steht der
Update-Everywhere -Ansatz. In dieser Architektur haben im
Prinzip alle Teilnehmer die Stellung eines Master-Systems. Änderungstransaktionen kön-
9
nen somit auf allen Replikationsteilnehmern ausgeführt werden. Dies bedingt im Umkehrschluss allerdings, dass ein komplexer Synchronisationsaufwand entstehen kann, um
die Replikate auf einen konsistenten Datenbestand zu bringen.
Bereits in den Ausführungen zum ersten Parameter wurde auch der zweite Parameter behandelt, also die Frage, in welchem Replikat die Änderungstransaktionen ausgeführt werden. Dieser unterscheidet zwischen einem unidirektionalen und bidirektionalen Datenuss
bei den Replikationsverfahren [Zen07].
Bei einem unidirektionalen Datenuss werden Informationen von einem Primärsystem auf
ein oder mehrere Sekundärsysteme übertragen. Der Datenuss geht hier also immer nur in
eine Richtung und wird für die Verbreitung oder Zusammenführung von Informationen in
der Replikationsumgebung verwendet (siehe dazu
Abbildung 3).
Abbildung 3: Anwendungsbeispiele des unidirektionalen Datenuss
Im Vergleich dazu versteht man unter einem bidirektionalen Datenuss eine Übertragung
von Informationen zwischen mehreren Systemen in beiden Richtungen. Diese Art wird
insbesondere bei dem
Update-Everywhere -Ansatz
verwendet. Der bidirektionale Daten-
uss kann bei der Synchronisation der verschiedenen Replikationsteilnehmer allerdings zu
Konikten führen, wenn verschiedene Änderungsoperationen auf gleichen Informationen
zu identischen Zeiten auf den verschiedenen Replikaten ausgeführt werden. Diesen Konikten kann man mit unterschiedlichen Auösungsmechanismen, wie beispielsweise den
Timestamp-basierten Verfahren
entgegenwirken. Bei dem
Timestamp-basierten Verfahren
wird entweder dem zeitlich jüngeren oder dem zeitlich älteren Replikat Priorität bei der
Koniktauösung gegeben. Man spricht hier auch von
mestamp.
Latest Timestamp
und
Earliest Ti-
Eine Erweiterung des bidirektionalen Datenusses stellt die Datenussrichtung
peer
peer-to-
dar. Hierbei handelt es sich um einen Datenuss zwischen mehr als zwei Systemen,
der dadurch gekennzeichnet ist, dass zwischen jedem beteiligten System eine bidirektionale
Datenussrichtung existiert. Es kommuniziert demnach jedes System mit allen anderen
beteiligten Systemen.
10
5
Replikationsverfahren unter
Das DBMS
IBM DB2 LUW
IBM DB2 LUW
Version 9 unterstützt eine Vielzahl software- und hardwa-
rebasierter Replikationsverfahren für die verschiedenen Systemumgebungen. Zu den soft-
SQL-Replikation und
High Availability Disaster Recovery -Verfahren. Auf diese wird
warebasierten Verfahren zählen im Besonderen die Verfahren der
Q-Replikation
sowie das
im Folgenden detailliert eingegangen. Hardwarebasierte Replikationsverfahren unter dem
DBMS
IBM DB2 LUW
Version 9 nden in dieser Studienarbeit keine weitere Beachtung.
5.1 SQL-Replikation
Das als
SQL-Replikation
bezeichnete Datenverteilungsverfahren ist das älteste der drei
in dieser Arbeit betrachteten Verfahren unter dem DBMS
Unterschied zum HADR-Verfahren, welches im
IBM DB2 LUW
[IBM99]. Im
Abschnitt 5.3 vorgestellt wird, arbeitet
die SQL-Replikation auf einer feingranularen Ebene des DBMS. Das bedeutet folglich: Je
feingranularer die Ebene, desto weniger Objekte werden durch eine Änderungsoperation
innerhalb des Datenbanksystems berührt. Beispielsweise bendet sich eine Operation A
auf einer feingranulareren Ebene als die Operation B, falls die Operation A Änderungen
nur eine Tabelle betreend durchführt, hingegen die Änderung durch Operation B die
Gesamtheit der Tabellen betrit. Weiterhin ist eine Erweiterung der Replikationsumgebung
möglich, da es bei der SQL-Replikation mehr als ein Sekundärsystem geben darf.
5.1.1 Architektur einer SQL-Replikationsumgebung
Das Verfahren der SQL-Replikation hat die zentrale Aufgabe, bestimmte Daten von einem Primär- auf ein oder mehrere Sekundärsysteme zu replizieren. Die hierfür notwendige
Abbildung 4 schematisch dargestellt sind. Der Einfachheit halber wird im weiteren Verlauf
Architektur setzt sich dabei aus verschiedenen Komponenten zusammen, die in der
dieses Kapitels das Szenario angenommen, dass jeweils
ein
Primär- und
ein
Sekundärsys-
tem in der Replikationsumgebung vorhanden ist.
Abbildung 4: Architektur einer SQL-Replikationsumgebung
Auf jedem zur Replikationsumgebung gehörenden Primärsystem ist mindestens ein sogenanntes
Capture-Programm installiert. Dieses Hilfsprogramm hat die Aufgabe, Änderungen
11
an Daten, die zur Replizierung vorgesehen sind, zu erkennen, zu prüfen und gegebenenfalls Folgeaktionen auszuführen. Capture-Programme sind mit besonderen Rechten ausgestattete Anwendungsprozesse. Für bestimmte Replikationsumgebungen ist es durchaus
sinnvoll, statt einem mehrere Capture-Programme auf dem Primärsystem laufen zu lassen.
Hierdurch können beispielsweise die Parallelverarbeitungskapazitäten bei der Replikation
erhöht werden, was zu einer höheren Durchsatzrate und einer verbesserten Systemleistung
führt. Der Nachteil bei der Ausweitung der Parallelverarbeitung liegt in dem erhöhten
Bedarf an CPU-Kapazitäten und einer höheren Anzahl an Verbindungen zum DBMS.
Ein weiterer Nutzen der Verwendung mehrerer Capture-Programme besteht in der Möglichkeit, den Datenuss der Replizierung für einzelne Quelleinheiten zu kanalisieren. Das
bedeutet, dass sensiblen Quelleinheiten, die eine Replizierung mit möglichst geringer Latenz erfordern, jeweils ein eigenes Capture-Programm zur Verfügung gestellt werden kann.
Dies gewährleistet die nahezu sofortige Verarbeitung von zu replizierenden Daten durch
das Capture-Programm. Andernfalls könnte es durchaus vorkommen, dass die Daten nicht
echtzeitnah repliziert werden können, weil das Capture-Programm in diesem Moment bereits einen anderen Replizierungsauftrag ausführt.
Analog zum Capture-Programm gibt es auf jedem zur Replikationsumgebung gehörenden
Sekundärsystem ein sogenanntes
Apply-Programm. Dieses Hilfsprogramm hat die Aufgabe,
Zwischenspeichertabelle zu
Änderungen an zu replizierenden Daten aus der sogenannten
entnehmen und diese auf dem jeweiligen Zielsystem einzuarbeiten.
Zur Architektur einer SQL-Replikationsumgebung gehört zudem noch eine zu jedem Capture- und jedem Apply-Programm zugeordnete Gruppe von
Steuertabellen
sowie die eben
bereits erwähnte Zwischenspeichertabelle. Ausgehend vom Capture-Programm über die
Zwischenspeichertabelle und dem Apply-Programm bis zum Sekundärsystem erfolgt der
Datenuss unidirektional.
Die Architektur der SQL-Replikation legt keine direkte Beschränkung auf das DBMS
DB2 LUW
IBM
fest. So ist es möglich, dass eine Replikation zwischen verschiedenen relatio-
nalen DBMS-Produkten realisiert werden kann. Es spielt dabei auch keine Rolle, ob das
Primärsystem ein DB2-System ist. Es ist theoretisch und praktisch möglich, dass die für
das DBMS
IBM DB2 LUW
entwickelte SQL-Replikation auch zwischen verschiedenen
nicht-DB2-Systemen zum Einsatz kommt. Hierfür bedarf es allerdings dem Einsatz eines
dritten Produktes, dem sogenannten
DB2 Relational Connect.
5.1.2 Funktionsweise
Bei der Einrichtung einer SQL-Replikationsumgebung werden im ersten Schritt die Quelleinheiten registriert. Unter
Quelleinheiten
versteht man hierbei genau die Daten, die auf
das Sekundärsystem repliziert werden sollen. Die Verknüpfung auf diese Daten erfolgt
durch die Angabe der Tabellen, in denen sich die zu replizierenden Daten benden oder
durch die Angabe der entsprechenden Views. Genauer gesagt erfolgt hierbei die Angabe
des Namens und der Schemabezeichnung der jeweiligen Tabelle oder des jeweiligen Views.
Die Registrierung der Quelleinheiten kann der Einfachheit halber über einen speziellen
Replikations-Wizard in der Steuerzentrale erfolgen.
Nach der Registrierung der Quelleinheiten werden die Steuertabellen erstellt. Wie bereits
erwähnt ist jedem Capture- beziehungsweise Apply-Programm eine Gruppe von Steuertabellen zugeordnet. Während mehrere Apply-Programme eine Gruppe von Steuertabellen
nutzen können, muss jedem Capture-Programm eine eigene Gruppe von Steuertabellen zugeordnet werden. Steuertabellen dienen unter anderem als Wissenszentrale der Programme,
12
geben Aufschluss über die Programmleistung und ermöglichen die Überwachung des Replikationsstatus. Sie bestehen aus statischen wie auch dynamischen Inhalten. So werden in
den Steuertabellen die registrierten Quell- und Zieleinheiten verzeichnet, auch die aktuelle
Position des Capture-Programms beim sequenziellen Auslesen des Protokolls wird festgehalten. Zusätzlich werden durch die Programme eigens generierte Daten in den Steuertabellen gespeichert, die zur Untersuchung der bereits erwähnten Programmleistung notwendig
sind.
Im weiteren Fortgang der Einrichtung einer SQL-Replikationsumgebung ist die Zuordnung
der Zieleinheiten zu den bereits registrierten Quelleinheiten notwendig. Unter
Zieleinheiten
versteht man analog zu den Quelleinheiten diejenigen Tabellen, in die die zu replizierenden
Daten abgelegt werden sollen. Eine derartige Verknüpfung von Quell- und Zieleinheit wird
auch als
Subskriptionsgruppe
bezeichnet. Diese beinhaltet unter anderem die Adressierung
der Quell- und Zieleinheit, d.h. die Zuordnung der jeweiligen Einheiten zu dem jeweiligen
Primär- und Sekundärsystem. Jeder Subskriptionsgruppe ist eine Zwischenspeichertabelle
zugeordnet, darüber hinaus enthält sie eine Vielzahl weiterer Parameter, die den Ablauf
und die Verarbeitung der Replikation beeinussen. Auf diese geht der
Abschnitt 5.1.3
detailliert ein.
Nach der Ausführung der oben genannten Initialisierungsschritte kann die SQL-Replikation
ihre eigentliche Arbeit aufnehmen. Sei einmal angenommen, dass auf dem Primärsystem
das DBMS
IBM DB2 LUW
in Betrieb ist. In diesem Fall wird ein Capture-Programm
gestartet. Nach dem erfolgreichen Start wird eine Verbindung zwischen dem CaptureProgramm und dem entsprechenden Apply-Programm auf dem Sekundärsystem hergestellt. Durch einen darauf folgenden Informationsaustausch wird festgestellt, ob sich die
Systeme in einem synchronen Zustand benden. Dieser initialen Kommunikation folgt die
Erfassung der geänderten Daten in den Quelleinheiten. Hierzu liest das Capture-Programm
das DB2-Protokoll sequenziell aus und sucht nach Änderungen an den registrierten Quelleinheiten. Sobald eine Transaktion die Quelleinheit betreend gefunden wird, erfolgt die
after image -Wertes aus der Protokolldatei
des after images verbirgt sich dabei das durch
an die Transaktion gekoppelte Ablegung des
in den Hauptspeicher. Hinter dem Begri
die Transaktion modizierte Tupel, sozusagen der neue Zustand des Tupels. Analog dazu gibt es die
before images,
die das Tupel vor der Transaktionsausführung, d.h. vor der
eigentlichen Modizierung, beinhalten. Standardmäÿig erfasst und benötigt das CaptureProgramm nur die
after image -Werte. Es ist aber bei der Registrierung der Quelleinheiten
before image -Werte einzustellen.
möglich, die zusätzliche Speicherung der
Sobald der Commit-Log-Record (CLR) gefunden wird, entnimmt das Capture-Programm
after image -Werte aus dem Hauptspeicher und legt diese
die zur Transaktion gehörenden
mit zusätzlichen Informationen in der Zwischenspeichertabelle ab. Der genaue Aufbau einer
Zwischenspeichertabelle wird in
Abschnitt 5.1.6 betrachtet. Wird die Transaktion dage-
gen nicht erfolgreich abgeschlossen, sondern zurückgesetzt, nimmt das Capture-Programm
die Löschung der entsprechenden
image -Werte aus dem Speicher vor. Einen Überblick über
die Datenerfassung bei der SQL-Replikation gibt die
Falls auf dem Primärsystem ein anderes DBMS als
Abbildung 5.
IBM DB2 LUW
eingesetzt wird, gestal-
tet sich die Erfassung der geänderten Daten auf den Quelleinheiten bei der SQL-Replikation
etwas anders. Für dieses Szenario sei das Capture-Programm einmal auÿen vor gelassen.
Grob betrachtet werden bei der Registrierung einer Quelleinheit auf einem derartigen Primärsystem stattdessen vier
Trigger
erstellt. Diese Trigger werden jeweils gefeuert, sobald
eine INSERT-, UPDATE- oder DELETE-Operation ausgeführt wird. Es handelt sich also um einen INSERT-Trigger, UPDATE-Trigger und DELETE-Trigger. Der vierte Trigger
13
Abbildung 5: Prozess der Erfassung einer Transaktion auf einer registrierten Quelleinheit
bei der SQL-Replikation.
(1) Die Transaktion wird ausgeführt. (2) Die Transaktion wird im Protokoll verzeichnet.
(3) Das Capture-Programm erkennt die Transaktion auf der registrierten Quelleinheit. (4)
Die
after-image -Werte werden durch das Capture-Programm in den Hauptspeicher gelegt.
(5) Die Transaktion wurde laut Log-Eintrag erfolgreich abgeschlossen; das CaptureProgramm entnimmt die Werte aus dem Hauptspeicher. (6) Die Transaktion wurde
nicht erfolgreich abgeschlossen die Werte werden gelöscht. (7) Die Transaktion wurde
erfolgreich abgeschlossen die Werte werden in die Zwischenspeichertabelle eingetragen.
dient der Bereinigung der Zwischenspeichertabelle, sobald die durch die drei erstgenannten
Trigger eingetragenen Änderungen auf dem Sekundärsystem eingearbeitet wurden.
Nachdem die Werte in die Zwischenspeichertabelle eingetragen wurden, können diese nun
durch das Apply-Programm auf dem Sekundärsystem verarbeitet werden. Dazu muss das
Apply-Programm logischerweise gestartet sein. Es verarbeitet genau die Eintragungen in
der Zwischenspeichertabelle, die ihm durch die Subskriptionsgruppen zugeordnet wurden. Sobald das Apply-Programm mit der Verarbeitung der Einträge in der Zwischenspeichertabelle fertig ist, geht es in einen inaktiven Zustand, der auch als
sleep-Modus
bezeichnet wird, über. Das bedeutet, dass das Apply-Programm nur dann aktiv ist und
damit CPU-Leistung verbraucht, wenn noch nicht verarbeitete Einträge in der Zwischenspeichertabelle vorhanden sind. Die Zuordnung des Apply-Programms zu einer bestimmten Subskriptionsgruppe erfolgt über das sogenannte Apply-Qualikationsmerkmal. Dieses
Apply-Qualikationsmerkmal ist eine eindeutige Bezeichnung des Programms, beispielswei-
se durch eine Namensgebung, durch welche das Programm identiziert werden kann. Dies
ist vor allem dann notwendig, wenn mehrere Apply-Programme ein und dieselbe Gruppe
von Steuertabellen verwenden. Die Verarbeitung der Einträge durch das Apply-Programm
erfolgt sequenziell. Es gibt zudem zwei Möglichkeiten, wie die zu replizierenden Daten auf
dem Sekundärsystem verarbeitet werden. Diese werden im
Abschnitt 5.1.5 erklärt. Mit
der Verarbeitung der geänderten Daten auf dem Sekundärsystem ist ein sogenannter
plikationsdurchlauf
abgeschlossen. Die
Re-
Abbildung 6 gibt einen schematischen Überblick
über den Vorgang der Datenreplizierung bei der SQL-Replikation. Wann und wie oft ein
Replikationsdurchlauf erfolgt, ist auch vom eingestellten Durchführungsintervall abhängig.
Die verschiedenen Wertbelegungen für das Durchführungsintervall werden im folgenden
Abschnitt 5.1.3, der sich den Subskriptionsgruppen widmet, dargelegt.
14
Abbildung 6: Prozess der Verarbeitung einer Transaktion auf einer registrierten Zieleinheit
bei der SQL-Replikation.
(1)
Das
Apply-Programm
liest
den
entsprechenden
Eintrag
aus
der
Zwischenspei-
chertabelle. (2) Das Apply-Programm kopiert die entnommenen Werte in die Zieleinheit.
5.1.3 Subskriptionsgruppen
Subskriptionsgruppen sind ein elementarer Bestandteil der SQL-Replikation. Ohne sie wäre ein derartiges Verfahren quasi hilos, da es nicht darüber informiert wäre, welche
Daten wohin zu replizieren sind. Wie bereits in
Abschnitt 5.1.2 angerissen, bestimmt die
Subskriptionsgruppe die Zuordnung einer Quelleinheit zur entsprechenden Zieleinheit. Im
Grunde kann man die Subskriptionsgruppe auch als Funktion ansehen, die eine Menge von
Daten auf eine zweite Menge auf einem anderen System abbildet.
Neben der Benennung der Quell- und Zieleinheit bedarf es der Registrierung der Spalten
und Zeilen, die zu replizieren sind. Die zu replizierenden Spalten der Quelleinheit müssen
zudem auch den entsprechenden Spalten der Zieleinheit zugeordnet werden.
Die nun durch die Verknüpfung der Quell- mit der Zieleinheit festgelegten Daten können
zu unterschiedlichen Zeitpunkten repliziert werden. Dies wird im Rahmen des
rungsintervalls
•
Intervallsteuerung,
•
Ereignissteuerung oder
•
kontinuierliche Replikation.
Unter der
Durchfüh-
deniert, welches drei verschiedenen Typen entsprechen kann:
Intervallsteuerung versteht man die Festlegung eines einfachen Intervalls, in wel-
chem die Daten zu replizieren sind. Beispielsweise kann angeben werden, dass die durch
die Subskriptionsgruppe denierten Daten jede 30 Minuten zu replizieren sind. Das bedeutet, dass alle 30 Minuten ein Replikationsdurchlauf gestartet wird. Das Sekundärsystem
liegt im Hinblick auf die Konsistenz des Datenbestandes zeitlich gesehen bei diesem Typ
maximal 30 Minuten plus der Zeit für die Durchführung des Replikationsdurchlaufs hinter
dem Primärsystem. Die Intervallsteuerung wird beiläug auch als
relative Ablaufsteuerung
bezeichnet.
Demgegenüber wird bei der
Ereignissteuerung
ein bestimmter Zeitpunkt angegeben, zu
dem die Replikation der durch die Subskriptionsgruppe denierten Daten zu erfolgen hat.
Dies macht vor allem dann Sinn, wenn ein Datenabgleich zu einem Zeitpunkt erfolgen
soll, zu dem das Primärsystem wenig Last zu verarbeiten hat. Unter der Ereignissteuerung versteht man aber auch, dass die Replikation genau dann erfolgen soll, wenn eine
bestimmte Operation auf dem Primärsystem erfolgt ist. Dies wird dadurch realisiert, dass
15
der Benutzer oder das Apply-Programm selbstständig einen Eintrag in einer zum ApplyProgramm zugeordneten Steuertabelle vornimmt, der dem bestimmten Ereignis oder der
Operation entspricht. Erkennt das Apply-Programm nun beim sequenziellen Verarbeiten
der Einträge in der Zwischenspeichertabelle einen Eintrag, der identisch mit dem Eintrag
in der Steuertabelle ist, wird ein Replikationsdurchlauf gestartet.
Die
kontinuierliche Replikation
ist eine Methode, bei der ein Replikationsdurchlauf so oft
wie möglich, im Prinzip ständig, erfolgt. Dieser Typ ermöglicht also die beste Annäherung
an genau den Zustand, in welchem der Datenbestand auf dem Sekundärsystem nahezu
identisch zu dem Datenbestand auf dem Primärsystem ist.
Neben dem Durchführungsintervall kann auch die Funktion der Datenblockung innerhalb
einer Subskriptionsgruppe aktiviert oder deaktiviert werden. Unter der
Datenblockung ver-
steht man die Möglichkeit, dass die bei einem Replikationsdurchlauf erfassten Änderungen
nicht in einem Block, sondern in Gruppen aufgeteilt repliziert werden. Hierfür erfolgt die
Angabe eines Zeitraums, der maÿgeblich für die Gruppeneinteilung der Änderungen, d.h.
der Gröÿe der Datenblockgruppen, verantwortlich ist. Der Vorteil der Datenblockung liegt
unter anderem darin, dass der Bedarf an temporärem Speicherplatz minimiert werden kann,
da nur bestimmte Datenblockgruppen repliziert werden und nicht wie bei deaktivierter Datenblockung die Gesamtheit der zu replizierenden Daten. Gleichfalls positive Auswirkungen
hat die aktivierte Datenblockung im Falle eines Fehlers bei der Replikation. So müssen bei
aktivierter Datenblockung nur die Änderungen, die sich innerhalb der Datenblockgruppe
benden, zurückgesetzt werden. Bei deaktivierter Datenblockung werden hingegen alle zum
Replikationsdurchlauf zugehörigen Änderungen zurückgesetzt.
Angenommen, in einem Zeitraum von 30 Minuten werden auf der Quelleinheit 25 Transaktionen vorgenommen, die alle erfolgreich abgeschlossen werden. Zwischen dem Zeitpunkt
t=0 und t=10 erfolgen die ersten 8 Transaktionen, zwischen t=10 und t=20 die nächsten 12
und zwischen t=20 und t=30 die restlichen 5. Bei deaktivierter Datenblockung werden alle
25 Transaktionen innerhalb eines Replikationsdurchlaufs auf dem Sekundärsystem verarbeitet. Ist sie hingegen aktiviert, werden entsprechend des angegebenen Faktors nur genau
diejenigen Transaktionen als Block verarbeitet, die sich innerhalb des Zeitraums benden.
Im Beispiel bedeutet dies bei dem Faktor 10, dass für die Verarbeitung aller Transaktionen
drei Replikationsdurchläufe notwendig wären. Im ersten Durchlauf würden 8, im zweiten
12 und im dritten Durchlauf 5 Transaktionen verarbeitet werden.
Bei der Erstellung der Subskriptionsgruppe kann auÿerdem Einuss auf die Manipulation
oder Umwandlung der zu replizierenden Daten genommen werden. Hierfür wird festgelegt, dass die zu replizierenden Daten statt in die Zwischenspeichertabelle zuerst an eine
gespeicherte Prozedur oder an ein dafür erstelltes SQL-Script übergeben werden. Die Daten werden dann durch die gespeicherte Prozedur oder das SQL-Script manipuliert oder
umgewandelt und anschlieÿend an die entsprechende Zwischenspeichertabelle weitergeleitet. Bei der Übergabe der Daten an eine Prozedur muss zudem die Zuordnung zu den
Prozedurparametern festgelegt werden.
Zu guter Letzt wird auch der Typ der Zieleinheit in der Subskriptionsgruppe festgeschrieben. Die verschiedenen Typen werden im folgenden
Abschnitt 5.1.4 erklärt.
5.1.4 Zieleinheitstypen
Bei der Erstellung einer Subskriptionsgruppe ist im Zuge der Festlegung der Zieleinheit
im Allgemeinen anzugeben, von welchem Typ diese Zieleinheit sein soll. Wird jedoch eine
16
bereits registrierte Zieleinheit ausgewählt, ist die Angabe des Types nicht erforderlich. Im
Bereich der SQL-Replikation unterscheidet man grundsätzlich die folgenden fünf Typen:
•
Benutzerkopie,
•
Zeitpunktangabe,
•
Ergebnistabelle,
•
CCD (Consistent-Change-Data) und
•
Replikat.
Bei dem als
Benutzerkopie
bezeichneten Zieleinheitstyp handelt es sich um eine auf dem
Sekundärsystem schreibgeschützte Tabelle, die im Hinblick auf die Struktur identisch mit
der Quelleinheit ist. Es ist zusätzlich möglich,
abzuspeichern und
berechnete Spalten
after image -Werte und before image -Werte
zu denieren. Eine notwendige Bedingung ist für
Letzteres das Vorhandensein einer Spalte mit
Schlüssel-
bzw.
Unique-Eigenschaft
in der
Tabelle. Derartige Zieleinheiten werden genau dann verwendet, wenn auf dem Sekundärsystem keine Datenänderungen vorgenommen und die Daten aus der Quelleinheit repliziert
werden sollen. Die
Tabelle 2 zeigt den Aufbau des Zieleinheitstypes.
Spaltenbezeichnung Erklärung
Schlüsselspalten
Spalten, die eine Schlüssel- bzw. Unique-Eigenschaft aufweisen
und deren Einträge repliziert werden sollen.
Spalten
Sonstige Spalten, deren Einträge repliziert werden sollen und
keine Schlüssel- bzw. Unique-Eigenschaft besitzen.
Berechnungsspalten
Spalten, deren Einträge sich aus SQL-Berechnungsausdrücken
ergeben (beispielsweise SUM oder MAX).
Tabelle 2: Aufbau des Zieleinheitstypes Benutzerkopie
Eine Erweiterung der Benutzerkopie stellt der Zieleinheitstyp
Zeitpunktangabe
dar. Die
Erweiterung besteht hierbei im Vorhandensein einer weiteren Spalte, in der der Zeitpunkt
abgespeichert werden kann, zu dem die Datenänderung auf der Quelleinheit erfolgte. Diese Spalte wird auch als
Zeitmarkenspalte
bezeichnet. Der hierfür notwendige Zeitstempel
wird durch das Capture-Programm bei der Registrierung der Änderung in der Zwischenspeichertabelle mit übergeben.
Im Gegensatz zu den ersten beiden Zieleinheitstypen steht der dritte Typ, welcher als
Ergebnistabelle bezeichnet wird. Hier werden die Daten aus der Quelleinheit nicht zwingend
eins zu eins repliziert, sondern alternativ Ergebnismengen, die sich aus der Menge der
Daten der Quelleinheit oder aus Berechnungen auf Daten aus der Zwischenspeichertabelle
ergeben, auf die Zieleinheit abgebildet. Derartige Ergebnismengen können beispielsweise
Summen oder Produkte, Maxima oder Minima darstellen. Grundsätzlich unterscheidet
man hierbei zwei Typen der Ergebnistabelle:
•
Basisergebnistabelle und
•
CA (Change-Aggregate)-Tabelle.
17
Spaltenbezeichnung
Erklärung
Spalten
Benutzerdenierte Spalten, die die Ergebnisse der Berechnungen aus der Quelleinheit beinhalten.
IBMSNAP LLOGMARKER
Zeitstempel, der den Beginn der Berechnung der Daten
in der Quelleinheit angibt.
IBMSNAP HLOGMARKER
Zeitstempel, der das Ende der Berechnung der Daten in
der Quelleinheit angibt.
Tabelle 3: Aufbau des Zieleinheitstypes Basisergebnistabelle
Bei der
Basisergebnistabelle
erfolgt in jedem Replikationsdurchlauf die komplette Berech-
nung der Daten auf Grundlage der Quelleinheit, die in der Ergebnistabelle abgespeichert
werden. Einen Überblick über den Aufbau einer Basisergebnistabelle gibt die
Im Gegensatz dazu werden bei der
CA-Tabelle
Tabelle 3.
nur genau die Werte berechnet, die sich
aus den Daten, die in der Zwischenspeichertabelle aufgrund von Änderungen auf der Quelleinheit abgelegt wurden, ergeben. Beispielsweise ist eine CA-Tabelle von Vorteil, wenn
berechnet werden soll, wie viele Kundenzugänge eine Dienstleistungsrma innerhalb einer Woche hatte. Es werden in diesem Beispiel einfach die in der Zwischenspeichertabelle
abgelegten Änderungsoperationen, die zum Eintrag eines neuen Kunden geführt haben, gezählt und in die CA-Tabelle als Wert eingetragen. Die
Tabelle 4 zeigt den Aufbau dieses
Zieleinheitstypes.
Spaltenbezeichnung
Erklärung
Schlüsselspalten
Spalten, die eine Schlüssel- bzw. Unique-Eigenschaft aufweisen und deren Einträge repliziert werden sollen.
Spalten
Sonstige Spalten, deren Einträge repliziert werden sollen
und keine Schlüssel- bzw. Unique-Eigenschaft besitzen.
Berechnungsspalten
Spalten,
deren
Einträge
Berechnungsausdrücken
ergeben
sich
aus
SQL-
(beispielsweise
SUM
oder MAX).
IBMSNAP LLOGMARKER
Ältester Zeitstempel, der den Beginn der Berechnung der
Daten angibt.
IBMSNAP HLOGMARKER
Neuester Zeitstempel, der den Beginn der Berechnung
der Daten angibt.
Tabelle 4: Aufbau des Zieleinheitstypes CA-Tabelle
Wie auch die Benutzerkopie und die Zeitpunktangabe ist die Ergebnistabelle schreibgeschützt und eignet sich daher nur für eine einseitige Replizierung vom Primär- auf das
Sekundärsystem. Auch in Bezug auf die Zeitmarkenspalte ähnelt dieser Typ der Zeitpunktangabe.
Der als
CCD
bezeichnete Zieleinheitstyp eignet sich besonders zur Überwachung des Re-
covery-Protokolls des Primärsystems. So ist es möglich, den Typ der Änderung und die
Reihenfolge der Änderungen abzuspeichern, also ob und wann eine Transaktion Daten
änderte, entfernte oder neue Daten hinzufügte. Auch dieser Typ ist schreibgeschützt. Die
Tabelle 5 zeigt exemplarisch den Aufbau eines derartigen Zieleinheitstypes.
Nicht schreibgeschützt ist der fünfte Zieleinheitstyp, welcher auch als
Replikat
bezeichnet
wird. Ein Vorteil dieses Types ist die Verwendbarkeit für eine mehrseitige Replikation.
18
Spaltenbezeichnung
Erklärung
IBMSNAP INTENTSEQ
Folgenummer eines Protokollsatzes zur eindeutigen Kennzeichnung einer Änderungsoperation.
IBMSNAP OPERATION
Enthält den Typ der Änderungsoperation. I steht hierbei
für INSERT, U für UPDATE und D für DELETE.
IBMSNAP COMMITSEQ
Folgenummer des Commit-Log-Records.
IBMSNAP LOGMARKER
Zeitpunkt des Commit der Änderungsoperation auf dem
Primärsystem.
Schlüsselspalten
Spalten, die eine Schlüssel- bzw. Unique-Eigenschaft aufweisen und deren Einträge repliziert werden sollen.
Spalten
Sonstige Spalten, deren Einträge repliziert werden sollen
und keine Schlüssel- bzw. Unique-Eigenschaft besitzen.
Berechnungsspalten
Spalten,
deren
Einträge
Berechnungsausdrücken
ergeben
sich
aus
(beispielsweise
SQLSUM
oder MAX).
IBMSNAP AUTHID
Optionale Spalte, die die der Änderungsoperation zugeordneten Berechtigungs-ID enthält. Sie gibt die Kennung
des Benutzers an, durch den die Änderungsoperation angewiesen wurde.
IBMSNAP AUTHTKN
Optionale Spalte, die das der Änderungsoperation zugeordnete Berechtigungstoken enthält. Das Berechtigungstoken entspricht dem Namen des Jobs, durch den die Änderungstransaktion hervorgerufen wurde.
IBMSNAP REJ CODE
Optionale Spalte, die eine Codenummer enthält, die Aufschluss im Falle eines Auftretens eines Koniktes bei der
Replikation gibt. Der Code kann die ganzzahligen Werte
0 und 1 annehmen.
IBMSNAP UOWID
Optionale Spalte, die die Kennung der UoW (Unit-ofWork) enthält.
Tabelle 5: Aufbau des Zieleinheitstypes CCD-Tabelle
Hiermit ist gemeint, dass Datenänderungen auf allen zur Replikationsumgebung zugehörigen Systemen erfolgen und diese auch repliziert werden können, sofern es sich bei den
eigentlichen Zieleinheiten um eben genau diese Typen handelt. Diese Möglichkeit birgt
logischerweise auch Koniktpotenzial. Ist dies der Fall, das heiÿt, werden auf zwei unterschiedlichen Systemen gleichzeitig identische Daten geändert, so werden genau diejenigen
Daten repliziert, die vom Primärsystem stammen. Das bedeutet, dass im Koniktzustand
immer die Daten Priorität haben, die auf dem Primärsystem geändert wurden. Den Aufbau
des Zieleinheitstypes zeigt die
Tabelle 6.
Spaltenbezeichnung Erklärung
Schlüsselspalten
Spalten, die eine Schlüssel- bzw. Unique-Eigenschaft aufweisen
und deren Einträge repliziert werden sollen.
Spalten
Sonstige Spalten, deren Einträge repliziert werden sollen und
keine Schlüssel- bzw. Unique-Eigenschaft besitzen.
Tabelle 6: Aufbau des Zieleinheitstypes Replikat
19
5.1.5 Replikationsarten
Neben dem Typ der Zieleinheit ist bei der Erstellung der Subskriptionsgruppe auch die
Art der Replikation anzugeben. Hierbei gibt es die folgenden zwei Optionen:
•
Replikation mit Änderungserfassung oder
•
Replikation mit vollständiger Aktualisierung.
Unter der Option
Replikation mit Änderungserfassung
versteht man die Replizierung nur
genau derjenigen Daten, die auch tatsächlich auf der Quelleinheit geändert worden. Dies
erfolgt durch das sequenzielle Auslesen der Zwischenspeichertabelle mittels des ApplyProgramms. Wird ein entsprechender Eintrag gefunden, startet das Apply-Programm seine
bereits beschriebenen Folgeaktivitäten. Bei der Replikation mit Änderungserfassung unterscheidet man zudem noch zwei Untertypen: die Änderungserfassung bei registrierten Spalten und die Änderungserfassung bei beliebigen Spalten. Der Unterschied zwischen diesen
zwei Untertypen liegt darin, dass bei der
Änderungserfassung bei registrierten Spalten
nur
genau dann Daten repliziert werden, wenn Änderungen an Daten erfolgten, die sich in der
registrierten Spalte benden. Hingegen werden bei der
Spalte
Änderungserfassung bei beliebiger
alle Daten repliziert, die geändert wurden, unabhängig davon, ob die entsprechende
Spalte registriert wurde oder nicht.
Bei der Option
Replikation mit vollständiger Aktualisierung
werden die Zieleinheiten zu
einem bestimmten Zeitpunkt mit den Daten der Quelleinheit gefüllt, unabhängig davon,
ob jedes einzelne Element der Datenmenge geändert wurde oder nicht. Bei dieser Option
entsteht logischerweise relativ schnell eine groÿe Menge an Daten, die unnötig versendet
wird. Der Einsatz dieser Option sollte daher gründlich überlegt werden.
Allgemein ist anzumerken, dass die Erstbefüllung der Zieleinheit unabhängig von der gewählten Option gleich abläuft. Hierbei wird die Zieleinheit mit den zu replizierenden Daten
aus der Quelleinheit befüllt. Es ist zudem möglich, explizit angegeben, durch welches Programm die Befüllung der Zieleinheit vorgenommen werden soll.
5.1.6 Zwischenspeichertabellen
Ähnlich den Subskriptionsgruppen nehmen die Zwischenspeichertabellen eine wichtige Rolle innerhalb einer SQL-Replikationsumgebung ein. Über die auch als
CD-Tabellen bezeich-
neten Zwischenspeichertabellen werden die Änderungen an den zu replizierenden Daten
transferiert. Der Begri der CD-Tabelle steht dabei für Change-Data Tables. Zwischenspeichertabellen existieren für jede Paarung aus einer Quell- und einer Zieleinheit. In diesen
werden die folgenden Informationen abgelegt:
•
Protokollfolgenummer der erfassten Transaktion,
•
Protokollfolgenummer des Commit-Log-Records,
•
Transaktionstyp (UPDATE, INSERT oder DELETE),
•
after image -Wert,
•
before image -Wert.
20
5.1.7 Replikationsbereich
Wie bereits im ersten Unterabschnitt zur SQL-Replikation erwähnt, arbeitet diese auf einer
feineren Granulatsebene als beispielsweise HADR. Das macht sich vor allem im Replikationsbereich bemerkbar. Während bei HADR fast der gesamte Bereich der eigentlichen
Datenbank repliziert werden kann, ist die Replizierung bei der SQL-Replikation auf Tabellen und teilweise auch Views beschränkt. Diese Einschränkung ist gleichzeitig aber auch
ein Vorteil. So können auch nur vereinzelte, bestimmte Spalten oder eine gewisse Anzahl
an Zeilen, die sich in einem bestimmten Zeilenbereich benden, repliziert werden. Dadurch
können Daten, die entweder nie geändert werden oder aus einem beliebigen Grund nicht
repliziert werden müssen, bei der Replikation auÿer Acht gelassen werden. Das spart zum
einen Verkehrsaufkommen und zum anderen Speicherplatz auf dem Sekundärsystem.
5.2 Q-Replikation
IBM DB2 LUW ist die sogenannte QReplikation [IBM05]. Das Q im Namen steht hierbei für Queue und bedeutet im Deutschen
so viel wie Warteschlange. Aus dem Namen des Datenverteilungsverfahrens lässt sich also
Ein weiteres Replikationsverfahren unter dem DBMS
bereits erkennen, wo genau der Unterschied im Vergleich zur bereits vorgestellten SQLReplikation liegt.
5.2.1 Architektur einer Q-Replikationsumgebung
Die Architektur einer Q-Replikationsumgebung unterscheidet sich nur gering von der einer SQL-Replikation. Auf den Primär- und Sekundärystemen benden sich mit besonderen Rechten ausgestattete Anwendungsprogramme, die hier als
Q-Capture
und
Q-Apply
bezeichnet werden. Zudem ist jedem dieser Anwendungsprogramme wieder eine Gruppe
von Steuertabellen zugeordnet. Der wesentliche Unterschied zwischen einer Q- und einer
SQL-Replikationsumgebung liegt in der bei der SQL-Replikation bezeichneten Zwischenspeichertabelle. Bei der Q-Replikation ist diese durch ein sogenanntes
tem
Warteschlangensys-
ersetzt. Die Funktionalität des Warteschlangensystems wird sinnvollerweise durch das
IBM-eigene Programm
WebSphere MQ
geliefert. WebSphere MQ zählt hierbei zu den so-
genannten nachrichtenorientierten Zwischenanwendungen (auch MOM, Message Oriented
Middleware, genannt). Die Aufgaben derartiger Zwischenanwendungen liegen im Aufbau
und der Aufrechterhaltung von Kommunikationskanälen zwischen den verschiedenen mit
der Zwischenanwendung verbundenen Programmen sowie der Verwaltung und Transferierung von Nachrichten, den sogenannten
Messages. Es wird hierbei zwischen drei verschie-
denen Kommunikationstypen unterschieden:
•
Message Passing,
•
Publish and Subscribe und
•
Message Queueing.
Unter
Message Passing
versteht man eine direkte Kommunikation der Programme, die
über die nachrichtenorientierte Zwischenanwendung miteinander in Verbindung stehen.
Der Kommunikationstyp
Publish and Subscribe bezeichnet das Versenden von NachrichAbonnenten versteht man hierbei Zielprogramme,
ten an sogenannte Abonnenten. Unter
21
die über die Zwischenanwendung die Empfangsbereitschaft von Nachrichten des Herausgebers der Nachricht angemeldet haben. Beim
Message Queueing
werden die Nachrichten
nicht direkt zwischen den Programmen versendet, sondern gelangen nach dem Absenden
in ein Warteschlangensystem, von wo aus sie dann durch das Zielprogramm abgerufen und
verarbeitet werden. Dieser Typ kommt bei der Q-Replikation zum Einsatz.
Im Wesentlichen beinhaltet das Warteschlangensystem mindestens zwei Warteschlangenmanager, deren Aufgabe unter anderem in der Pege und Verwaltung der folgenden Komponenten liegt:
•
Sendewarteschlange,
•
Verwaltungswarteschlange,
•
Empfangswarteschlange und
•
Übertragungswarteschlange.
Auf die einzelnen Aufgaben der verschiedenen Komponenten wird im
Abschnitt 5.2.2 nä-
her eingegangen. Auf jedem zur Q-Replikationsumgebung zugehörigen System muss mindestens ein Warteschlangenmanager installiert und funktionsfähig sein. Die folgende
bildung 7
Ab-
stellt eine Q-Replikationsumgebung schematisch dar (vgl. SQL-Replikations-
umgebung in
Abbildung 4).
Abbildung 7: Architektur einer Q-Replikationsumgebung
Die bereits in der SQL-Replikationsumgebung vorhandenen Subskriptionsgruppen sind
auch bei der Q-Replikation ein elementarer Bestandteil der Replikationsumgebung. Sie
werden in diesem Kontext als
Q-Subskriptionen
bezeichnet. Analog zur SQL-Replikation
erfolgt in diesen die Denierung und Zuordnung der Quell- und Zieleinheiten sowie die
Festlegung der für dieses Paar zuständigen Q-Capture- und Q-Apply-Programme sowie
den zugehörigen Warteschlangenmanagern.
5.2.2 Funktionsweise
Die Funktionsweise der Q-Replikation unterscheidet sich nur in geringem Maÿe von der
Funktionsweise der SQL-Replikation. Aus diesem Grund widmet sich dieser Abschnitt nur
22
den elementaren Unterschieden und verzichtet auf eine Wiederholung der bereits im Detail
in
Abschnitt 5.1.2 geschilderten Funktionsweise der SQL-Replikation.
Wurde bei der SQL-Replikation eine Änderung an einer registrierten Quelleinheit durch
das sequenzielle Auslesen des Recovery-Protokolls erkannt, erfolgte durch das CaptureProgramm die Ablegung des
after image -Wertes in den Hauptspeicher des Primärsystems.
Wurde die jeweilige Transaktion gemäÿ Log-Eintrag erfolgreich abgeschlossen, legte daraufhin das Capture-Programm den
after image -Wert in die Zwischenspeichertabelle ab.
after image -Wertes hingegen nicht in eine
Bei der Q-Replikation erfolgt die Ablage des
Zwischenspeichertabelle, sondern stattdessen in eine Sendewarteschlange. Hierbei wird der
Wert nicht als solcher abgelegt, sondern vor der Übertragung an die Sendewarteschlange
in eine sogenannte
Nachricht
umgewandelt. Der Prozess der Erfassung einer Transaktion
an einer registrierten Quelleinheit ist in der
Abbildung 8 zusammenfassend dargestellt.
Abbildung 8: Prozess der Erfassung einer Transaktion auf einer registrierten Quelleinheit.
(1) Die Transaktion wird ausgeführt. (2) Die Transaktion wird im Protokoll verzeichnet.
(3) Das Q-Capture-Programm erkennt die Transaktion auf der registrierten Quelleinheit.
(4) Die
after-image -Werte werden durch das Q-Capture-Programm in den Hauptspeicher
gelegt. (5) Die Transaktion wurde laut Log-Eintrag erfolgreich abgeschlossen das
Q-Capture-Programm entnimmt die Werte aus dem Hauptspeicher. (6) Die Transaktion
wurde nicht erfolgreich abgeschlossen die Werte werden gelöscht. (7) Die Transaktion
wurde erfolgreich abgeschlossen die Werte werden an den Wandler übergeben. Der
Wandler wandelt die Informationen in Nachrichten um. (8) Die Nachrichten werden an
die Sendewarteschlange geliefert.
Die erstellten Nachrichten werden daraufhin durch die Übertragungswarteschlange an die
Empfangswarteschlange weitergeleitet, von wo aus die Nachrichten dann durch das entsprechend für das Quell- und Zieleinheitspaar zugeordnete Q-Apply-Programm abgerufen und
verarbeitet werden können. Derartige Nachrichten im Sinne von WebSphere MQ bestehen
hierbei aus
•
Nachrichtenattributen und
•
Nachrichtendaten.
Nachrichtenattribute weisen der Nachricht bestimmte Merkmale zu. Beispielsweise hat jede
Nachricht eine eindeutige Nachrichten-ID, die durch WebSphere MQ erzeugt und zugeordnet wird. Desweiteren zählt eine sogenannte
Korrelations-ID
zu den Attributen. Hierunter
versteht man einen Schlüssel, der für die Zuordnung einer oder mehrerer Antwortnachrichten zu der abgesendeten Anforderungsnachricht verwendet wird.
23
Nachrichtendaten verstecken sich im Anwendungsfall der Q-Repligenau die after image -Werte, die bei der SQL-Replikation in die
Hinter der Bezeichnung
kation unter anderem
Zwischenspeichertabellen abgelegt wurden.
Die Verwaltung und Übertragung der Nachrichten wird durch den Warteschlangenmanager übernommen (siehe dazu auch
Abbildung 7).
Diejenigen Nachrichten, die bereits
erfolgreich an die Sendewarteschlange übertragen wurden, sind auch im Falle eines Ausfalls des Primärsystems existent. Dem Warteschlangenmanager sind eigene Systemtabellen
zugewiesen. Er verwaltet zudem eigene Protokolldateien.
Wie bereits angedeutet, erfolgt nach der Ablegung der Nachrichten in die Sendewarteschlange die Übertragung dieser über die Übertragungswarteschlange an die Empfangswarteschlange. Das entsprechende Q-Apply-Programm auf dem Zielsystem ruft die in der
Empfangswarteschlange vorhandenen Nachrichten ab, wandelt diese in das SQL-Format um
und wendet diese auf den Zieleinheiten an. Es ist an dieser Stelle durchaus möglich, dass
ein Q-Apply-Programm mehrere Nachrichten parallel verarbeiten kann, da die Q-ApplyProgramme multithread-fähig sind. Dies ist natürlich nur möglich, wenn keine Abhängigkeiten zwischen den verschiedenen Nachrichten und damit den verschiedenen Transaktionen
bestehen. Sollte dies dennoch nicht der Fall sein, werden die Transaktionen sequenziell
verarbeitet. Die nachfolgende
Abbildung 9 zeigt den Prozess der Datenreplizierung auf
der Seite des Sekundärsystems.
Abbildung 9: Prozess der Verarbeitung einer Transaktion auf einer registrierten Zieleinheit.
(1) (2) Die Nachricht wird an die Empfangswarteschlange geliefert. (3) Das Q-CaptureProgramm ruft die Nachricht aus der Empfangswarteschlange ab. (4) Die Nachricht wird
durch den Wandler in das SQL-Format transformiert. (5) Die umgewandelte Nachricht
wird auf der registrierten Zieleinheit angewendet.
Über die bereits angesprochene Verwaltungswarteschlange werden Informationen durch das
Q-Apply-Programm auf dem Sekundärsystem an das jeweilige Q-Capture-Programm auf
dem Primärsystem gesendet. Die folgende
Abbildung 10 gibt einen grundlegenden Über-
blick über die Kommunikation zwischen dem Primärsystem, den Warteschlangenmanagern
und dem Sekundärsystem.
Abbildung 10 macht deutlich, dass die Übertragungswarteschlange die Elementarkomponente für die Verbindung des Primär- mit dem Sekundärsystem darstellt. Es wird zudem
ersichtlich, dass das Warteschlangensystem einen entscheidenden Faktor in Bezug auf die
Gesamtperformance der Replikationsumgebung darstellt, da jede zu replizierende Änderung auf den Quelleinheiten auf dem Sekundärsystem den Weg über die verschiedenen
Komponenten des Warteschlangensystems zu gehen hat.
24
Abbildung 10: Grundlegender Überblick über die Kommunikation mit den Warteschlangenmanagern.
5.2.3 Replikationstypen
Bei der Konstruktion einer Q-Replikationsumgebung und der daran anschlieÿenden Erstellung der Q-Subskriptionen kann zwischen drei verschiedenen Replikationstypen gewählt
werden:
•
Unidirektionale Replikation,
•
Bidirektionale Replikation sowie
•
Peer-to-peer Replikation.
Der
unidirektionale Replikationstyp
sorgt für die Replizierung von Transaktionen jeweils
nur in eine Datenussrichtung. Das bedeutet, dass Transaktionen auf Daten auf einem
Primärsystem immer nur in Richtung der Sekundärsysteme repliziert werden können und
nicht umgekehrt. Zieleinheiten werden somit nur durch das Q-Apply-Programm verändert.
Dieser Replikationstyp ermöglicht die gesonderte Replizierung bestimmter Spalten oder
eines bestimmten Zeilenbereiches. Zudem ist es möglich, Daten aus registrierten Quelleinheiten zur Transformation an gespeicherte Prozeduren zu übergeben, bevor diese durch
Umwandlung in eine Nachricht an die Sendewarteschlange geliefert werden. Zwischen dem
Primär- und dem Sekundärsystem existiert mindestens ein Warteschlangensystem. Da die
Datenussrichtung bei der unidirektionalen Replikation von der Quell- zur Zieleinheit verläuft, bedarf es pro Quell- und Zieleinheitspaar nur eine Q-Subskription.
Beim
bidirektionalen Replikationstyp ist die Replizierung in beide Richtungen erlaubt. Kon-
kret bedeutet dies, dass Transaktionen sowohl auf der registrierten Quelleinheit als auch
auf der registrierten Zieleinheit auf die entsprechend zugeordnete Gegeneinheit repliziert
werden können. Im Grunde ist die eigentliche Quelleinheit gleichzeitig Zieleinheit und die
eigentliche Zieleinheit gleichzeitig auch Quelleinheit. Hierbei gilt es bestimmte Regeln zu
beachten, von denen im Folgenden einige genannt sind:
1. Die Quell- und Zieleinheiten müssen priorisiert werden, damit im Koniktfall, d.h.
wenn bei einem Quell- und Zieleinheitspaar jeweils der identische Datensatz geändert
25
wurde und repliziert werden soll, eine Einheit vorgezogen und der Konikt behoben
werden kann.
2. Die Quell- und Zieleinheiten müssen dieselbe Anzahl von Spalten und Zeilen besitzen.
3. Die Spaltennamen der Quell- und Zieleinheiten müssen identisch sein. Zudem müssen
die Datentypen übereinstimmen.
4. Die Namen der Quell- und Zieleinheiten können wie auch die Schemabezeichnungen
unterschiedlich sein.
Da die Replikation in zwei Richtungen erfolgen kann, bedarf es für jede Datenussrichtung
zwischen einer Quell- und einer Zieleinheit jeweils eines zugeordneten Warteschlangensystems. Auch die Q-Subskriptionen müssen jeweils beide Datenussrichtungen abdecken; es
gibt also für jedes Quell- und Zieleinheitspaar zwei Q-Subskriptionen.
Eine Erweiterung des bidirektionalen Replikationstypes stellt der
onstyp
peer-to-peer Replikati-
dar. Bei diesem werden alle erfolgreich abgeschlossenen Transaktionen auf einem
Replikationsteilnehmer an alle anderen Replikationsteilnehmer über die Warteschlangensysteme weitergeleitet. Es gelten zudem die gleichen Regeln wie bei der bidirektionalen
Replikation. Zusätzlich werden die zu replizierenden Tabellen um zwei Spalten erweitert.
Diese sind eine Spalte zur Speicherung einer Zeitmarke und eine Spalte, in der eine nummerische Zahl abgelegt werden kann. Die Spalte zur Speicherung der Zeitmarke ist vor
allem in Koniktsituationen von Bedeutung. Dann wird anhand dieser Spalte der aktuellste Eintrag ermittelt und damit der Konikt aufgelöst. Die zwei zusätzlichen Spalten
werden durch Trigger verwaltet, die wiederum bei der Erstellung der Q-Subskriptionen
angelegt werden.
Die Transaktionen werden auf den Replikationsteilnehmern in asynchroner Verfahrensweise
repliziert. Das bedeutet, dass der Datenbestand auf den unterschiedlichen Replikationsteilnehmern möglicherweise erst dann nahezu identisch ist, wenn keine weiteren Transaktionen
auf den Replikationsteilnehmern erfolgreich ausgeführt werden.
Die Anzahl der Q-Subskriptionen erhöht sich im Vergleich zum bidirektionalen Replikationstyp um den Faktor der Anzahl der Replikationsteilnehmer. Das bedeutet beispielsweise bei einer Replikationsumgebung mit drei Teilnehmern, dass letztendlich sechs QSubskriptionen angelegt werden müssen. Ähnlich ist es bei der Anzahl der Warteschlangensysteme: Zwischen jeder Paarung und in jede Datenussrichtung bedarf es der Zuordnung
je eines Warteschlangensystems.
5.2.4 Replikationsbereich
Grundsätzlich unterscheidet sich der Replikationsbereich bei der Q-Replikation nur in
einem Punkt von dem der SQL-Replikation: dem der Sichten. Während bei der SQLReplikation die Replizierung von Sichten möglich ist, ist dies bei der Q-Replikation nicht
der Fall. Darüber hinaus ist der Replikationsbereich abhängig vom gewählten Replikationstyp. So können bei der unidirektionalen Replikation Tabellen wie auch einzelne Spalten
oder Zeilen repliziert werden. Die Auswahl bestimmter Spalten über Vergleichselemente ist
somit möglich. Beim bidirektionalen Replikationstyp ist die Replizierung bestimmter Zeilen durch Vergleichselemente nicht möglich. Bei der Replikation von bestimmten Spalten
oder ganzer Tabellen gibt es dagegen keine Einschränkungen. Gleiches gilt auch für den
peer-to-peer Replikationstyp.
26
5.3 High Availability Disaster Recovery (HADR)
High Availability Disaster Recovery (HADR)
ist ein IBM-eigenes softwarebasiertes Repli-
kationsverfahren zur Verbesserung der Hochverfügbarkeit eines DBMS [IBM07a]. Es ist
bereits ab der
Express Edition (EE)
von
Nutzung von HADR in der kostenfreien
IBM DB2 LUW im Lizenzpaket enthalten. Die
Express-C Edition ist auch möglich, allerdings
bedarf es hier erst der Lizenzierung des Produktpaketes.
5.3.1 Architektur und Funktionsweise
Die Kernaufgabe von HADR liegt in der kontinuierlichen Replizierung von neuen oder
veränderten Informationen von einem Primär- auf ein Sekundärsystem. Durch die eigens
Automatic Client Reroute ), auf die im Abschnitt 5.3.3
mitgelieferte ACR-Funktionalität (
näher eingegangen wird, ist es zudem möglich, bei einem Ausfall des Primärsystems die
clientseitigen Anfragen an das bisherige Sekundärsystem umzuleiten, ohne dass der Benutzer davon Kenntnis nimmt. Das Sekundärsystem wird zusätzlich in die Rolle des Primärsystems gesetzt, was wiederum zur Sicherstellung einer hohen Verfügbarkeit führt. Die
Funktionalität des automatisierten Umschaltens muss in der hier betrachteten Version jedoch durch externe Softwarelösungen übernommen werden. Im Folgenden ist mit einem
Takeover ein manuelles Umschalten gemeint. Nach der Behebung des Fehlers auf dem
Primärsystem ist es möglich, die ursprüngliche Rollenverteilung zwischen den Systemen
wiederherzustellen. Allgemein lässt sich zu dieser Konstellation anmerken, dass Anfragen
nur an das jeweilige aktuelle Primärsystem möglich sind. Ein direkter Zugri seitens der
Anwendungen auf das Sekundärsystem ist somit ausgeschlossen.
Die hinter dem HADR-System liegende Architektur als solche zeichnet sich durch ihre klare Strukturiertheit aus. Als HADR-System sei hierbei das Gesamtkonstrukt bestehend aus
einem Primär- und Sekundärsystem mit den entsprechenden Datenbanken und der dazugehörigen ACR-Funktionalität bezeichnet. Auf den beiden Systemen bendet sich jeweils
mindestens eine Instanz des DBMS
IBM DB2 LUW.
Es sei angemerkt, dass die HADR-
Funktionalität auf der Ebene der Datenbank angesiedelt ist. Das bedeutet, dass in einer
Instanz des DBMS mehrere Datenbanken angelegt sein können, von denen entweder eine oder mehrere mittels HADR repliziert werden. Die Grundlage der HADR-Architektur
stellt die Transferierung von sogenannten
Logical Log Records
von einem Primär- auf ein
Sekundärsystem über eine zu diesem Zwecke aufgebaute TCP/IP-Verbindung dar. Diese
ermöglicht es zudem, dass die beiden Systeme an geographisch unterschiedlichen Lokationen stationiert werden können, was wiederum eine wichtige Anforderung an Hochverfügbarkeitssysteme, insbesondere Disaster Recovery betreend, darstellt. Eine schematische
Darstellung einer HADR-Replikationsumgebung zeigt die
Abbildung 11.
Aufgrund der hohen Bedeutung der Logical Log Records in der HADR-Architektur sollen diese im Folgenden näher erklärt werden. Unter einem Logical Log Record versteht
man sinngemäÿ einen durch einen
DB2 -Agenten,
einen DBMS-eigenen Prozess, erzeug-
ten Protokolleintrag. Protokolleinträge enthalten wichtige Informationen über die durchgeführte Transaktion und dienen unter anderem zur Einhaltung der geforderten
ACID -
Atomicity (Atomarität), Consistency
(Konsistenz), Isolation und Durability (Dauerhaftigkeit). Die nachfolgende Tabelle 7 erEigenschaften. ACID steht dabei als Abkürzung für
klärt die ACID-Eigenschaften gemäÿ [HSS07].
Protokolleinträge werden genau dann generiert, wenn Transaktionen Änderungen an Tabelleneinträgen vornehmen. Wenn beispielsweise ein Anwendungsprogramm einen bestimmten
27
Abbildung 11: Architektur einer HADR-Replikationsumgebung
Eigenschaft
Erklärung
Atomarität
Eine Transaktion wird entweder ganz oder gar nicht ausgeführt. Das
bedeutet, dass Transaktionen keine Zwischenzustände nach einem
Transaktionsabbruch hinterlassen können.
Konsistenz
Nach der erfolgreichen Ausführung einer Transaktion muss sich die
Datenbank in einem konsistenten, zulässigen Zustand benden. Transaktionen müssen demnach also alle Integritätsbedingungen erfüllen.
Isolation
Transaktionen werden isoliert ausgeführt. Das bedeutet, dass parallel
ausgeführte Transaktionen sich nicht gegenseitig beeinussen können.
Dauerhaftigkeit
Die Änderung, die durch eine erfolgreich ausgeführte Transaktion herbeigeführt wurde, gilt dauerhaft.
Tabelle 7: Erklärung der ACID-Eigenschaften
Datensatz aktualisieren möchte (etwa in Form der Aktualisierung einer Tabellenspalte bei
einem spezischen Eintrag), so wird die entsprechende Datenseite von der Festplatte in
den Buerpool geladen, falls sie nicht bereits in diesem enthalten ist. Der
DB2 -Agent
liest die entsprechende Seite aus dem Buerpool, ändert die entsprechende Seite und legt
diese zurück in den Buerpool. Durch diese Änderung der Seite wird nun ein Protokoll-
Logical Log Puer abgelegt. Dieser Protokolleintrag wird im
Fortgang durch den DBMS-eigenen Prozess db2loggw in das Logical Log File (Protokolldaeintrag erzeugt und in den
tei) geschrieben. Erst nachdem dies erfolgt ist, kann die modizierte Datenseite aus dem
Buerpool zurück auf die Festplatte geschrieben werden, so dass im Fehlerfall durch verschiedene Recovery-Verfahren die ACID-Eigenschaften sichergestellt werden können. Diese
Vorgehensweise wird auch als
Write Ahead Logging (WAL)
bezeichnet.
Die Funktionsweise von HADR lässt sich in verschiedene Phasen einteilen. Diese sind im
Einzelnen die
Phase der Initialisierung,
die
28
Catch-Up-Phase,
die
Peer-State-Phase,
die
Failure-Phase,
die
Failover-Phase,
die
Der Gesamtzyklus der Phasen ist in
Phase der Reintegration
und die
Failback-Phase.
Abbildung 12 schematisch dargestellt.
Nach der Konguration von HADR auf dem Primär- und Sekundärsystem ist das HADRSystem genau dann gestartet, wenn die erste Verbindung zwischen den Datenbanken des
Primär- und Sekundärsystems aufgebaut werden konnte, welches gleichzeitig die Hauptaufgabe der
db2hadrp
Initialisierungsphase darstellt. Fortan spielen die zwei DBMS-eigenen Prozesse
und
db2hadrs
eine entscheidende Rolle, da sie sich in Bezug auf die Abwicklung
des Datentransfers zwischen den beteiligten Datenbanken und der Bearbeitung von Systemmeldungen verantwortlich zeichnen.
Abbildung 12: Zyklus der verschiedenen Phasen des HADR-Verfahrens
Bei der Aktivierung der Datenbank auf dem Primärsystem wird der DBMS-eigene Prozess
db2hadrp
erzeugt. Dieser liest nun die Kongurationsparameter ein und önet einen Port,
um eine Anfrage für einen Verbindungsaufbau durch das Sekundärsystem entgegennehmen
zu können. Während dieser Aufbauphase ist keine Verbindung durch einen Client an das
Primärsystem erlaubt. Das Primärsystem wartet dabei solange auf den Versuch eines Verbindungsaufbaus, bis die in dem Kongurationsparameter
HADR TIMEOUT
festgelegte
Zeit abgelaufen ist. Konnte hierbei keine Verbindung mit einem Sekundärsystem aufgebaut
werden, wird die Datenbankaktivierung abgebrochen. Dieser Umstand kann umgangen werden, indem das HADR-System mit der Erweiterungsklausel
FORCE
gestartet wird. Das
Primärsystem wartet in diesem Falle dann nicht mehr auf den erfolgreichen Aufbau einer
Verbindung mit einem Sekundärsystem, sondern startet sofort mit dem Betrieb. Gleichzeitig wird aber ein sogenannter
Listener
initialisiert, dessen Aufgabe darin besteht, auf
dem vorgesehenen Port auf eine Verbindungsanfrage des Sekundärsystems zu warten und
diese gegebenenfalls entgegenzunehmen. Das Sekundärsystem kann sich dadurch auch im
laufenden Betrieb des Primärsystems nachträglich in dieses einklinken. Sobald der Verbindungsaufbau erfolgreich war, startet das HADR-System seine Funktionalität. Es sei
hierbei darauf hingewiesen, dass die erwähnte Erweiterungsklausel FORCE Nachteile mit
sich bringt, die im
Abschnitt 6.2 erläutert werden.
Wurde die Verbindung zwischen den Datenbanken auf dem Primär- und Sekundärsystem
erfolgreich aufgebaut, werden daraufhin der Status und die Funktionalität des HADRSystems überprüft. Dazu werden Mitteilungen vom Primär- zum Sekundärsystem über
die aufgebaute TCP/IP-Verbindung verschickt. Das Sekundärsystem registriert diese und
sendet sie an das Primärsystem zurück. Dieses Verfahren wird bei
IBM
auch als
heartbeat -
Mechanismus bezeichnet, da die Mitteilungen metaphorisch als Herzschläge des Systems
29
angesehen werden können. Umgangssprachlich ist dieses Verfahren auch als
handshake -
Verfahren bekannt.
Auf die eben beschriebene Initialisierungsphase folgt die sogenannte
(siehe dazu Schritt (1) in
Abbildung 12).
Catch-Up-Phase
In dieser erfolgt der Abgleich der Datenbe-
stände beider Systeme. Damit ist gemeint, dass das Primärsystem die notwendigen Protokolleinträge an das Sekundärsystem sendet, sodass beide Datenbanken einen identischen
Datenbestand aufweisen. Das Lesen der Protokolleinträge auf dem Primärsystem wird da-
db2lfr übernommen, welcher zudem die Protokolleindb2hadrp weiterleitet, die von dieser dann wiederum
db2hadrs auf dem Sekundärsystem transferiert werden.
bei von dem DBMS-eigenen Prozess
träge an den DBMS-eigenen Prozess
an den DBMS-eigenen Prozess
Das Übermitteln der Protokolleinträge erfolgt genau dann, wenn auf dem Primärsystem
die Protokolleinträge in die Protokolldatei geschrieben werden. Der DBMS-eigene Prozess
db2hadrs
sorgt schlieÿlich dafür, dass die übermittelten Informationen auf dem Sekundär-
system eingespielt werden. Der Vorgang der Transferierung der Protokolleinträge wird auch
als
Log Shipping
bezeichnet.
Sobald die Transferierung der Protokolleinträge abgeschlossen ist und die beiden Systeme
somit einen identischen Datenbestand aufweisen, geht das HADR-System in die nächste
Phase, die
Prozess
Peer-State-Phase, über (Schritt (2)). In dieser wird zuerst der DBMS-eigene
db2lfr
beendet und anschlieÿend der DBMS-eigene Prozess
db2loggw
gestartet. Die
Hauptaufgabe dieses Prozesses besteht darin, die Protokolleinträge in die Protokolldateien
zu schreiben. Im Rahmen der HADR-Funktionalität erhält dieser Prozess eine Zusatzaufgabe, die vorsieht, direkt nach dem Schreiben der Protokolleinträge in die Protokolldatei
db2hadrp zu senden mit einem Hinweis darDb2loggw wartet anschlieÿend
solange, bis es eine Rückmeldung über den Transferstatus von db2hadrp erhält. Bis es zu
dieser Rückmeldung kommt, schickt der DBMS-eigene Prozess db2hadrp die entsprecheneine Mitteilung an den DBMS-eigenen Prozess
auf, wo sich die genannten Protokolleinträge genau benden.
den Einträge an das Sekundärsystem. Ob die Transferierung erfolgreich war oder nicht, ist
dann in der bereits angesprochenen Rückmeldung an
Die Tatsache, dass
db2loggw
db2loggw
enthalten.
solange wartet, bis es eine Rückmeldung von
db2hadrp erhält,
ist von enormer Bedeutung. Denn dies kann dazu führen, dass das Primärsystem neue
Einfüge- bzw. Änderungsoperationen vorübergehend blockiert. Die verschiedenen Synchronisationsmodi des HADR-Systems lassen jedoch auch andere Abhängigkeitsregeln zu, sodass es nicht in jedem Falle zu Blockierungen kommen muss (siehe dazu auch
Abschnitt
Seit Beginn der Peer-State-Phase bendet sich das Sekundärsystem in einem
rollforward -
5.3.2).
Modus. Das bedeutet, dass das Sekundärsystem zum einen wie bereits erwähnt keine Anfragen seitens der Anwendungen auf dem Anwendungsserver entgegennehmen kann und
zum anderen, dass die vom Primärsystem empfangenen Protokolleinträge sofort eingearbeitet werden können. Dies wiederum führt dazu, dass sich das Sekundärsystem zu jedem
Zeitpunkt in einem einsatzbereiten Zustand mit identischem Datenbestand bendet. Die
Peer-State-Phase ist zudem eine andauernde Phase. Sie wird erst unterbrochen, wenn es zu
einem Ausfall des Primärsystems oder zu einem Verbindungsabbruch zwischen den beiden
Systemen kommt. Dieser Zeitpunkt wird durch die
Failure-Phase beschrieben (Schritt
(3)). Handelt es sich um einen geplanten Ausfall, springt das HADR-System sofort in
die
Failover-Phase über (Schritt (4)). Bei einem Ausfall des Primärsystems springt das
Failover-Phase über (Schritt (5)).
HADR-System ebenso in die
30
In dieser Phase kommt es zu dem sogenannten
Takeover. Hiermit ist die Änderung der Rol-
lenverteilung im HADR-System gemeint. Das eigentliche Sekundärsystem fungiert fortan
als Primärsystem, während das bisherige Primärsystem für die Fehlerbehebung zur Verfügung steht. In diesem Fall muss Sorge dafür getragen werden, dass das bisherige Primärsystem keine aktive Funktionalität innerhalb des HADR-Systems mehr hat, da es sonst zu
Konikten kommen kann, die durch das HADR-System nicht selber gelöst werden können.
Ist der
Takeover
erfolgreich abgeschlossen, kann das HADR-System bis auf Weiteres in
dieser Konstellation laufen. Es werden in diesem Zeitraum allerdings keine Replizierungsmaÿnahmen durchgeführt. Sobald das bisherige Primärsystem wieder in Stand gesetzt ist,
kann es entweder als Sekundärsystem fungieren oder aber wieder als Primärsystem eingesetzt werden. Hierfür muss das bisherige Primärsystem wieder in das HADR-System
integriert werden. Dieser Prozess wird als
Phase der Reintegration bezeichnet (Schritt
(6)). Im Falle, dass das bisherige Primärsystem auch wieder als Primärsystem eingesetzt
werden soll, wechselt das HADR-System nun in die
Failback-Phase (Schritt (7)), in wel-
cher die Wiederherstellung der bisherigen Rollenverteilung erfolgt. Danach setzt wiederum
die Catch-Up-Phase ein (Schritt (8)), wodurch sich der Zyklus schlieÿt und wieder die volle
HADR-Funktionalität gewährleistet ist.
5.3.2 Synchronisationsmodi
Die bereits im vorhergehenden Abschnitt angesprochene Problematik der Wartedauer des
DBMS-eigenen Prozesses
db2loggw
während der
Peer-State-Phase
zeigt die Bedeutung der
verschiedenen Synchronisationsmodi, die das HADR-System zur Verfügung stellt.
Man unterscheidet hierbei die folgenden drei verschiedene Synchronisationsmodi:
•
synchronous,
•
near-synchronous und
•
asynchronous.
Sie heben sich dadurch voneinander ab, in welcher Abhängigkeit die beiden DBMS-eigenen
Prozesse
db2loggw
und
db2hadrp
miteinander arbeiten und inwiefern das Gesamtsystem
gegenüber einem Datenverlust abgesichert ist.
Der
synchronous -Modus ist der strengste und sicherste. Der DBMS-eigene Prozess db2loggw
db2hadrp eine Rückmeldung über die erfolgreiche Verarbeitung
wartet hierbei solange, bis
der Protokolleinträge auf dem Sekundärsystem meldet. Erst dann erhält der DBMS-eigene
Prozess
db2loggw
die Erlaubnis, neue Transaktionen auf dem Primärsystem zu verarbeiten.
Das bedeutet, dass erst nach Eintreen der genannten Erlaubnis einem COMMIT für
weitere Transaktionen stattgegeben wird. Diese stringente Vorgehensweise sorgt für die
bestmöglichste Sicherheit vor einem Datenverlust bei einem Ausfall eines Teils des
HADR -
Systems, birgt jedoch in gleicher Weise auch Nachteile im Hinblick auf die Performance
des Gesamtsystems, da
db2loggw
eben erst dann fortfahren kann, wenn die angesprochene
Rückmeldung eingetroen ist.
Ein weiterer Modus trägt die Bezeichnung
near-synchronous. Dieser ist als Standard vordb2loggw die
gesehen. Es ist hierbei bereits ausreichend, wenn der DBMS-eigene Prozess
Rückmeldung erhält, dass die Protokolleinträge erfolgreich auf dem Sekundärsystem empfangen wurden. Der Nachteil dieses Modus liegt darin, dass nicht sichergestellt ist, dass
31
die gesendeten Protokolleinträge auch tatsächlich verarbeitet werden konnten, während
db2loggw
auf dem Primärsystem bereits neue Transaktionen verarbeiten kann. Es kann
in diesem Modus also zu einer Abweichung des Datenbestandes auf dem Sekundärsystem
kommen.
Der dritte Modus schlieÿlich wird als
asynchronous
bezeichnet. Es ist hier bereits aus-
reichend, wenn die Protokolleinträge in Richtung Sekundärsystem abgesendet wurden. Es
spielt also keine Rolle, ob die Protokolleinträge auch tatsächlich auf dem Sekundärsystem angekommen sind, geschweige denn erfolgreich verarbeitet werden konnten, während
db2loggw
auf dem Primärsystem bereits neue Transaktionen verarbeiten kann. Dieser Mo-
dus ermöglicht die beste Performance, da nicht auf eine Rückantwort des Sekundärsystems
gewartet werden muss, ist aber eben im Blick auf die Datensicherheit auch der schlechteste
von den drei betrachteten Modi. Wie auch bei dem
near-synchronous -Modus
kann es zu
Abweichungen im Datenbestand auf dem Sekundärsystem kommen.
Die folgende
Tabelle 8
stellt abschlieÿend einen Überblick über die drei verschiedenen
Synchronisationsmodi des
HADR -Systems dar.
Modus
Erfüllte Bedingung
synchronous
Protokolleinträge müssen auf dem
Sekundärsystem
Sicherheit Performance
+
Se-
o
o
abgesen-
+
erfolgreich
verar-
beitet sein.
near-synchronous
Protokolleinträge
müssen
das
kundärsystem erreicht haben.
asynchronous
Protokolleinträge
müssen
det sein.
Tabelle 8: Übersicht über die Synchronisationsmodi des HADR-Systems
IBM
empehlt die Nutzung des
synchronous -Modus nur dann, wenn sich die beiden Sys-
teme physisch innerhalb einer Umgebung benden, beispielsweise auf direkt verbundenen
Einheiten in einem Rack. Unter einem
Rack
versteht man in diesem Zusammenhang eine
Art Haltevorrichtung für Serversysteme, wie man sie in Rechenzentren vorndet. Betreibt
Local Area Network ), so wird der
near-synchronous -Modus empfohlen. Bei dem Einsatz in einem WAN (Wide Area Network )
empehlt IBM die Verwendung des asynchronous -Modus.
man das Primär- und Sekundärsystem über ein LAN (
5.3.3 Automatic Client Reroute (ACR)
Automatic
Client Reroute (ACR). Im Falle eines Ausfalls der Verbindung zwischen dem DB2 -Client
Ein wichtiger Bestandteil des HADR-Systems ist die DB2-eigene Funktionalität
auf der einen Seite und dem Primärsystem auf der anderen Seite sorgt ACR dafür, dass die
DB2 -Client auf das bereitstehende Sekundärsystem umgeleitet werden, ohne
DB2 -Komponenten
kombinierbar, unter anderem mit dem Verfahren der SQL-Replikation, der Tivoli System
Automation (TSA) oder aber eben mit HADR. Die Abbildung 13 zeigt das Wirkungsfeld
Anfragen des
dass es eines manuellen Eingris bedarf. ACR ist mit verschiedenen
von ACR.
Damit ACR überhaupt nutzbar ist, bedarf es der Eintragung einer alternativen Datenbank,
die logischerweise auf einem Sekundärsystem liegt, in den zuständigen Kongurationsparameter der Datenbank auf dem Primärsystem. Der entsprechende Befehl ist dem
1 zu entnehmen.
32
Listing
Abbildung 13: Automatic Client Reroute
Listing 1: Sekundärsystem eintragen
db2
update
alternate
server
for
d a t a b a s e DATABASE
using
hostname
HOSTNAME p o r t PORTNUMBER
Die Funktionsweise von ACR gliedert sich in verschiedene Teilschritte, die im Zusammenwirken mit dem HADR-System durchlaufen werden. Nachdem die alternative Datenbank
in der Konguration der Datenbank auf dem Primärsystem eingetragen wurde und ACR
somit startbereit ist, erfolgt bei dem initialen Verbindungsaufbau die Übermittlung der
Verbindungsinformationen für das Sekundärsystem an die
DB2 -Clients. Zum Starten von
DB2 -Client auf dem An-
ACR kommt es genau dann, wenn die Verbindung zwischen dem
wendungsserver auf der einen Seite und der Datenbank des Primärsystems auf der anderen
Seite unterbrochen wird. In diesem Fall gilt das Primärsystem aus Sicht des
DB2 -Client als
nicht verfügbar. Der DB2 -Client versucht nun abwechselnd eine Verbindung entweder zum
Primär- oder zum Sekundärsystem aufzubauen. Damit überhaupt eine Verbindung zum
Sekundärsystem aufgebaut werden kann, benötigt der
DB2 -Client
nun die bereits über-
tragenen Verbindungsdaten für das Sekundärsystem. Wenn weiterhin keine Verbindung
Takeover.
DB2 -Client, einen Verbin-
zum Primärsystem aufgebaut werden kann, erfolgt das bereits angesprochene
Das nun bereitstehende Sekundärsystem kann den Versuch des
dungsaufbau herzustellen, erfolgreich annehmen. In diesem Fall kann das Primärsystem
seine Arbeit wieder aufnehmen und mit der Behebung des Fehlers auf dem ursprünglichen
Primärsystem begonnen werden.
Die Phase, in der der
DB2 -Client
versucht, nach dem Abbruch der Verbindung mit dem
Primärsystem diese wiederherzustellen, stellt einen entscheidenden Zeitfaktor dar. Je länger
der
DB2 -Client die Wiederherstellung versucht, desto länger kann der Anwendungsserver
keine Anfragen an ein funktionierendes System senden beziehungsweise empfangen. Aus
diesem Grund ist es notwendig, diesen Zeitfaktor gering zu halten. Dazu stehen eine Reihe
von Registervariablen des DBMS
IBM DB2 LUW
zur Verfügung, die im Folgenden kurz
erläutert werden.
Die Registervariable
DB2TCP CLIENT CONTIMEOUT gibt diejenige Zeit an, die
DB2 -Client versucht, eine Verbindung mit dem Primärsystem wiederherzustellen. Ist
diese Variable auf Null oder gar nicht gesetzt, so versucht der DB2 -Client unendlich lang
der
eine Verbindung wiederherzustellen.
33
Die Zeitdauer, wie lange ein
Anfrage wartet, wird in
DB2 -Client auf die Rückantwort des Primärsystems nach einer
DB2TCP CLIENT RVCTIMEOUT festgeschrieben. Erfolgt
nach Ablauf der Zeitdauer keine Rückantwort, so gilt die Verbindung zum Primärsystem
als fehlerhaft. Die Verbindung gilt auch dann als fehlerhaft, wenn die Beantwortung der
Anfrage länger andauert als auf die Rückantwort gewartet werden darf. Aus diesem Grund
sollte man diese Variable mit Bedacht setzen. Ist sie nicht gesetzt oder hat den Wert Null,
so gibt es keinen Abbruch der Verbindung.
Wie oft der
DB2 -Client
Registervariable
eine Wiederherstellung der Verbindung versucht, wird durch die
DB2 MAX CLIENT CONNRETRIES deniert. Der Standardwert
ist Zehn.
Der zeitliche Abstand zwischen den verschiedenen Wiederherstellungsversuchen wird in der
Registervariable
DB2 CONNRETRIES INTERVAL
festgeschrieben. Der Standard-
wert beträgt hier 30 Sekunden.
Die Nutzung der ACR-Funktionalität bringt allerdings auch eine Reihe von Einschränkungen mit sich, von denen im Folgenden einige genannt werden. In Bezug auf das nutzbare
Verbindungsprotokoll kommt so beispielsweise nur TCP/IP in Frage. Auch wird die ACRFunktionalität nicht in allen
DB2 -Produkten unterstützt, sondern lediglich in den Produk-
ten für Unix-, Linux- und Windows-Betriebssysteme. Die eingestellten Authentizierungsarten des DBMS auf den jeweiligen Systemen müssen zudem genauso übereinstimmen wie
die Versionen von
IBM DB2 LUW, lediglich unterschiedliche Fix Packs sind hier erlaubt.
5.3.4 Replikationsbereich
Nachdem in den vorhergehenden Abschnitten die Architektur und Funktionsweise, die verschiedenen Synchronisationsmodi und das ACR im Mittelpunkt der Betrachtung standen,
soll der nun folgende Abschnitt aufzeigen, welche Operationen und Objekte repliziert und
welche durch das HADR-System nicht repliziert werden.
Zum erstgenannten Fall zählen beispielsweise:
•
DDL (Data Denition Language) -Operationen,
•
DML (Data Manipulation Language) -Operationen,
•
Online-Reorganisation,
•
Oine-Reorganisation sowie
•
Metadaten für gespeicherte Prozeduren und benutzerdenierte Funktionen.
Unterschiede gibt es hierbei zwischen der Online- und der Oine-Reorganisation. Während
bei der Online-Reorganisation das Sekundärsystem nicht in Rückstand geraten kann, weil
alle Operationen detailliert protokolliert werden, ist dies bei der Oine-Reorganisation
nicht der Fall. Hier kann das Sekundärsystem durchaus in Rückstand geraten, da die einzelnen Operationen für eine Vielzahl von betroenen Zeilen protokolliert werden.
Auch in Bezug auf die gespeicherten Prozeduren und benutzerdenierten Funktionen sei
darauf hingewiesen, dass nur die Metadaten, also beispielsweise die Erstellungsbefehle,
repliziert werden, aber nicht die entsprechenden externen Codes der gespeicherten Prozeduren oder die Objektdateien der benutzerdenierten Funktionen. Diese Objekte müssen
34
manuell auf dem Sekundärsystem unter dem gleichen Pfad wie auf dem Primärsystem abgelegt werden, da die entsprechenden gespeicherten Prozeduren oder benutzerdenierten
Funktionen sonst auf dem Sekundärsystem nicht ausführbar sind.
Weiterhin werden nicht repliziert:
not logged
•
Tabellen, die mit der Option
•
BLOBs
•
Data Links,
•
UPDATE DB CFG - und UPDATE DBM CFG -Befehle sowie
•
Recovery und Manipulation der
und
erstellt wurden,
CLOBs, die gröÿer als ein Gigabyte sind,
history le.
not logged erstellt wurden, haben im laufenden HADR-System
ist gemeint, dass ein Zugri auf diese Tabellen nach einem Ta-
Tabellen, die mit der Option
keine Gültigkeit. Hiermit
keover auf das neue Primärsystem zu einer Fehlermeldung führt.
BLOBs und CLOBs, die gröÿer als ein Gigabyte sind, werden nicht
repliziert, da Ma-
nipulationen an diesen Daten in dieser Gröÿe nicht mehr durch das DBMS
LUW
IBM DB2
protokolliert werden. Der entstehende Speicherbereich wird jedoch auf dem Sekun-
därsystem zugeordnet und die entsprechenden Einträge in der Tabelle mit binären Nullen
aufgefüllt.
5.4 Vergleich und Bewertung
Die vorangegangenen drei Abschnitte des fünften Kapitels haben sich im Detail mit den
drei in dieser Studienarbeit betrachteten Replikationsverfahren unter dem DBMS
DB2 LUW
IBM
beschäftigt. So wurden die Architektur der jeweiligen Replikationsumgebung,
die Funktionsweise des Verfahrens und spezielle Eigenschaften erläutert. Der folgende vierte
Abschnitt soll die Verfahren der SQL-Replikation, Q-Replikation und HADR nun vergleichen und bewerten.
Die Verfahren werden hinsichtlich der folgenden vier Kategorien verglichen:
•
Architektur einer Replikationsumgebung,
•
Funktionsweise,
•
Replikationsbereich sowie
•
Verwaltung und Pege.
Der Vergleich schlieÿt mit einem Blick auf die Untersuchungen zu Performance-Unterschieden zwischen der SQL- und der Q-Replikation von John Ascho [Asc05]. Die Bewertung
der einzelnen Vergleichspunkte erfolgt mittels eigens denierter Skalenwerte:
•
+ (ja)
•
o (teilweise)
•
(nein)
35
5.4.1 Architektur einer Replikationsumgebung
Die Architektur einer Replikationsumgebung ist gerade im Hinblick auf die Wahl eines
Replikationsverfahrens in Abhängigkeit des gegebenen Szenarios und der daraus resultierenden Problemstellung von enormer Bedeutung. So richtet sich beispielsweise die Anzahl
der Sekundärsysteme danach, ob neben der Datenreplizierung auch eine Lastverteilung
vorgenommen werden soll oder ob aufgrund der begrenzten nanziellen Möglichkeiten eine
Lösung gefunden werden soll, bei der die Anzahl der Sekundärsysteme möglichst gering
ist, aber dennoch die erfolgreiche Datenreplizierung gewährleistet werden kann.
Die
Tabelle 9
gibt einen Überblick über die entsprechenden Vergleichspunkte, die im
Folgenden auch bewertet werden.
Merkmal
SQL-Replikation Q-Replikation HADR
Mehrere Primärsysteme erlaubt
+
+
Mehrere Sekundärsysteme erlaubt
+
+
Automatisches
+
+
+
+
+
o
o
+
+
Weiterleitung
von
Anfragen bei geplantem oder ungeplantem Ausfall
Lesezugri auf Zieltabellen auf dem
Sekundärsystem
Schreibzugri auf Zieltabellen auf
dem Sekundärsystem
Unterstützung
der
Datenbank-
Partitionierung
Tabelle 9: Vergleich der Architektur einer Replikationsumgebung
Die Verfahren der SQL- und der Q-Replikation haben hinsichtlich der Anzahl der Primärund Sekundärsysteme gegenüber HADR einen Vorteil: Während HADR auf jeweils ein
Primär- und ein Sekundärsystem begrenzt ist, kann die Anzahl bei den beiden anderen Verfahren variiert werden. Die automatische Weiterleitung der Anfragen von einem
Primärsystem auf ein Sekundärsystem bei einem geplanten oder ungeplanten Ausfall des
Primärsystems ist bei allen drei Verfahren durch das bereits unter HADR vorgestellte
Automatic Client Reroute
realisierbar. SQL- und Q-Replikation ermöglichen zudem einen
lesenden und teilweise einen schreibenden Zugri auf die jeweiligen Zieltabellen auf dem
Sekundärsystem, sodass diese nicht nur als reine Replikationsziele genutzt werden können. Mit HADR können derartige Zugrismöglichkeiten auf dem Sekundärsystem nicht
realisiert werden, da das Sekundärsystem jegliche externe Verbindungsversuche abblockt.
Bei der Unterstützung von Datenbank-Partitionierungen gestaltet sich die Lage ähnlich:
HADR bietet hier im Gegensatz zur SQL- und Q-Replikation keine Unterstützung.
Bezüglich der Architektur einer Replikationsumgebung und der Flexibilität gibt es folglich
gröÿere Unterschiede zwischen HADR und den anderen beiden Verfahren. Die SQL- und QReplikation unterscheiden sich hier nicht voneinander. Dies ändert sich zumindest teilweise
in der nächsten Kategorie, der Funktionsweise.
5.4.2 Funktionsweise
Unter der Kategorie
Funktionsweise
steckt zum einen die Frage, welcher Bereich der Da-
tenbank durch das jeweilige Verfahren berührt wird, und zum anderen, in welchen Syn-
36
chronisationsmodi die Daten repliziert werden können und welche Datenussrichtungen
unterstützt werden.
Die Synchronisationsmodi stellen hierbei einen elementaren Faktor dar, der wesentlich zur
Entscheidung für ein Verfahren in Abhängigkeit des Szenarios und der Problemstellung
beiträgt. Handelt es sich beispielsweise um zeitkritische Änderungsoperationen, so ist es
nicht förderlich, wenn das Primärsystem eine Änderungsoperation erst dann als erfolgreich
abgeschlossen betrachtet, wenn diese auch auf dem Sekundärsystem repliziert wurde. Im
Gegensatz dazu ist es beispielsweise bei Änderungsoperationen, die weniger zeitkritischer
Natur sind, durchaus wünschenswert, wenn eine Änderungsoperation erst dann auf dem
Primärsystem als erfolgreich abgeschlossen betrachtet wird, wenn sichergestellt ist, dass
diese auch auf dem Sekundärsystem repliziert wurde. In diesem Falle kann gewährleistet
werden, dass immer ein identischer Datenbestand auf mindestens einem zweiten System
vorhanden ist.
Die
Tabelle 10 zeigt die Vergleichspunkte der Kategorie Funktionsweise, die im Folgenden
auch wieder bewertet werden.
Merkmal
Keine
SQL-Replikation Q-Replikation HADR
Registrierungspicht
für
+
Explizite Zuordnung von Quell- zu
+
+
+
+
+
+
Quell- und Zieleinheiten
Zieleinheiten
Datenumwandlung durch Replikationsverfahren
Direkter Versand der Replikationsdaten von Primär- auf Sekundärsystem
Parallele Verarbeitung der Replikationsdaten auf dem Sekundärsystem
Synchrone Replikation
+
Asynchrone Replikation
+
+
+
Near-synchrone Replikation
+
Unidirektionaler Datenuss
+
+
+
Bidirektionaler Datenuss
+
+
Peer-to-peer Datenuss
+
+
Tabelle 10: Vergleich der Funktionsweise
Der Vorteil von HADR im Vergleich zur SQL- und Q-Replikation liegt in der Tatsache,
dass die zu replizierenden Quelleinheiten nicht erst registriert werden müssen. Das erspart
am Anfang eine Menge Kongurationsaufwand, wirkt sich aber negativ in anderen Bereichen aus, wie der expliziten Zuordnung von Quell- zu bestimmten Zieleinheiten. Dieses
ist wiederum bei der SQL- und Q-Replikation möglich. Hierdurch können Daten nicht nur
einfach repliziert, sondern auch in eine andere Tabellenstruktur überführt werden. Bei der
Replizierung können die Daten auÿerdem transformiert werden. Beispielsweise können so
Daten, die die Kosten für ein bestimmtes Objekt in einer bestimmten Währung charakterisieren, während der Replizierung in eine andere Währung umgerechnet werden. Dies
erspart das zusätzliche Umrechnen der Währung auf Anwendungsebene und ermöglicht
eine wie in diesem Fall Domänen-spezische Datenaufteilung und -haltung. HADR bietet
diese Möglichkeit der Datentransformation im eigentlichen Sinne nicht.
37
Hinsichtlich dem Untersuchungsmerkmal
Direkter Versand der Replikationsdaten von Pri-
mär- auf Sekundärsystem gibt es Unterschiede zwischen allen drei Verfahren. Während die
Informationen über die zu replizierenden Daten bei HADR direkt vom Primär- auf das
Sekundärsystem transferiert werden, erfolgt bei der SQL- wie auch der Q-Replikation der
Transfer über eine Zwischenspeichertabelle beziehungsweise über das Warteschlangensystem.
Ein weiterer Untersuchungspunkt ist die parallele Verarbeitung der Transaktionen auf den
jeweiligen Sekundärsystemen. Hier unterscheiden sich die SQL- und die Q-Replikation voneinander. Das Q-Apply-Programm kann durch seine multithread-Fähigkeit die Nachrichten
aus der Empfangswarteschlange parallel verarbeiten. Diese Funktionalität hat das ApplyProgramm bei der SQL-Replikation nicht. Das ist im Übrigen auch einer der Gründe,
warum die Performance bei der Q-Replikation besser ist im Vergleich zur SQL-Replikation.
Es sei hierbei auf den
Abschnitt 5.4.5 verwiesen, der sich mit den Performance-Untersu-
chungen von Ascho beschäftigt.
Wie bereits erwähnt, unterscheiden sich die Verfahren bezüglich der Synchronisationsmodi.
HADR bietet hier die gröÿtmögliche Flexibilität, da man zwischen drei Modi, nämlich der
synchronen, asynchronen und near-synchronen Replikation, wählen kann. Die SQL- wie
auch die Q-Replikation unterstützen hingegen nur die asynchrone Replikation.
In punkto Datenussrichtung ähnelt das Bild dem der Synchronisationsmodi. Alle drei Verfahren unterstützen den unidirektionalen Datenuss als Standardrichtung. Die bidirektionale und peer-to-peer Datenussrichtung werden aber nur von der SQL- und Q-Replikation
unterstützt.
5.4.3 Replikationsbereich
Die dritte Vergleichskategorie bezieht sich vor allem auf den Datenbereich, der durch die
Verfahren repliziert werden kann. Für die Auswahl des am besten geeigneten Verfahrens ist
der Replikationsbereich folglich ebenso von Bedeutung wie die bisherigen zwei Kategorien.
Einen Überblick der Vergleichspunkte gibt die folgende
Merkmal
Tabelle 11.
SQL-Replikation Q-Replikation HADR
Geltungsbereich Datenbank
+
Geltungsbereich Tabellen
+
+
+
Geltungsbereich Views
+
+
Spaltenspezische Replikation
+
+
Zeilenspezische Replikation
+
o
INSERT, UPDATE, DELETE
+
+
+
CREATE,
TRUNCAT,
+
Metadaten für gespeicherte Proze-
+
+
ALTER,
DROP
duren
Metadaten
für
benutzerdenierte
Funktionen
Tabelle 11: Vergleich des Replikationsbereichs
Der
Geltungsbereich
eines Replikationsverfahrens bezeichnet genau denjenigen Bereich, in
dem Änderungsoperationen oder andere Aktivitäten durch das Replikationsverfahren er-
38
fasst und auf die Sekundärsysteme repliziert werden. Beispielsweise umfasst HADR als
einziges Verfahren den Bereich
Datenbank.
Die beiden anderen Replikationsverfahren be-
schränken sich auf eine niedrigere Granulatsebene des DBMS, dem Bereich der Tabellen
oder der Views, wobei die Q-Replikation nur den Bereich der Tabellen abdeckt.
Nun können zu replizierende Daten nicht nur nach Tabelle oder View ausgewählt werden, sondern auch in Form von sogenannten Untermengen, d.h. durch eine Spalten- oder
Zeilenauswahl. HADR unterstützt hierbei keine der beiden Replikationsformen. Tabellen
werden mittels HADR also entweder ganz oder gar nicht repliziert. Für eine spaltenspezische Replikation können sowohl die SQL- als auch die Q-Replikation verwendet werden.
Hingegen bietet nur die SQL-Replikation eine vollständige Unterstützung der zeilenspezischen Replikation an. Die Q-Replikation unterstützt die letztgenannte Replikationsform
nur teilweise, da es hierbei auch davon abhängt, welche Datenussrichtung gewählt wurde.
Keine Unterschiede gibt es hinsichtlich der DML-Statements (INSERT, UPDATE und
DELETE). Im Bereich der DDL-Statements (CREATE, ALTER, TRUNCATE, DROP)
ist erkennbar, dass nur HADR derartige Operationen repliziert. Gleiches trit auch auf
die Replizierung von Metadaten für gespeicherte Prozeduren und für benutzerdenierte
Funktionen zu.
Anhand dieser Vergleichskategorie wird bereits deutlich, dass HADR im Vergleich zu den
anderen beiden Verfahren vollständiger ist im Hinblick auf den Umfang der zu replizierenden Daten; die beiden anderen Verfahren haben aber Vorteile vorzuweisen, wenn es um die
Spezialisierung der zu replizierenden Daten geht.
5.4.4 Verwaltung und Pege
Die Eignung eines Verfahrens hängt neben der Frage der Architektur, der Funktionsweise
oder aber der Frage, welcher Bereich vom jeweiligen Verfahren abgedeckt wird, natürlich auch davon ab, wie groÿ der Aufwand für die Installation der Software, Pege und
Verwaltung des Verfahrens ist. Die
Verwaltung und Pege
Tabelle 12
gibt einen Überblick über die Kategorie
und zeigt die jeweiligen Vergleichspunkte, die im Folgenden auch
bewertet werden.
Merkmal
SQL-Replikation Q-Replikation HADR
Niedriger Installationsaufwand
+
+
Niedriger Einrichtungsaufwand
+
Ein-
+
+
+
Leistungsüberwachung
+
+
+
Assistent-Unterstützung
zur
richtung
Tools
zur
vorhanden
Tabelle 12: Vergleich der Verwaltung und Pege eines Verfahrens
Positiv herauszustellen ist bei der SQL-Replikation und HADR der relativ geringe SoftwareInstallationsaufwand. Beide Verfahren sind bereits in einer herkömmlichen DB2-Version
integriert und es bedarf keiner weiteren Software-Installationsschritte, wenn bereits eine DB2-Version installiert wurde. Auch das Verfahren der Q-Replikation ist bereits in
einer herkömmlichen DB2-Version integriert, allerdings ist hier ein zusätzlicher SoftwareInstallationsschritt für das Warteschlangensystem notwendig. Hierfür kann beispielsweise
das Programm
WebSphere MQ
eingesetzt werden.
39
Der Aufwand zur Einrichtung eines Verfahrens variiert hingegen stark. Bei HADR dauert die Einrichtung nur wenige Minuten, während man bei den anderen beiden Verfahren
längere Zeit in Anspruch nehmen muss. Dies ist durch den hohen Zeitaufwand für die Registrierung der Quell- und Zieleinheiten und der Zuordnung dieser untereinander begründet.
Die Einrichtung der Replikationsumgebung inklusive der Registrierung und Zuordnung
der zu replizierenden Einheiten kann bei allen drei Verfahren über einen Assistenten erfolgen. Das ist für den Benutzer komfortabler als die Einrichtung über die Konsole und
bietet gleichzeitig einen schnellen und anschaulichen Überblick über den aktuellen Einrichtungsstatus. Der Nachteil der Assistenten liegt allerdings in deren etwas langsamen
Ausführbarkeit, welches wiederum jeweils von der Serverleistung abhängt.
Entsprechend des Aufwands, der für die Einrichtung aufgebracht werden muss, gestaltet sich auch der Aufwand für die Pege der jeweiligen Replikationsumgebung. So muss
beispielsweise bei der SQL- und Q-Replikation jeweils immer die entsprechende Subskriptionsgruppe angefasst werden, wenn Änderungen am Sekundärsystem erfolgen, sei es ein
Austausch der Maschine durch eine andere und damit die Zuweisung auf neue Zieleinheiten. Bei HADR dagegen ist der Aufwand überschaubar: Die neue Maschine ist einfach als
neues Sekundärsystem in die HADR-Umgebung aufzunehmen.
Ebenfalls für alle drei Verfahren positiv ist das Vorhandensein von Tools, die zur Leistungsüberwachung eingesetzt werden können. Als Beispiele seien hier das
der
HADR Statusmonitor
Replication Center und
genannt.
5.4.5 Performance-Untersuchungen von Ascho
Nach der Fertigstellung und Veröentlichung des
WebSphere Information Integrator 8.2
und dem neuen Replikationsverfahren Q-Replikation im Jahre 2005 wurden durch ein Team
unter Führung von John Ascho zahlreiche Performance-Untersuchungen durchgeführt,
deren Ergebnisse in diesem Abschnitt kurz angerissen werden sollen. John Ascho ist Leiter
der Abteilung
WebSphere Information Integrator Performance bei IBM. Der Gesamtbericht
über die Untersuchungen kann unter [Asc05] nachgelesen werden.
Im Rahmen der Untersuchungen wurden auf einer AIX- und einer z/OS-Umgebung Messungen durchgeführt. In diesem Abschnitt wird auf die Ergebnisse der Erstgenannten zurückgegrien. Sie umfassten unter anderem Angaben zur:
•
Latenz in Abhängigkeit zur Durchsatzrate,
•
CPU-Belastung bei der Replikation,
•
Auswirkung der multithread-Fähigkeit des Q-Apply-Programms auf die Durchsatzrate,
•
Auswirkung des bidirektionalen und peer-to-peer-Datenusses auf die Performance
und
•
Auswirkung des bidirektionalen und peer-to-peer-Datenusses auf die CPU-Belastung.
Aschos Team kam in gegebener Untersuchungsumgebung zu dem Ergebnis, dass die Latenz bei der Q-Replikation erst bei ungefähr 13000 Zeilen pro Sekunde ansteigt, bei der
SQL-Replikation hingegen bereits bei etwa 5500 Zeilen pro Sekunde. Dabei ist der Anstieg
40
bei der SQL-Replikation gröÿer als bei der Q-Replikation. Als Grund dafür nannte Ascho
die Reduzierung der Logging-Aktivitäten im Zusammenhang mit der Zwischenspeichertabelle bei der SQL-Replikation, die bei der Q-Replikation durch das Warteschlangensystem
ersetzt wird. Aber auch die multithread-Fähigkeit sorgt grundlegend für eine Erhöhung
der Durchsatzrate bei nahezu gleichbleibender und relativ geringer Latenz. Ein weiterer
Grund ist die Verringerung der CPU-Belastung. Hierbei kam das Team um Ascho zu dem
Ergebnis, dass die CPU-Kosten bei der Q-Replikation auf dem Primärsystem pro Zeilenreplizierung um etwa zwei Drittel geringer sind als bei SQL-Replikation. Die CPU-Kosten für
eine Zeilenreplizierung auf dem Sekundärystem sind bei der Q-Replikation hingegen etwa
ein Drittel teurer als bei der SQL-Replikation, da durch die Kommunikation mit der Empfangswarteschlange und dem Umwandeln der Nachricht in das SQL-Format mehr Aufwand
betrieben wird. In der Gesamtbetrachtung ergibt sich eine geringe CPU-Kostengröÿe bei
der Q-Replikation, die um etwa ein Drittel kleiner ist als die bei der SQL-Replikation.
41
6
Praktische Umsetzung einer Hochverfügbarkeitslösung
mittels eines Replikationsverfahrens
Das vorliegende Kapitel erklärt den Entscheidungsprozess für die Auswahl eines geeigneten Replikationsverfahrens und gibt Aufschluss darüber, wie das ausgewählte Verfahren
konguriert, gewartet und gepegt wird. Das Kapitel schlieÿt mit einem Bericht über die
Erprobung des Verfahrens auf einem Testsystem.
6.1 Anforderungsanalyse und Auswahl eines Verfahrens
Für die bereits im
zweiten Kapitel kurz erläuterte Digitale Bibliothek namens UrMEL
betreibt die Thüringer Universitäts- und Landesbibliothek in Zusammenarbeit mit dem
Rechenzentrum der Friedrich-Schiller-Universität Jena einen Datenbankserver mit dem
DBMS
IBM DB2 LUW
in Version 9. Um die Handhabung der Datensicherung im Fall
eines Ausfalls des Datenbankservers zu optimieren und insbesondere die Ausfallzeit des
Primärsystems möglichst gering zu halten, wurden im Rahmen dieser Studienarbeit drei
verschiedene Replikationsverfahren betrachtet. Das Ziel dieser Studienarbeit liegt unter
anderem in dem Aunden eines geeigneten Replikationsverfahrens. Die im konkreten Beispiel vorliegende Replikationsumgebung weist eine Vielzahl an Anforderungen auf, die bei
der Auswahl des gesuchten Verfahrens von zentraler Bedeutung sind und das Grundgerüst
der Analyse zur Auswahl eines geeigneten Verfahrens bilden. Das Grundgerüst setzt sich
dabei aus den folgenden Anforderungskategorien zusammen, die im Folgenden auch erklärt
werden:
Die
•
Installation der Software,
•
Architektur der Replikationsumgebung,
•
Einrichtung und Konguration des Verfahrens,
•
Replikationsbereich des Verfahrens,
•
Verwendbarkeit des Sekundärsystems,
•
Replikationssicherheit,
•
Performance des Replikationsprozesses,
•
Ausfalldauer des Primärsystems sowie
•
Lizenzierungskosten.
Installation der Software sollte möglichst ohne gröÿeren Aufwand umsetzbar sein.
Durch die Nutzung des DBMS
IBM DB2 LUW
erfolgt hier bereits eine Einschränkung
für die in Frage kommenden Verfahren. Das Verfahren sollte deshalb, falls es nicht aus der
Produktfamilie von DB2 stammt, kompatibel zu diesem sein, da ein Wechsel des DBMS
nicht vorgesehen ist. Die installierte Version sollte durch das Verfahren unterstützt werden.
Die
Architektur der Replikationsumgebung
umfasst zwei Datenbankserver. Diese
sind ein Primär- und ein Sekundärsystem, welches als Replikationsziel genutzt werden soll.
Es ist im Hinblick auf die Architektur demzufolge nicht relevant, ob das Verfahren nur ein
42
oder mehrere Sekundärsysteme unterstützt. Das Verfahren sollte aber in jedem Fall die
Lokations-unabhängige Stationierung der Datenbankserver unterstützen, da nur so eine
wirkliche Hochverfügbarkeitslösung mittelfristig erreicht werden kann. Ein weiterer wichtiger Punkt ist das Existieren eines sogenannten
Connection Pools. Unter einem Connection
Pool versteht man ein Verwaltungssystem für Datenbankverbindungen. Eine zentrale Aufgabe eines Connection Pools besteht in dem Vorhalten und Parken der Verbindungen,
falls sich diese nicht in Verwendung benden. Sie werden bei Bedarf aktiviert, so dass nicht
ständig neue Datenbankverbindungen hergestellt werden. Bei der Nutzung eines Anwendungsservers ist das Verwalten von Verbindungen zur Datenbank recht teuer, weswegen
man derartige Verwaltungssysteme zu Rate zieht. Das Replikationsverfahren sollte daher
in jedem Fall die Nutzung eines Connection Pools unterstützen.
Einrichtung und Konguration
des Verfahrens. Komplexe Einrichtungs- und Kongurationsvorgänge sind rein aus ZeitEine weitere wichtige Kategorie ist der Aufwand für die
gründen zu vermeiden. Das Verfahren sollte mit möglichst wenig Zeitaufwand einzurichten
sein und auch in Fehlerfällen möglichst zeitnah die eigene Funktionalität wieder aufnehmen
können. Auch in Bezug auf den
Replikationsbereich sollte das Verfahren einen groÿen
Umfang an Operationen replizieren können. Es wird hier Wert auf die Gesamtheit gelegt
und nicht auf die Spezialisierung auf einzelne Bereiche. Je vollständiger das Verfahren die
Operationen repliziert, desto besser ist das Verfahren für das konkrete Beispiel.
Verwendbarkeit des Sekundärsystems. Grundsätzlich spielt es keine zentrale Rolle, ob das Sekundärsystem für AnfraEine etwas geringer priorisierte Kategorie ist die der
gen seitens der Anwendungen zur Verfügung steht. Es wird aber auch nicht abgelehnt. Die
Verfügbarkeit des Sekundärsystems für derartige Anfragen würde den Vorteil mit sich bringen, dass das Replikationsverfahren gleichzeitig auch zur Lastreduktion beitragen könnte,
indem derartige Anfragen auf beide Datenbankserver verteilt werden und das Replikationsverfahren für den Austausch der jeweiligen Datenänderungen sorgt. Gleichzeitig führt
diese Möglichkeit aber auch zu einer Reihe von Koniktszenarien, die hierbei auftreten
können, falls auf dem Sekundärsystem Schreibzugrie erfolgen. Aus diesem Grund ist die
Verwendbarkeit des Sekundärsystems für derartige Anfragen keine Bedingung, die das Replikationsverfahren zwingend erfüllen muss.
In diesem Zusammenhang steht auch die Kategorie der
Replikationssicherheit. Die An-
forderung an das Verfahren sieht hierbei vor, dass gewährleistet sein sollte, dass Transaktionen, die auf dem Primärsystem erfolgreich verarbeitet wurden, auch auf dem Sekundärsystem erfolgreich verarbeitet werden und so im Falle des Ausfalls des Primärsystems die
Datenänderungen auf dem Sekundärsystem vorhanden sind. In gleichem Maÿe soll diese
Anforderung aber nicht dazu führen, dass die
Performance der Anwendungen unter den
Replikationsverfahren wesentlich leidet. Das Verfahren muss demzufolge im Hinblick auf
diese Kategorie einen Kompromiss zwischen der Replikationssicherheit und der Verschlechterung der Performance nden.
Ein Grund für die Realisierung eines Replikationsverfahrens im konkreten Beispiel ist der
Umstand, dass bisher die Datensicherung durch Online-Backups und das Aufspielen auf
ein Sekundärsystems durch nächtliche Sicherungen erfolgte. Mit dieser Vorgehensweise ist
der Datenbestand auf dem Sekundärsystem immer älter (teils deutlich älter) als auf dem
Primärsystem, was im Falle eines Totalausfalls des Primärsystems zu Datenverlust führen
würde. Eine Anforderung an das Verfahren ist also die Reduzierung der
Ausfallzeit auf ein
akzeptables Maÿ. Das bedeutet, dass das Sekundärsystem jederzeit über einen möglichst
identischen Datenbestand verfügen und die Inbetriebnahme des Sekundärsystems im Falle
eines Totalausfalls des Primärsystems nur eine sehr geringe Zeit in Anspruch nehmen sollte.
43
Die letzte Kategorie ist die der
Lizenzierungskosten. Das Verfahren sollte nach Möglich-
keit keine weiteren Lizenzierungskosten verursachen und bereits im Produktpaket enthalten
sein.
Auf Grundlage der soeben erklärten Anforderungskategorien wurden den in dieser Studienarbeit betrachteten Replikationsverfahren sogenannte
Eignungsnoten
zugeordnet. Eig-
nungsnoten haben die Aufgabe, die Eignung eines Verfahrens in Abhängigkeit der entsprechenden Anforderungskategorie zu einem konkreten Beispiel in Form von Skalenwerten
von 1 bis 3 anzugeben. Die Eignungsnote 1 entspricht hierbei der bestmöglichen Eignung,
die Eignungsnote 3 entspricht der schlechtmöglichsten Eignung und die Eignungsnote 2
entspricht dem Mittelwert, d.h. das Verfahren eignet sich nur bedingt in Bezug auf die
Anforderungskategorie. Die Zuordnung der Eignungsnoten für die einzelnen Anforderungskategorien und Replikationsverfahren ist in
Anforderungskategorie
Tabelle 13 dargestellt.
SQL-Replikation Q-Replikation HADR
Installation der Software
1
2
1
Architektur der Replikationsumge-
1
1
1
2
2
1
Replikationsbereich des Verfahrens
2
2
1
Verwendbarkeit
1
1
3
Replikationssicherheit
2
2
1
Performance des Replikationsprozes-
2
1
1
Ausfalldauer des Primärsystems
2
2
1
Lizenzierungskosten
1
1
1
bung
Einrichtung und Konguration des
Verfahrens
des
Sekundärsys-
tems
ses
Tabelle 13: Eignungsnoten der Replikationsverfahren
Auf Grundlage der Auswertung dieser Eignungsnoten wurde für das konkrete vorliegende
Beispiel das Replikationsverfahren HADR ausgewählt. Die Wahl von HADR lässt sich
hierbei wie folgt begründen:
Die Vorteile von HADR im Vergleich zu den anderen beiden Verfahren nden sich vor allem
in den Anforderungskategorien des Replikationsbereiches, der Replikationssicherheit und
insbesondere der Ausfalldauer des Primärsystems. Der Geltungsbereich von HADR liegt auf
der Ebene der Datenbank, weshalb der Replikationsbereich vom Umfang her am gröÿten ist.
Die beiden anderen Verfahren haben in dieser Anforderungskategorie eher Vorteile, wenn
es um die Spezialisierung geht, d.h. wenn nur eine spezielle Untermenge von Daten für die
Replizierung vorgesehen ist. Aufgrund der Möglichkeit der synchronen Replizierung von
Daten bei HADR genieÿt das Verfahren auch in der Kategorie der Replikationssicherheit
Vorteile gegenüber der SQL- und Q-Replikation. Letztgenannte Verfahren unterstützen
nur die asynchrone Replikation. Nahezu dominierenden Charakter erfährt HADR in der
Anforderungskategorie der Ausfalldauer des Primärsystems. Durch die Möglichkeit des
zeitnahen Umschaltens des bisherigen Sekundärsystems zum neuen Primärsystem verkürzt
sich die Ausfallzeit auf ein sehr kleines Zeitintervall, da zusätzliche manuelle Eingrie neben
dem eigentlichen Umschalten nicht notwendig sind. Innerhalb der HADR-Umgebung steht
somit ein funktionsfähiges System zur Verfügung, welches im Ausfallszenario die Rolle des
Primärsystems sofort übernehmen kann.
44
6.2 Konguration des HADR-Systems
Voraussetzungen
Bevor mit der Konguration des HADR-Systems begonnen werden kann, müssen einige
Punkte auf ihre Erfülltheit hin überprüft werden. So ist eine Grundvoraussetzung für
das Aufsetzen eines HADR-Systems die vollständige Installation des DBMS
LUW
IBM DB2
auf dem Primär- und Sekundärsystem. Auf die Beschreibung der Grundinstallation
wird hierbei allerdings verzichtet, da dies den Umfang der Studienarbeit sprengen würde.
Nützliche Hinweise sind zum Beispiel unter [OGT07] nachzulesen. Auch ist die HADRFunktionalität zwar bereits ab der Express-C Edition im Produktpaket enthalten, aber
erst ab der Express Edition ohne zusätzliche Lizenzierung nutzbar. In allen anderen Fällen
muss sie also optional zum Lizenzpaket hinzu erworben werden.
Die Betriebssysteme und deren aktuelle Version auf dem Primär- und Sekundärsystem
sollten übereinstimmen. Die Versionen können hierbei für eine kurze Zeit unterschiedlich
sein, insbesondere im Falle des Einspielens von System-Updates. Die eingesetzte DB2Version plus Level sollte auf beiden Systemen ebenso identisch sein. Im Falle des Einspielens
von Upgrades können sich aber auch hier die Versionen kurzzeitig unterscheiden. Auch
sollte auf beiden Systemen entweder eine 32Bit- oder eine 64Bit-Software eingesetzt werden.
Es wird darüber hinaus sehr empfohlen, dass die beiden Systeme eine gleichartige Architektur einsetzen und im Hinblick auf die Gröÿe des Arbeitsspeichers ähnliche Werte
aufweisen. Bei der Wahl der Netzwerkstruktur sollte darauf geachtet werden, dass die hergestellte TCP/IP-Verbindung über ein leistungsstarkes Netzwerk führt, damit die TCP/IPVerbindung nicht den Charakter eines Flaschenhalses annimmt und damit im Worst-Case
zu einer Blockierung des HADR-Systems führt. Auf den Einsatz einer Firewall sollte weitestgehend verzichtet werden.
Im Hinblick auf die Kongurationsparameter des DBMS und der Datenbanken sei darauf
hingewiesen, dass hier eine identische Wertbelegung seitens IBM empfohlen wird. Auch die
Gröÿe des Puers sollte auf beiden Systemen identisch sein.
Die Namen der im HADR-System operierenden Datenbanken müssen ebenso übereinstimmen. Daraus folgt, dass die Datenbanken in unterschiedlichen Instanzen angelegt sein müssen. Zudem müssen die Tabellenräume strukturgleich sein; gemeint ist hierbei der Typ und
die Gröÿe des Tabellenraums, die Pfadangabe der Container wie auch die Gröÿe und der
Dateityp der selbigen. Auÿerdem sollte der für Log-Dateien vorgesehene Speicherplatz auf
beiden Systemen in der Gröÿe gleich sein. Eine Umgebung mit partitionierten Datenbanken
wird von HADR nicht unterstützt.
Obige Voraussetzungen sind von elementarer Natur für das reibungslose Funktionieren der
HADR-Umgebung und einer möglichst hohen Performance. Das Sekundärsystem muss jederzeit in der Lage sein, die vom Primärsystem generierte Transaktionslast zu verarbeiten.
Im Falle eines Wechsels des Sekundär- zu einem Primärsystem muss es zudem in der Lage
sein, die Anfragelast zu bewerkstelligen. Da auch Änderungen an den Systemeinstellungen, wie beispielsweise das Modizieren des Buerpools, auf das Sekundärsystem repliziert
werden, ist eine Gleichheit beispielsweise der Speichergröÿen notwendig.
45
Konguration
Nachdem die Voraussetzungen geprüft wurden und die Erfülltheit dieser festgestellt wurde,
kann mit der eigentlichen Konguration des HADR-Systems begonnen werden.
LUW
IBM DB2
bietet hierbei zwei verschiedene Wege an, das System entsprechend zu kongurieren:
•
Konguration über den graschen Assistenten der Steuerzentrale
•
Konguration über die Kommandozeile.
oder
Beide Wege haben ihre Vor- und Nachteile. Der grasche Assistent der Steuerzentrale eignet
sich vor allem für Einsteiger der HADR-Thematik und ermöglicht einen relativ guten Überblick über die bereits ausgeführten und noch ausstehenden Kongurationsschritte. Auch
erläutern zahlreiche Hinweistexte, welche Aktionen im Detail und warum diese ausgeführt
werden. Ein Nachteil des graschen Assistenten liegt zum einen darin, dass dieser als Prozess des Instanzeneigentümers auf dem operierenden System ausgeführt wird. Aus diesem
Grund ist es erforderlich, dass der Instanzeneigentümer die Rechte für die Manipulation
der Datei
/etc/services
besitzt, damit die entsprechenden Dienste und Ports eingetragen
bzw. geändert werden können, die für die reibungslose Kommunikation der beiden Systeme
notwendig sind. Andernfalls können diese elementaren Schritte nicht durch den Assistenten
durchgeführt werden und es bedarf eines manuellen Eingris des Administrators oder eines
Nutzers, der die entsprechenden Befugnisse hat. Die Dienstnamen und Ports müssen dabei
auf beiden Systemen eingetragen werden. Ein weiterer Nachteil liegt in der Behäbigkeit
der Steuerzentrale. Der grasche Assistent macht im Allgemeinen einen eher langsamen
Eindruck und wirkt in seiner Ausführbarkeit sehr träge. Dies kann aber von System zu
System recht unterschiedlich sein. Dieser Nachteil kann durch die Nutzung der Kommandozeile umgangen werden, die sich jedoch weniger einsteigerfreundlich gestaltet.
Konguration über den graschen Assistent der Steuerzentrale
Im Folgenden wird zunächst die Konguration mittels des graschen Assistenten der Steuerzentrale betrachtet. Dieser wird über die Steuerzentrale mit der Aktivierung des Kontextmenüs der zu replizierenden Datenbank gestartet, in dem man in diesem den Eintrag
High Availability Disaster Recovery markiert und im darauf erscheinenden Untermenü den
Eintrag Set Up aktiviert. Der Assistent durchläuft daraufhin die folgenden zehn Schritte.
Nach einer einführenden Information des Nutzers im
Schritt
Modus.
ersten Schritt, erfolgt im zweiten
die Bestätigung des gewählten Primärsystems und die Einstellung des Logging-
IBM DB2 LUW
archival logging
circular logging (Umlaufprotokollierung). Letztgenanntes wird
bietet zwei verschiedene Logging-Verfahren an:
(Archivprotokollierung) und
als Standardverfahren bei der Anlegung von Datenbanken eingesetzt. Hierbei wird ein
Ring von aktiven Log-Dateien verwendet, welche fortlaufend beschrieben werden, um eine
Recovery nach einem Systemausfall oder einem Transaktionsfehler durchzuführen. Änderungsoperationen, die nach der Erstellung eines Backups durchgeführt wurden, sind bei
diesem Verfahren im Falle eines Ausfalls nicht wiederherstellbar. Zudem kann ein Backup
der Datenbank nur erstellt werden, wenn sich diese im
Im Gegensatz dazu steht das
archival logging.
Oine -Modus bendet.
Bei diesem Verfahren werden permanent
neue Log-Dateien erzeugt, wodurch wiederum ein
rollforward -Modus der Datenbank mög-
lich ist und damit die durch HADR geforderte Bedingung erfüllt wird. Bei einem Ausfall
46
der Datenbank können so die Änderungsoperationen bis zu einem beliebigen Zeitpunkt
nachgefahren werden. Insbesondere können im Unterschied zum
circular logging
auch die
Änderungsoperationen nach dem Erstellungszeitpunkt des Backups nachgefahren werden.
Weitergehende Informationen zu den beiden Verfahren sind unter [IBM06a] nachlesbar.
Ist statt des geforderten
archival logging das circular logging aktiviert, bedarf es eines Zwiarchival logging wird man im zweiten Unterschritt
schenschrittes: Nach der Auswahl des
zur Bearbeitung der archivierten Logs befragt. Hier hat man die Möglichkeit zwischen drei
manuelle Archivierung der Log-Dateien, die Archivierung mittels einer User-Exit-Routine und
die automatische Archivierung durch DB2. Nach dieser Auswahl folgen die Festlegung der
Verfahren zur Archivierung der Log-Dateien zu wählen. Diese sind im Einzelnen die
Anzahl der primären und sekundären Log-Dateien und die Gröÿe der selbigen. Im nächsten
Unterschritt erfolgt dann die Angabe des Speicherortes der Log-Dateien. Zudem kann man
die zusätzliche Spiegelung der Log-Dateien aktivieren, sodass diese zusätzlich gesichert
werden. Die Umstellung des Logging-Verfahrens vom
circular logging
zum
archival logging
erfordert die Erstellung eines Backups der Datenbank. Aus diesem Grund muss in einem
weiteren Unterschritt der Speicherort für das Backup angegeben werden. Darüber hinaus
ist es möglich, weitere optionale Parameter für das Backup einzustellen. Hierunter zählen
unter anderem die Aktivierung der Backup-Komprimierung und die Höhe der Parallelität.
Nach der erfolgreichen Umstellung des Logging-Verfahrens auf das
sich im
archival logging schlieÿt
dritten Schritt nun die Auswahl des Sekundärsystems an. Hierbei wählt man das
entsprechende Sekundärsystem und die dazugehörige Instanz auf diesem aus. Ist auf dem
Sekundärsystem noch keine Instanz angelegt, kann man diese mit Hilfe des Assistenten
nebenläug erzeugen. Wurde die bereits vorhandene oder erstellte Instanz selektiert, hat
man nun erneut die Wahl zwischen verschiedenen Möglichkeiten, wie die Datenbank auf
dem Sekundärsystem initialisiert werden soll. Eine Möglichkeit ist dabei die Initialisierung
der Sekundärdatenbank durch die Auswahl eines Backups der Primärdatenbank. Hierbei
wählt man aus einer Liste von bereits in der Vergangenheit erstellten Backup das entsprechende Backup aus. Falls noch kein Backup vorhanden ist, kann dies mit Hilfe des
Assistenten ebenfalls erzeugt werden. Diese Möglichkeit entspricht der Standardauswahl
und wird seitens IBM für einen problemlosen Einstand in die HADR-Thematik empfohlen.
Eine weitere Möglichkeit ist die Initialisierung der Sekundärdatenbank durch die Nutzung
einer auf dem Sekundärsystem bereits vorhandenen Datenbank.
Der
vierte Schritt entspricht bei der Auswahl der eben beschriebenen Möglichkeit, die
Sekundärdatenbank durch ein Backup zu initialisieren, der Auswahl und Angabe des entsprechenden Backups. Im darauf folgenden
fünften Schritt wird man nun dazu aufgefor-
dert, den Quellort der Backup-Datei anzugeben oder ob die ausgewählte Backup-Datei auf
das Sekundärsystem transferiert werden soll.
Im
sechsten Schritt können zusätzlich Objekte angegeben werden, die nicht im Backup
enthalten sind, wie beispielsweise benutzerdenierte Funktionen oder gespeicherte Prozeduren, die aber dennoch auf das Sekundärsystem transferiert werden sollen.
Die Festlegung der für den Aufbau der TCP/IP-Verbindung notwendigen Parameter erfolgt
im
siebten Schritt.
Hierbei sei darauf hingewiesen, dass, falls der Instanzeigentümer
/etc/services besitzt, die Dienstnamen
/etc/services auf beiden Systemen eingetragen
nicht die entsprechenden Schreibrechte für die Datei
inklusive der Ports manuell in die Datei
werden müssen.
47
Der Vorteil der Nutzung von ACR im HADR-System liegt in der automatischen Umleitung
der Anfragen der Anwendungen an das Sekundärsystem im Falle eines Ausfalls des Pri-
achten Schritt die entsprechenden Paramater eingestellt.
Die im Abschnitt 5.3.2 erwähnten Synchronisationsmodi können im neunten Schritt
märsystems. Hierzu werden im
ausgewählt werden. Darüber hinaus kann konguriert werden, nach wie vielen Sekunden
die Verbindung als fehlerhaft gewertet wird.
zehnte Schritt zeigt abschlieÿend eine Zusammenfassung der ausgewählten Einstel-
Der
lungen. Nach einer Prüfung dieser kann man entweder zu den einzelnen Schritten zurück
navigieren, um entsprechende Änderungen vorzunehmen, oder aber die Konguration abschlieÿen und die Änderungen durch den Assistenten ausführen lassen. Hat man sich für
Letzteres entschieden, erscheint eine Übersichtstabelle, auf der man die aktuellen Aktivitäten und den Status derer nachvollziehen kann. Nachdem alle Aktionen erfolgreich ausgeführt wurden, kann überprüft werden, ob HADR tatsächlich gestartet wurde und die
vorgesehene Funktionalität ausführt. Hierfür aktiviert man wie bereits am Anfang der
High Availability Disaster Recovery aus und aktiviert im erscheinenden Untermenü den Eintrag verwalten beziehungsweise manage. Es önet sich daraufhin der HADR-Statusmonitor, der den
Konguration das Kontextmenü der Primärdatenbank, wählt den Eintrag
scheinbar aktuellen Status und die laufenden Aktivitäten des HADR-Systems anzeigt.
Konguration über die Kommandozeile
Die entsprechende Konguration per Kommandozeile erfolgt ebenfalls in zehn Schritten.
Um eine optimale Vorgehensweise zu ermöglichen, ist es ratsam, sich mittels zweier Terminalfenster auf dem Primär- und Sekundärsystem zeitgleich anzumelden, um die entsprechenden Befehle relativ komfortabel absenden zu können.
Im
ersten Schritt
werden die Kongurationsparameter der Datenbank überprüft und
notfalls auf die geforderten Werte gesetzt. Gefordert ist an dieser Stelle das bereits erwähnte
archival logging. Es wird aktiviert, indem der Parameter LOGRETAIN auf recovery gesetzt
wird (siehe Listing 2). Zudem ist es erforderlich, dem Parameter LOGINDEXBUILD den
Wert On zuzuweisen, damit Operationen wie die Index-Erstellung, Index-Neuerstellung
und Reorganisation protokolliert werden (siehe
db2
Listing 3).
Listing 2: Archival Logging aktivieren
update
database
configuration
f o r DATABASE
using
logretain
recovery
db2
update
Listing 3: Protokollierung erweitern mit LOGINDEXBUILD
database
logindexbuild
Im
on
configuration
f o r DATABASE
using
zweiten Schritt erfolgt die Erstellung eines Backups (siehe Listing 4) und die Transfe-
rierung des erstellten Backups auf das Sekundärsystem. Es ist hierbei sehr praktisch, wenn
man den genauen Zeitpunkt der Backup-Erstellung erfasst, da man diesen Zeitpunkt bei
der Einspielung des Backups auf dem Sekundärsystem benötigt. Nach der Erstellung des
Backups wird dieser als TIMESTAMP bezeichnete Zeitpunkt als formatierter String angezeigt. Die Formatierung entspricht dabei der Form
YYYYMMDDHHMMSS, wobei YYYY
für das Jahr, MM für die numerische Monatsangabe, DD für die numerische Tagesangabe,
HH für Stunden, MM für Minuten und SS für Sekunden steht.
48
Listing 4: Backup einer Datenbank erstellen
db2
backup
d a t a b a s e DATABASE t o
/ p a t h / t o / backup / d i r e c t o r y
Nachdem die erstellte Backup-Datei auf das Sekundärsystem transferiert wurde, kann im
dritten Schritt diese nun auf dem Sekundärsystem eingespielt werden. Der entsprechende
Befehl ist dem
Listing 5
zu entnehmen.
Listing 5: Einspielen eines Backups
db2
restore
taken
d a t a b a s e DATABASE
at TIMESTAMP
Mit der Option
replace
replace history le
from
/ p a t h / t o / backup / f i l e / s o u r c e
history
file
wird die Datei des Recovery-Protokolls auf dem Se-
kundärsystem mit der Datei des Recovery-Protokolls aus dem Backup ersetzt. Zu jeder
Datenbank wird eine derartige Datei erstellt. Sie wird automatisch aktualisiert, wenn entsprechende Operationen durchgeführt werden. Hierunter zählen unter anderem das Sichern,
Wiederherstellen oder Manipulieren einer Datenbank oder von Tabellenbereichen oder das
Reorganisieren einer Tabelle. Die Einträge dieser Datei lassen sich mit dem Befehl
history
list
anzeigen. Bei jeder Erstellung eines Backups wird eine Kopie dieser Recovery-
Protokolldatei erstellt und dem Backup beigefügt. Für weiterführende Informationen über
die Datei des Recovery-Protokolls sei auf [IBM06a] verwiesen.
Zu diesem Zeitpunkt benden sich nun identische Datenbanken auf dem Primär- und Sekundärsystem. Im folgenden
die Nutzung von
ACR
vierten Schritt
werden die entsprechenden Parameter für
gesetzt. Hierzu ist es erforderlich, dass sowohl auf dem Primär- als
auch auf dem Sekundärsystem der
schieht durch den Befehl aus
7 auf dem Sekundärsystem.
alternate server -Parameter
modiziert wird. Dies ge-
Listing 6 auf dem Primärsystem und den Befehl aus Listing
Listing 6: Modifzieren von alternate server auf dem Primärsystem
db2
update
alternate
server
for
d a t a b a s e DATABASE
using
hostname
HOSTNAME_SECONDARY p o r t PORTNUMBER
Listing 7: Modifzieren von alternate server auf dem Sekundärsystem
db2
update
alternate
server
for
d a t a b a s e DATABASE
using
hostname
HOSTNAME_PRIMARY p o r t PORTNUMBER
Anschlieÿend müssen im
fünften und sechsten Schritt noch die Dienste und die dazu-
/etc/services auf beiden Systemen manuell eingetraIBM die Dienstnamen DB2 HADR 1 und
DB2 HADR 2 mit den dazugehörigen Portnummern 55001 und 55002 vorgeschlagen.
gehörigen Portnummern in die Datei
gen werden. Als Standard werden hier seitens
Die Einstellung der Kongurationsparameter auf dem Primärsystem erfolgt im
Schritt.
Listing 8
Wie dem
siebten
zu entnehmen ist, werden hier die HADR-Parameter ge-
setzt und eine Verbindung zur Primärdatenbank aufgebaut. Im Anschluss daran wird die
Primärdatenbank in den sogenannten
quiesce -Modus
gesetzt. Solange eine Datenbank in
diesem Modus ist, können nur privilegierte Nutzer wie beispielsweise der Datenbankadministrator auf die Datenbank zugreifen. Die Option
force connections
bedeutet, dass alle
sonstigen Verbindungen ohne Rückfrage zurückgesetzt werden. Im Anschluss daran wird
der
quiesce -Modus
wieder aufgehoben und die eigens hergestellte Verbindung zur Daten-
bank zurückgesetzt.
49
Listing 8: Modifzieren der HADR-Parameter auf dem Primärsystem
db2
update
db
cfg
f o r DATABASE
HOSTNAME_PRIMARY
db2
db2
update
update
db
cfg
f o r DATABASE
db
cfg
f o r DATABASE
HOSTNAME_SECONDARY
db2
db2
update
update
db
cfg
f o r DATABASE
db
cfg
f o r DATABASE
using
using
using
using
using
hadr_local_host
h a d r _ l o c a l _ s v c DB2_HADR_1
hadr_remote_host
h a d r _ r e m o t e _ s v c DB2_HADR_2
hadr_remote_inst
INSTANCE_SECONDARY
db2
update db c f g f o r DATABASE using
update db c f g f o r DATABASE using
connect t o DATABASE
q u i e s c e d a t a b a s e immediate f o r c e
db2
unquiesce
db2
db2
db2
db2
Im
connect
hadr_syncmode SYNC
hadr_timeout
3
connections
database
reset
achten Schritt werden die HADR-Parameter auf dem Sekundärsystem gesetzt. Die
Listing 9 zu entnehmen.
entsprechenden Befehle sind dem
Listing 9: Modifzieren der HADR-Parameter auf dem Sekundärsystem
db2
update
db
cfg
f o r DATABASE
HOSTNAME_SECONDARY
db2
db2
update
update
db
cfg
f o r DATABASE
db
cfg
f o r DATABASE
HOSTNAME_PRIMARY
db2
db2
update
update
db
cfg
f o r DATABASE
db
cfg
f o r DATABASE
INSTANCE_PRIMARY
db2
db2
update
update
db
cfg
f o r DATABASE
db
cfg
f o r DATABASE
using
using
using
using
using
using
using
hadr_local_host
h a d r _ l o c a l _ s v c DB2_HADR_2
hadr_remote_host
h a d r _ r e m o t e _ s v c DB2_HADR_1
hadr_remote_inst
hadr_syncmode SYNC
hadr_timeout
3
Die Konguration des Primär- und Sekundärsystems ist damit abgeschlossen. Im
neunten
zehnten Schritt kann nun die HADR-Funktionalität gestartet werden. Wichtig ist
Listing 10) und im
Anschluss daran das Primärsystem (siehe Listing 11) gestartet.
und
hierbei die Startreihenfolge. Zuerst wird das Sekundärsystem (siehe
Listing 10: Starten von HADR auf dem Sekundärsystem
db2
deactivate
db2
start
hadr
d a t a b a s e DATABASE
on
d a t a b a s e DATABASE
as
standby
Listing 11: Starten von HADR auf dem Primärsystem
db2
deactivate
db2
start
hadr
d a t a b a s e DATABASE
on
d a t a b a s e DATABASE
as primary
Eine weitere Möglichkeit, das HADR-System zu starten, liegt in der bereits erwähnten Erweiterungsklausel
FORCE. Bei Nutzung des Befehls aus Listing 12 wird das Primärsystem
sofort gestartet, auch wenn keine Verbindung zum Sekundärsystem hergestellt wurde. Das
bringt Vorteile, wie sie bereits in
Abschnitt 5.3.1 erläutert wurden, aber auch Nachteile
50
mit sich. Einer dieser Nachteile liegt in der Ignorierung des
autorestart -Parameters.
Die-
ser Parameter regelt das Verhalten des DBMS im Falle eines abnormalen Beendens der
Datenbank. Ist der
autorestart -Parameter
auf
on
gesetzt, startet das DBMS bei Bedarf
automatisch das Dienstprogramm zum Neustarten der Datenbank. Dieses Verhalten ist
insbesondere dann von Vorteil, wenn eine Recovery nach einem Systemabsturz durchgeführt werden muss. Andernfalls muss die Datenbank durch einen expliziten Aufruf des
Dienstprogramms durch die jeweilige Anwendung oder des Recovery-Programms neugestartet werden.
Listing 12: Starten von HADR mit der Erweiterungsklausel FORCE
db2
deactivate
db2
start
hadr
d a t a b a s e DATABASE
on
d a t a b a s e DATABASE
as primary by
force
Eine abschlieÿende Übersicht über die erwähnten Kongurationsparameter ist in der folgenden
Tabelle 14 zu nden.
Parametername Erklärung
logretain
Gibt an, ob Protokolle beibehalten werden sollen oder nicht. Der
Parameter muss auf
recovery
gesetzt sein, wenn
archival logging
aktiviert sein soll.
logindexbuild
Gibt
an,
ob
Operationen
wie
die
Index-Erstellung,
Index-
Neuerstellung und Reorganisation protokolliert werden oder nicht.
hostname port
Gibt den Hostnamen und den zugehörigen Port an.
hadr local host
Gibt den Namen oder die IP-Adresse des lokalen Hosts an. Dieser
wird für die Kommunikation der beiden Systeme benötigt.
hadr local svc
Gibt den Dienstnamen oder die zugehörige Portnummer an, für
die entsprechende Verbindungsanfragen auf dem lokalen Host akzeptiert werden.
hadr remote host
Gibt den Namen oder die IP-Adresse des fernen (remote) Hosts an.
Dieser wird für die Kommunikation der beiden Systeme benötigt.
hadr remote svc
Gibt den Dienstnamen oder die zugehörige Portnummer an, für die
entsprechende Verbindungsanfragen auf dem fernen (remote) Host
akzeptiert werden.
hadr remote inst
Gibt den Namen der Instanz auf dem fernen (remote) Host an.
hadr syncmode
Gibt den aktivierten Synchronisationsmodus an. Dieser Parameter
kann die Werte SYNC, NEARSYNC oder ASYNC annehmen.
hadr timeout
Gibt die Wartezeit in Sekunden an, bis eine Anfrage als fehlerhaft
gewertet wird.
Tabelle 14: Übersicht über die Kongurationsparameter
6.3 Monitoring, Verwaltung und Pege
Es gibt verschiedene Möglichkeiten, den aktuellen Status der HADR-Umgebung abzurufen,
das HADR-System zu verwalten oder zu pegen. Der Abschnitt gibt einen kurzen Einblick
in die folgenden Methoden zum Monitoring, zur Verwaltung und Pege:
•
Snapshot,
51
•
db2pd,
•
HADR-Statusmonitor der Steuerzentrale,
•
administrative Views und Tabellen sowie
•
db2diag.
Hinter dem Begri
wird. Dieser ist in
db2
get
Snapshot verbirgt sich ein Befehl, der auf der Kommandozeile abgesetzt
Listing 13 dargestellt.
Listing 13: Snapshot-Befehl
snapshot
for
database
on
DATABASE
Die daraufhin dargestellten Informationen entsprechen den aktuellen Statusinformationen
der HADR-Umgebung. So wird angezeigt, welche Rolle das System inne hat, auf welchem
der Snapshot-Befehl abgesetzt wurde (also ob Primär- oder Sekundärsystem). Auch der
aktuelle Status, der gewählte Synchronisationsmodus, der aktuelle Verbindungsstatus und
die Anzahl der verlorenen Heartbeats werden angezeigt wie auch Informationen über festgeschriebene Kongurationsparameter, die in
Abschnitt 6.2 bereits erklärt wurden. Zudem
ndet man Informationen über die aktuelle Protokolldatei, die aktuelle Protokollseite und
die aktuelle Log Sequence Number (LSN) auf dem Primär- und Sekundärsystem. Letztlich
wird der derzeit vorhandene Dierenzwert zwischen dem Sekundär- und dem Primärsystem in Bytes angezeigt. Dieser Wert gibt an, um wie viel Bytes das Sekundär- hinter dem
Primärsystem zurückliegt. Im optimalen Fall ist dieser Wert gleich Null.
Den gleichen Informationsbestand zeigt in anders aufbereiteter Form der Befehl aus
ting 14.
Listing 14:
db2pd
−d
DATABASE
Lis-
db2pd -Befehl
−h a d r
Der HADR-Statusmonitor der Steuerzentrale stellt den gleichen Informationsbestand wie
die zwei vorhergehenden Befehle in grasch aufbereiteter Form zur Verfügung. Zudem
ermöglicht der Statusmonitor das Starten und Stoppen der HADR-Funktionalität auf dem
jeweiligen System. Auch das Ausführen eines geplanten oder erzwungenen Takeovers ist
(per Klick) möglich. Durch das Einstellen der Aktualisierungsrate des Statusmonitors kann
der Prozess der Datenreplizierung verfolgt werden. Der Nachteil des HADR-Statusmonitors
liegt wie gewohnt in seiner behäbig wirkenden Ausführbarkeit.
Eine weitere Möglichkeit zum Auslesen der aktuellen Informationen über den Zustand der
HADR-Umgebung bieten die administrativen Views und Tabellen. Über diese ist es möglich, mit einfachen SQL-Abfragen die aktuellen Informationen in entsprechend aufbereiteter Form abzufragen. Den Inhalt dieser Views und Tabellen kann man auch bequem über
die Steuerzentrale einsehen. Auch eine Änderung der Paramater der HADR-Umgebung
ist über die Steuerzentrale wie auch die Kommandozeile möglich. Es sei hierbei auf den
Abschnitt 6.2 verwiesen.
Die vierte Möglichkeit zur Überwachung und Verwaltung der HADR-Umgebung bietet die
db2diag -Protokolldatei. In dieser ndet man zwar nicht den Informationsbestand, den man
über die bisher betrachteten Befehle und Programme erhält, sie eignet sich aber hervorragend zur Fehlersuche und -analyse. So kann anhand der Einträge in dieser Protokolldatei
beispielsweise nachvollzogen werden, wann und weshalb sich der HADR-Status geändert
hat.
52
6.4 Verhalten in Ausfallszenarien
Während der Laufzeit der Replikationsumgebung kann es zu verschiedenen Ausfallszenarien kommen, in denen die HADR-Umgebung verschiedene Verhaltensweisen zeigt. Der
Administrator hat je nach Art des Ausfalls unterschiedliche Vorgänge einzuleiten, damit
die Erreichbarkeit eines Primärsystems gewährleistet ist. Dies ist gerade aufgrund der fehlenden Funktionalität des automatisierten Takeovers (vgl.
Abschnitt 5.3.1)
von hoher
Bedeutung. Es werden im Fortlauf die folgenden Ausfallszenarien betrachtet:
•
Ausfall des Primärsystems,
•
Ausfall des Sekundärsystems sowie
•
Wartungsmaÿnahmen.
6.4.1 Ausfall des Primärsystems
Der Ausfall des Primärsystems zieht verschiedene Konsequenzen nach sich. Abhängig vom
ausgewählten Synchronisationsmodus kann es zu Datenverlusten kommen. Dies kann insbesondere genau dann der Fall sein, wenn der asynchrone Synchronisationsmodus ausgewählt
wurde, da die Transaktionen auf dem Primärsystem auch dann erfolgreich verarbeitet wurden, wenn die entsprechenden Protokolleinträge das Sekundärsystem gar nicht erst erreicht
haben.
Die nun durch den Administrator auszuführenden Schritte sind abhängig vom Status der
HADR-Umgebung zum Zeitpunkt des Ausfalls. Benden sich die Systeme im Peer-State-
Listing 15)
Modus, so erfolgt das Anstoÿen eines manuellen Takeovers (
auf dem Se-
kundärsystem. Dadurch wechselt das Sekundärsystem den Status und wird zum neuen
Primärsystem. Es übernimmt somit auch dessen Aufgaben. Durch die ACR-Funktionalität
werden die Anfragen der Anwendungen automatisch an das neue Primärsystem umgeleitet.
Listing 15: Befehl zum Ausführen eines manuell erzwungenen Takeovers auf dem Sekundärsystem
db2
takeover
hadr
on
d a t a b a s e DATABASE
by
force
Entscheidend für das weitere Vorgehen in Bezug auf das bisherige Primärsystem ist das Deaktivieren sämtlicher Funktionalitäten des bisherigen Primärsystems innerhalb der HADRUmgebung, sofern das bisherige Primärsystem noch erreichbar ist. Dies kann entweder
durch das Deaktiveren der Datenbank oder dem Stoppen der Instanz erfolgen. Hierfür ist
unbedingt Sorge zu tragen, da es sonst zu Konikten (wie beispielsweise dem Vorhandensein zweier Primärsysteme) innerhalb der Replikationsumgebung kommen kann, die nicht
eigenständig durch HADR aufgelöst werden können. HADR selbst sorgt bei entsprechender Belegung bestimmter Parameter (siehe hierzu
Abschnitt 6.2) dafür, dass es nicht zu
einer derartigen Koniktsituation kommen kann, indem es die Aktivierung der Datenbank
auf dem bisherigen Primärsystem untersagt.
Als nächstes erfolgt die Reintegration des bisherigen Primärsystems. Hierfür ist eine Behebung des Fehlers oder der Fehler erforderlich, die zum Ausfall des Systems geführt haben.
Ist die Behebung erfolgt, kann der Befehls aus
Listing 16 auf dem bisherigen Primärsys-
tem abgesetzt werden. Durch diesen wird es als Sekundärsystem in die HADR-Umgebung
eingebunden.
53
Listing 16: Befehl zum Einbinden des bisherigen Primärsystems als Sekundärsystem in die
HADR-Umgebung
db2
start
hadr
on
d a t a b a s e DATABASE
as
standby
Sobald sich die HADR-Umgebung wieder in der Peer-State-Phase bendet, kann die bisherige Rollenverteilung durch das Absenden des Befehls aus
Listing 17 auf dem aktuellen
Sekundärsystem wiederhergestellt werden.
Listing 17: Befehl zum Ausführen eines manuellen Takeovers auf dem Sekundärsystem
db2
takeover
hadr
on
d a t a b a s e DATABASE
Bendet sich die HADR-Umgebung zum Zeitpunkt des Ausfalls des Primärsystems nicht im
Peer-State-Modus, bedeutet dies, dass möglicherweise das Sekundärsystem nicht über den
aktuellen Datenbestand des Primärsystems verfügt. Erfolgt in diesem Fall das Absenden
des Befehls aus
Listing 15, hat dies einen Datenverlust zur Folge. Aus diesem Grund sollte
jeder Versuch unternommen werden, den Fehler auf dem Primärsystem zu beheben und
dieses wieder als Primärsystem in die HADR-Umgebung einzubinden. Dies hat zwar eine
entsprechende Ausfallzeit zur Folge, verhindert jedoch den bereits erwähnten Datenverlust,
da noch nicht alle Daten auf das Sekundärsystem zum Ausfallzeitpunkt repliziert wurden.
Entscheidet man sich dennoch für einen erzwungen Takeover und funktioniert damit das
bisherige Sekundärsystem zum neuen Primärsystem um, ist die Reintegration des bisherigen Primärsystems nur in Form des Einspielens eines Backups des bisherigen Sekundärsystems möglich. Das Problem hierbei ist, dass das bisherige Primärsystem einen aktuelleren
Datenbestand als das bisherige Sekundärsystem hat. In dieser Konstellation ist eine Einbindung als Sekundärsystem nicht möglich. Die Schritte zur Reintegration des bisherigen
Primärsystems sind das Erzeugen eines aktuellen Backups des aktuellen Primärsystems,
das Einspielen dessen auf dem bisherigen Primärsystem mit der
das Absenden des Befehls aus
Rollforward -Option
und
Listing 16 auf dem bisherigen Primärsystem. Sobald sich
die HADR-Umgebung im Peer-State-Modus bendet, kann die bisherige Rollenverteilung
wiederhergestellt werden.
6.4.2 Ausfall des Sekundärsystems
Der Ausfall des Sekundärsystems ist auf den ersten Blick weniger problematisch als der
Ausfall des Primärsystems. Ein Nachteil, der entsteht, ist, dass in der Zeit, in der das
Sekundärsystem nicht zur Verfügung steht, keine Datenänderungen auf dieses repliziert
werden können. Das Primärsystem nimmt von der Nicht-Erreichbarkeit des Sekundärsystems Kenntnis, da keine Statusmeldungen mehr auf dem Primärsystem ankommen. Dies
führt im Fortgang dazu, dass das Primärsystem den HADR-Status
disconnected
annimmt,
d.h. keine Verbindung mehr zum Sekundärsystem hat. Sobald das Sekundärsystem wieder
verfügbar ist, muss die HADR-Umgebung in gewohnter Vorgehensweise mit den bekannten
Befehlen neu gestartet werden. Sollte diese Vorgehensweise nicht zum Erfolg führen, bleibt
als letzte Instanz die Möglichkeit des Einspielens eines Backups des Primärsystems auf dem
Sekundärsystem mit der
Rollforward -Option erhalten. Danach kann die HADR-Umgebung
wie gewohnt gestartet werden.
54
6.4.3 Wartungsmaÿnahmen
Die Wartung des Primärsystems erfolgt mittels eines geplanten Takeovers. Durch diesen
wird das aktuelle Primärsystem zum neuen Sekundärsystem und kann aus der HADRUmgebung ausgeklinkt werden. Das bisherige Sekundärsystem wird zum neuen Primärsystem und übernimmt für die Ausfallzeit des bisherigen Primärsystems dessen Aufgaben.
Nach erfolgter Wartung des bisherigen Primärsystems kann dieses wieder als Sekundärsystem in die HADR-Umgebung eingeklinkt werden. Benden sich die beiden Systeme im
Peer-State-Modus, kann die eigentliche Rollenverteilung der beiden Systeme wiederhergestellt werden.
6.5 Erprobung auf einem Testsystem
Nach der Auswahl des HADR-Verfahrens für das vorliegende Beispiel und damit für die
konkrete Replikationsumgebung erfolgte die Erprobung des Verfahrens auf einer Testumgebung, die die eigentliche Systemumgebung simulierte. Zu diesem Zwecke wurden auf einem
Server zwei virtuelle Server erstellt, die die Bezeichnungen
ten. Auf der
replidb1,
replidb1
und
replidb2
inne hat-
die als Primärsystem fungierte, wurde wie auch auf der
die die Funktion des Sekundärsystems übernahm, jeweils eine Testdatenbank für
replidb2,
MyCoRe
erstellt. MyCoRe stellte in der Testumgebung die Anwendung dar, die für die Erzeugung
von Anfragen an die Datenbankserver zuständig war. MyCoRe ist ein System zur Entwicklung von Dokumenten- und Publikationsservern, Archivanwendungen, Sammlungen von
Digitalisaten oder vergleichbaren Repositorien. An der Entwicklung von MyCoRe ist unter anderem auch die Thüringer Universitäts- und Landesbibliothek beteiligt. Für weitere
Informationen zu dieser Anwendung sei auf [MyC09] verwiesen.
Im Rahmen der Erprobung wurden die folgenden Vorgänge und Szenarien getestet:
•
Konguration der HADR-Umgebung,
•
Starten und Stoppen der HADR-Funktionalität auf dem Sekundär- und Primärsystem,
•
Takeover (geplant) zur Wartung des Primärsystems,
•
Takeover (erzwungen) bei Ausfall des Primärsystems durch höhere Gewalt,
•
Takeover (erzwungen) bei Ausfall des Primärsystems nach Verlust der Verbindung,
•
Verhalten des Primärsystems bei Ausfall des Sekundärsystems,
•
Reintegration des Primärsystems nach Ausfall durch höhere Gewalt und anschlieÿenden erzwungenen Takeover,
•
Reintegration des Primärsystems nach Verlust der Verbindung und anschlieÿenden
erzwungenen Takeover sowie
•
Funktionalität von ACR in Verbindung mit einem Connection Pool.
Während der Erprobung wurde teilweise Last auf dem Datenbankserver erzeugt, um das
Verhalten der HADR-Umgebung unter diesen Umständen erproben zu können und die
55
ACR-Funktionalität zu überprüfen. Hierzu kam ein Lastprogramm auf Basis von OpenSource-Werkzeugen zum Einsatz, für das im Rahmen einer Studienarbeit [Sch09] an der
Thüringer Universitäts- und Landesbibliothek Lasttest-Szenarien für MyCoRe entwickelt
wurden.
56
7
Zusammenfassung und Ausblick
Im Rahmen dieser Studienarbeit wurden drei verschiedene Replikationsverfahren unter dem
DBMS
IBM DB2 LUW
mit dem Ziel untersucht, eine Hochverfügbarkeitslösung für die
Datenbankserver der Digitalen Bibliothek der Friedrich-Schiller-Universität Jena und des
Freistaates Thüringen zu realisieren. Die Notwendigkeit für dieses Vorhaben begründet sich
in der bisherigen Vorgehensweise zur Sicherung des Datenbestandes. Durch die Erfassung
des Ausgangszustandes wurde deutlich, dass bei einem Ausfall des Primärsystems auf dem
dann zum Einsatz kommenden Sekundärsystem kein identischer Datenbestand vorzunden
beziehungsweise herstellbar wäre. Dies liegt unter anderem daran, dass nur einmal pro Tag
durch eine nächtliche Sicherung ein Online-Backup auf dem Sekundärsystem eingespielt
wird und damit alle Transaktionen verloren gehen, die nach dem Online-Backup auf dem
Primärsystem ausgeführt wurden.
Als Grundlage für die Untersuchung der verschiedenen Replikationsverfahren folgte nach
der Feststellung des Ausgangszustandes und der Denierung des Zielzustandes die Erfassung theoretischer Grundlagen zur Hochverfügbarkeit und Replikation. Hierbei wurde der
Hochverfügbarkeitsbegri samt Einteilung in Verfügbarkeitsklassen beleuchtet. Der Einteilung der Replikationsverfahren in hardware- und softwarebasierte Verfahren folgten Ausführungen über die Klassikation von Replikationsverfahren.
Der Schwerpunkt der Untersuchungen lag auf den Replikationsverfahren der SQL-Replikation, Q-Replikation und HADR. In diesen wurden die zentralen Unterschiede der Verfahren
deutlich, aber auch die Gemeinsamkeiten vor allem der SQL- und Q-Replikation konnten aufgezeigt werden. Der wesentlichste Unterschied zwischen den beiden letztgenannten
Verfahren liegt in der Transferierung der Änderungsinformationen: Während bei der SQLReplikation eine Zwischenspeichertabelle als verbindendes Kommunikationselement dient,
übernimmt diese Aufgabe bei der Q-Replikation das Warteschlangensystem. Dieser Unterschied trägt auch dazu bei, dass in Bezug auf die Performance die Q-Replikation deutliche Vorteile gegenüber der SQL-Replikation besitzt. Ein deutlicher Unterschied bezüglich
der Architektur der Replikationsumgebung konnte zwischen diesen beiden Verfahren und
HADR registriert werden. Unter HADR werden die Änderungsinformationen direkt von
dem Primär- auf das Sekundärsystem durch das als Log Shipping bezeichnete Verfahren
transferiert. Darin liegt auch der Grund für den groÿen Vorteil des Verfahrens: Der Replikationsbereich umfasst eine groÿen Umfang an Operationen; SQL- und Q-Replikation
unterstützen in diesem Punkt deutlich weniger Operationen. Dieser Unterschied führt auch
zu der Erkenntnis, dass HADR für umfangreiche, die Gesamtheit betreende Replikationsumgebungen besser geeignet ist, die anderen beiden Verfahren ihre Vorteile aber geltend
machen, wenn es um die Replizierung spezieller Untermengen oder aber die Replizierung
auf mehr als nur ein Sekundärsystem geht.
Nach der Beleuchtung der Architekturen, Funktionsweisen und spezischen Eigenschaften
der Replikationsverfahren wurde im Rahmen einer Anforderungsanalyse das geeignetste
Verfahren für das konkrete Anwendungsbeispiel der Digitalen Bibliothek gesucht. Hierfür
wurden eine Vielzahl an Anforderungskategorien aufgestellt und anhand dieser die drei
Replikationsverfahren mittels Eignungsnoten bewertet. Als Ergebnis der Betrachtung (der
Eignungsnoten) wurde das HADR-Verfahren als das Geeignetste ausgewählt.
Im Fortgang wurde das HADR-Verfahren in Bezug auf die Konguration hin betrachtet und
die Möglichkeiten zum Monitoring, zur Verwaltung und Pege genannt. Zur Überprüfung
der Eignung des Verfahrens für das konkrete Anwendungsbeispiel und zur Festigung der
Auswahlentscheidung folgten Erprobungsdurchläufe auf einem Testsystem. Hierzu wurden
57
die wichtigsten Szenarien auch unter Erzeugung zusätzlicher Last auf dem Datenbankserver
simuliert.
Zum Zeitpunkt der Fertigstellung dieser Studienarbeit war das HADR-Verfahren im Falle
der Digitalen Bibliothek noch nicht im produktiven Einsatz. Dieses ist demnach im Nachgang der Studienarbeit noch umzusetzen. Auch die Automatisierung des Takeover könnte
Bestandteil einer weiteren Betrachtung sein, da dies in der verwendeten DB2-Version nicht
unterstützt wird. Es gibt hierfür einige Möglichkeiten, wie die Automatisierung praktisch
umgesetzt werden könnte. Als Beispiele seien an dieser Stelle die
(TSA)
[IBM07b] oder das Open-Source-Projekt
58
Tivoli System Automation
Linux HA [Rob09] genannt.
Glossar
ACID
ACID steht für Atomicity, Consistency, Isolation und Durability und beschreibt damit die in einem DBMS für Änderungsoperationen geforderten Transaktionseigenschaften.
ACR
Automatic Client Reroute. Funktionalität, die das automatische Weiterleiten von Datenbankanfragen von einem Primär- auf ein Sekundärsystem ermöglicht. ACR kann
unter anderem mit HADR, SQL- und Q-Replikation kombiniert werden.
AEC
Availability Environment Classication. Von der HRG entwickelte Klassikation der
Hochverfügbarkeit in sechs verschiedene Verfügbarkeitsklassen.
Appliance
Hardwarekomponente, die für eine spezische Funktionalität konguriert ist und darauf abzielt, dass für den Betrieb dieser möglichst keine Eingrie des Benutzers erforderlich sind.
Apply-Programm
Hilfsprogramm des DBMS bei der SQL-Replikation. Es dient zum Verarbeiten von
durchgeführten Änderungsoperationen auf registrierten Zieleinheiten.
Archival logging
Archivprotokollierung. Verfahren zur Protokollierung. Protokolleinträge werden fortlaufend in neue Protokolldateien geschrieben, die wiederum archiviert werden und zur
Wiederherstellung und Zurücksetzen von Änderungsoperationen verwendet werden
können.
Backup
Sicherungsdatei(en) eines bestimmten Objektbereichs, die zur Wiederherstellung der
Systemumgebung beziehungsweise des bestimmten Objektbereichs im Fehlerfall dient
/dienen.
BLOB
Binary Large Object. Datentyp, der eine Bytefolge enthält, deren Gröÿe bezogen auf
IBM DB2 LUW im Bereich zwischen 0 Byte und 2 Gigabyte (minus 1 Byte) liegt.
BLOBs können beispielsweise Bild-, Audio- oder Videodaten enthalten.
Buerpool
Puerpool. Physischer Speicherbereich im Arbeitsspeicher des Datenbankservers, der
beim Lesen von Daten von der Festplatte oder beim Ändern von Daten zum Zwischenspeichern von Tabellen- und Indexdatenseiten verwendet wird [IBM06b].
CA-Tabelle
Change-Aggregate-Tabelle.
Replikationszieleinheitstyp, der zum Ablegen von Infor-
mationen, die auf dem Informationsbestand der Zwischenspeichertabellen beruhen,
dient. CA-Tabellen gehören zum Replikationszieleinheitstyp der Ergebnistabellen.
59
Capture-Programm
Hilfsprogramm des DBMS bei der SQL-Replikation. Es dient zum Aunden von
durchgeführten Änderungsoperationen auf registrierten Quelleinheiten.
CCD-Tabelle
Consistent-Change-Data.
Replikationszieleinheitstyp zum Ablegen von Protokollin-
formationen. CCD-Tabellen können auch zur Prüfung von Protokollinformationen
eingesetzt werden.
Circular logging
Umlaufprotokollierung. Verfahren zur Protokollierung. Protokolleinträge werden fortlaufend in eine bestimmte Anzahl von Protokolldateien geschrieben. Es kommt bei
diesem Verfahren zur zyklischen Überschreibung und damit Wiederbenutzung von
Protokolldateien.
CLOB
Character Large Object.
Datentyp, der eine Zeichenfolge enthält, deren Gröÿe im
Bereich zwischen 0 Byte und 2 Gigabyte (minus 1 Byte) liegt.
CLR
Commit-Log-Record. Entspricht genau dem Protokolleintrag, der die erfolgreiche Durchführung einer (Änderungs-)Transaktion beschreibt.
Commit
Ein Commit signalisiert die erfolgreiche Verarbeitung einer Änderungstransaktion.
D-Eigenschaften
Das Ergebnis dieser Änderungstransaktion ist gemäÿ der ACI
dauerhafter Natur (
Durability/Dauerhaftigkeit).
von
Connection Pool
Verwaltungssystem für Datenbankverbindungen. Es werden eine Reihe von Datenbankverbindungen zur Verfügung gestellt und bereit gehalten, die bei Bedarf zur
Ausführung von SQL-Anweisungen in Anspruch genommen werden. Der Vorteil eines Connection Pools liegt in der Vermeidung der kostenintensiven Vorgänge wie dem
wiederholten Aufbau und dem Schlieÿen einer Datenbankverbindung. Nicht in Verwendung stehende Verbindungen werden nicht geschlossen, sondern für eine spätere
Benutzung geparkt. Detailierte Informationen sind auch unter [MSH02] zu nden.
Controller
Elektronische Einheit, die Bestandteil einer Hardwareumgebung ist und unterschiedliche Vorgänge steuert oder regelt.
Data-Warehouse-System
Datenlager.
Zentrale, integrierte Datensammlung, die zur Analyse und Auswertung
einer Vielzahl an Informationen dient.
Datenblockung
Möglichkeit zur Steuerung und Optimierung des Replikationsdurchlaufs bei der SQLReplikation.
60
Datenussrichtung
Bezeichnet die Richtung, in welcher sich die Daten zwischen verschiedenen Systemen
bewegen. Es wird grundsätzlich zwischen der unidirektionalen, bidirektionalen und
der peer-to-peer Datenussrichtung unterschieden.
DB2 LUW
DB2 Linux, Unix and Windows. Datenbankmanagementsystem der Firma IBM.
DBMS
Datenbankmanagementsystem.
DDL
Data Description Language
beziehungsweise
Data Denition Language. Datendeni-
tionssprache (CREATE, ALTER, DROP).
DML
Data Manipulation Language.
Datenbearbeitungssprache (SELECT, INSERT, DE-
LETE oder UPDATE).
Ereignissteuerung
Typ des Durchführungsintervalls bei der SQL-Replikation, bei dem ein Replikationsdurchlauf beispielsweise bei Eintreten eines bestimmten Ereignisses gestartet wird.
Fix Pack
Ein Fix Pack ist eine Sammlung von verschiedenen Korrekturmaÿnahmen, um vorhandene Fehler in Programmen zu beheben.
HADR
High Availability Disaster Recovery.
Replikationsverfahren der Firma IBM für das
DBMS DB2 LUW. Das Verfahren dient der Realisierung einer Hochverfügbarkeitslösung und verwendet das sogenannte Log Shipping zur Transferierung von Protokoll-einträgen.
Heartbeats
Nachrichten, die zwischen zwei Systemen verschickt werden, um die gegenseitige
Erreich- beziehungsweise Verfügbarkeit der Systeme zu überprüfen.
Hibernate
Ein Open-Source-Persistenz-Framework für Java mit der Funktionalität eines objektrelationalen Mapping-Werkzeuges.
Hochverfügbarkeit
Die Fähigkeit eines Systems, einen uneingeschränkten Betrieb auch und gerade bei
Ausfällen desselben oder einer seiner Komponenten zu gewährleisten, ohne dass es
eines unmittelbaren menschlichen Eingris erfordert.
HRG
Harvard Research Group.
Ein im Marktforschungs- und Beratungssegment tätiges
Unternehmen.
61
Intervallsteuerung
Typ des Durchführungsintervalls bei der SQL-Replikation, bei dem ein Replikationsdurchlauf jede x Minuten gestartet wird.
Konsistenz
Zustand, in dem die Widerspruchsfreiheit innerhalb der Datenbank gewährleistet ist.
Das bedeutet, dass alle in der Datenbank enthaltenen Daten die Konsistenzbedingungen erfüllen. Konsistenz ist eine der vier geforderten ACID-Eigenschaften.
Kontinuierliche Replikation
Typ des Durchführungsintervalls bei der SQL-Replikation, bei dem ein Replikationsdurchlauf genau dann und somit zeitnah gestartet wird, wenn Daten zur Replizierung
vorliegen.
Latenz
Zeit der Verzögerung, bis eine auf dem Primärsystem durchgeführte Änderungsoperation auf dem Sekundärsystem repliziert ist.
Linux Red Hat
Bekannte Linux-Distribution der Firma Red Hat.
Linux-HA
Linux High Availability. Open-Source-Produkt zur Realisierung einer Hochverfügbarkeitslösung unter Linux. Linux-HA kann unter anderem dazu eingesetzt werden, den
Takeover bei HADR zu automatisieren.
Log Shipping
Verfahren zur Transferierung von Protokolleinträgen von einem Primär- auf ein Sekundärsystem. Die Protokolleinträge werden auf dem Sekundärsystem nachgefahren,
sodass dieses nach dem Prozess des Nachfahrens über den entsprechenden Aktualitätsgrad des Primärsystems verfügt. Das Verfahren des Log Shipping kommt bei
HADR zum Einsatz.
Logging
Protokollierung.
Verfahren zur Aufzeichnung des Zeitpunktes, der Reihenfolge und
des von der Operation betroenen Elements. Protokollierung ist wichtig für das Wiederherstellen und Zurücksetzen von Änderungsoperationen.
Logical Log File
Protokolldatei. Protokolleinträge werden in einer Protokolldatei abgelegt, die wiederum auf der Festplatte abgelegt wird.
Logical Log Puer
Protokollpuer.
Physischer Speicherbereich im Arbeitsspeicher des Datenbankser-
vers, in dem Protokolleinträge vor dem Schreiben in eine Protokolldatei abgelegt
werden.
62
Logical Log Record
Protokolleintrag. Protokolleinträge enthalten Informationen über das modizierte Tupel, wie beispielsweise den Zustand vor und nach der Änderungsoperation.
LSN
Log Sequence Number.
Eine LSN dient der eindeutigen Identizierung von entspre-
chenden Protokolleinträgen in einer Protokolldatei.
Master
Ein aktiv agierender Teilnehmer in Form eines Rechners in einem Rechnerverbund.
Ein Master-Rechner besitzt spezielle Zugrisrechte, um auf Datenmengen auf SlaveRechnern unaufgefordert zugreifen zu können.
Monitoring
Prozess des Überwachens und Prüfens einer Systemumgebung unter anderem im Hinblick auf die Leistung, Performance und Stabilität der jeweiligen Systemumgebung.
MyCoRe
My Content Repository. MyCoRe ist ein System zur Entwicklung von Dokumentenund Publikationsservern, Archivanwendungen, Sammlungen von Digitalisaten oder
vergleichbaren Repositorien.
Patch
Kleines Software-Paket, welches Maÿnahmen zur Fehlerbehebung für ausführbare
Programme beinhaltet.
Primärsystem
Aktives System in einer Replikationsumgebung, welches die Anfragen des Anwendungsservers verarbeitet und die entsprechenden Antworten versendet.
Q-Apply-Programm
Hilfsprogramm des DBMS bei der Q-Replikation. Es dient zum Verarbeiten von
durchgeführten Änderungsoperationen auf registrierten Zieleinheiten. Q-Apply-Programme sind multithread-fähig, d.h. sie können Verarbeitungsschritte parallel ausführen.
Q-Capture-Programm
Hilfsprogramm des DBMS bei der Q-Replikation. Es dient zum Aunden von durchgeführten Änderungsoperationen auf registrierten Quelleinheiten.
Q-Replikation
Replikationsverfahren der Firma IBM unter anderem für das DBMS DB2 LUW. Die
Besonderheit des Verfahrens liegt in der Verwendung der Warteschlangensysteme,
durch deren Hilfe die Änderungsoperationen auf den Quelleinheiten in Form von
Messages auf die Zieleinheiten repliziert werden.
63
Rack
Ein Rack ist eine Art Haltevorrichtung, die vorzugsweise in Rechenzentren zum Einsatz kommt. In einem solchen Rack können mehrere Rechner untergebracht werden,
die einen Rechnerverbund oder Teil eines Solchen bilden.
RAID
Redundant array of independent disks. Es dient der Organisation mehrerer physischer
Festplatten eines Rechners zu einem logischen Laufwerk. RAID-Systeme dienen unter
anderem zur Realisierung einer höheren Datensicherheit bei einem Ausfall einzelner
Festplatten oder der Erhöhung der Datendurchsatzrate.
Recovery
Wiederherstellung. Bezeichnet den Vorgang der Wiederherstellung von Daten im Fehlerfall.
Replikat
Replikat bezeichnet die Menge der Einheiten, die auf einem System zur Replizierung
beziehungsweise die auf einem System als Replikationsziel gekennzeichnet sind.
Replikation
Vorgehensweise der mehrfachen Speicherung von Daten auf (geographisch) verteilten
Speichersystemen.
Replikationsdurchlauf
Vorgang der Replizierung von Änderungsoperationen, die auf Quelleinheiten ausgeführt wurden, auf die entsprechenden Zieleinheiten.
Rollforward-Modus
Modus, der das Nachfahren von Änderungsoperationen erlaubt. Bendet sich eine
Datenbank in diesem Modus, werden alle Protokolleinträge, die die Datenbank in diesem Zeitraum erreichen, nachgefahren. Bei HADR bendet sich das Sekundärsystem
in diesem Modus. Im Rollforward-Modus sind keine anderen Datenbankanweisungen
und -zugrie möglich.
Schlüsseleigenschaft
Eigenschaft einer Entität, die zur eindeutigen Identizierung dient.
Sekundärsystem
Meist passives System in einer Replikationsumgebung, welches als Replikationsziel
für Ausfallszenarien zur Verfügung steht. Im Falle eines Ausfalls des Primärsystems
nimmt das Sekundärsystem die Rolle des Primärsystems ein und bearbeitet fortan
die einkommenden Anfragen des Anwendungsservers.
Slave
Ein passiv agierender Teilnehmer in Form eines Rechners in einem Rechnerverbund,
der ohne die Erlaubnis des Master-Rechners keine Zugriserlaubnisse auf andere
Rechner im Rechnerverbund besitzt.
64
SPoF
Single Point of Failure. Beschreibt die Eigenschaft einer Komponente, deren Ausfall
zum Ausfall des gesamten Systems führen kann.
SQL
Structured Query Language. Abfragesprache zur Denition, Abfrage und Manipulation von Daten sowie zur Rechteverwaltung und Transaktionskontrolle in relationalen
DBMS-Produkten.
SQL-Replikation
Replikationsverfahren der Firma IBM unter anderem für das DBMS DB2 LUW. Die
Besonderheit des Verfahrens liegt in der Verwendung der sogenannten Zwischenspeichertabellen, durch deren Hilfe die Änderungsoperationen auf Quelleinheiten auf die
Zieleinheiten repliziert werden.
Sun XFire
Server-Produkt der Firma SUN.
Synchronisation
Prozess des Abgleichs zweier Systeme untereinander. Ein System wird mit einem
anderen synchronisiert, indem die Datenmengen auf einen identischen Stand gebracht
werden.
Takeover
Ein Takeover bezeichnet bei HADR das Umschalten des Sekundärsystems zum neuen
Primärsystem. Das bisherige Sekundärsystem übernimmt in diesem Fall die Aufgabe
des bisherigen Primärsystems, indem es die Anfragen der Anwendungen verarbeitet.
Timestamp
Zeitstempel.
Ein Zeitstempel dient der Feststellung der möglichst genauen Ausfüh-
rungszeit beispielsweise einer Änderungsoperation oder aber einer Änderung an Kongurationsparametern.
Trigger
Datenbankobjekt, das einer Tabelle oder einem View zugeordnet ist und eine Regel
deniert. Ein Trigger führt bestimmte Aktionen aus, wenn ein vordeniertes Ereignis
eintritt.
TSA
Tivoli System Automation.
Softwareprodukt der Firma IBM. Es dient der Überwa-
chung der Verfügbarkeit von Systemen in einem Rechnerverbund. TSA ermöglicht
zudem die automatische Herstellung von gewünschten Systemzuständen.
Unique-Eigenschaft
Eigenschaft einer Entität, die dafür sorgt, dass die Werte der Entität nicht als Duplikate auftreten können.
65
UoW
Unit of Work.
Eine UoW bezeichnet eine wiederherstellbare Folge von Änderungs-
operationen in einem Anwendungsprozess und stellt damit eine andere Bezeichnung
für eine Transaktion dar.
Verfügbarkeit
Grad, zu dem die vollständige Funktionalität einer Anwendung für den Nutzer vorhanden ist.
WAL
Write Ahead Logging. Verfahrensweise bei der Durchführung von Änderungstransaktionen. Eine Änderungstransaktion kann erst dann festgeschrieben werden, wenn die
dazugehörigen Protokolleinträge erzeugt und persistent gemacht wurden.
WebSphere MQ
Softwareprodukt der Firma IBM. WebSphere MQ ist eine nachrichtenorientierte Anwendung, die im Falle der Q-Replikation für die Transferierung und Verwaltung der
entsprechenden Messages sorgt.
WebSphere MQ Messages
Nachrichten, die Informationen über die Änderungsoperationen auf der Quelleinheit enthalten. Diese Nachrichten werden über das Warteschlangensystem der QReplikation gesendet und auf dem Sekundärsystem verarbeitet.
66
Literatur
[Asc05]
John Ascho. Performance Analysis - WebSphere Information Integrator. IBM
Corp., 10.05.2005.
[GHOS96] J. Gray, P. Helland, P. O`Neil und D. Shasha. The dangers of replication and
a solution.
[Gol05]
Proc. of SIGMOD Conf, Seiten 173182, 1996.
Christoph Gollmick. Konzept, Realisierung und Anwendung nutzerdenierter
Replikation in mobilen Datenbanksystemen. Dissertation, Institut für Informatik, Friedrich-Schiller-Universität Jena, November 2005.
[Hat09]
Red Hat. Hibernate. https://www.hibernate.org/, letzter Aufruf: 01.07.2009.
[Hel04]
Andrea Held.
Oracle 10g Hochverfügbarkeit.
Addison-Wesley, 1. Auf lage, Ok-
tober 2004.
[HSS07]
A. Heuer, G. Saake und K. Sattler.
Datenbanken: Konzepte und Sprachen.
Mitp-Verlag, 3. Auf lage, 2007.
My Mother Thinks I am a DBA! Cross-Platform, Multi-Vendor, Distributed Relational Data Replication with IBM DB2 DataPropagator and IBM
DataJoiner Made Easy! IBM Corp., 1. Auf lage, Juni 1999.
[IBM99]
IBM.
[IBM05]
IBM.
[IBM06a]
IBM.
WebSphere Information Integrator Q Replication: Fast Track Implementation Scenarios. IBM Corp., 1. Auf lage, April 2005.
Datenrecovery und hohe Verfügbarkeit, Handbuch und Referenz. SW TSC
Germany, Juli 2006.
[IBM06b]
IBM.
DB2 Version 9 Systemverwaltung: Optimierung.
SW TSC Germany,
August 2006.
[IBM07a]
[IBM07b]
[IBM09]
High Availability and Scalability Guide for DB2 on Linux, UNIX, and
Windows. IBM Corp., 1. Auf lage, September 2007.
IBM.
Tivoli System Automation for Multiplattforms - Installation and Conguration Guide. IBM Corp., 2.3. Auf lage, 2007.
IBM.
IBM. IBM DB2 Database für Linux, UNIX und Windows - Informationszentrale. http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp, letzter
Aufruf: 01.07.2009.
[Küs85]
Fehlererkennung und Fehlerbehandlung in Speicherungsstrukturen von Datenbanksystemen. Springer-Verlag Berlin Heidelberg, 1. Auf lage,
Klaus Küspert.
1985.
[MSH02]
[Mun09]
Stefan Middendorf, Reiner Singer und Jörn Heid.
Referenz für die JavaTM-2-Plattform.
Florian Munz.
Programmierhandbuch und
dPunkt-Verlag, 3. Auf lage, 2002.
Einsatz von Replikation.
http://wwwlgis.informatik.uni-
kl.de/archiv/wwwdvs.informatik.uni-kl.de/courses/seminar/
SS2004/ausarbeitung14.pdf, letzter Aufruf: 01.07.2009.
[MyC09]
MyCoRe. Mycore. http://www.mycore.de/, letzter Aufruf: 01.07.2009.
67
[OGT07]
[Rob09]
J. Orhanovic, I. Grodtke und M. Tiefenbacher.
rung, Handbuch und Referenz.
Alan
Robertson.
DB2-Administration: Einfüh-
Addison-Wesley, 1. Auf lage, Dezember 2007.
Linux-ha.
http://www.linux-ha.org/,
letzter
Aufruf:
01.07.2009.
[Sch09]
Oliver Schimratzki.
Leistungstests auf Basis von Open Source Werkzeugen
für das Content Repository Framework Mycore.
Studienarbeit, Institut für
Informatik, Friedrich-Schiller-Universität Jena, Mai 2009.
[UrM09]
UrMEL. Urmel - University Multimedia Electronic Library. http://www.urmeldl.de/content/below/home.xml, letzter Aufruf: 01.07.2009.
[WG03]
[Zen07]
Joachim Weiÿ und Walter Greulich. Der Brockhaus Computer und Informationstechnologie. Fachlexikon für Hardware, Software, Multimedia, Internet, Telekommunikation. Brockhaus. Leipzig, Mannheim, 1. Auf lage, 2003.
Christian Zentgraf.
Evaluation of a design for ecient log-based replication
using a pseudo-view interface over the log. Diplomarbeit, Institut für Informatik, Friedrich-Schiller-Universität Jena, November 2007.
68
Abbildungsverzeichnis
1
Ausgangszustand mit manuellem Einspielen der Datensicherung . . . . . . .
4
2
Zielzustand mit Replikation
. . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3
Anwendungsbeispiele des unidirektionalen Datenuss . . . . . . . . . . . . .
10
4
Architektur einer SQL-Replikationsumgebung . . . . . . . . . . . . . . . . .
11
5
Prozess der Erfassung einer Transaktion auf einer registrierten Quelleinheit
bei der SQL-Replikation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
14
Prozess der Verarbeitung einer Transaktion auf einer registrierten Zieleinheit
bei der SQL-Replikation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
7
Architektur einer Q-Replikationsumgebung
. . . . . . . . . . . . . . . . . .
22
8
Prozess der Erfassung einer Transaktion auf einer registrierten Quelleinheit.
23
9
Prozess der Verarbeitung einer Transaktion auf einer registrierten Zieleinheit. 24
10
Grundlegender Überblick über die Kommunikation mit den Warteschlangenmanagern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
11
Architektur einer HADR-Replikationsumgebung . . . . . . . . . . . . . . . .
28
12
Zyklus der verschiedenen Phasen des HADR-Verfahrens
. . . . . . . . . . .
29
13
Automatic Client Reroute . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
69
70
Tabellenverzeichnis
1
Verfügbarkeitsklassen der Harvard Research Group . . . . . . . . . . . . . .
2
Aufbau des Zieleinheitstypes Benutzerkopie
3
Aufbau des Zieleinheitstypes Basisergebnistabelle
4
Aufbau des Zieleinheitstypes CA-Tabelle
5
Aufbau des Zieleinheitstypes CCD-Tabelle
6
Aufbau des Zieleinheitstypes Replikat
. . . . . . . . . . . . . . . . .
7
17
. . . . . . . . . . . . . .
18
. . . . . . . . . . . . . . . . . .
18
. . . . . . . . . . . . . . . . .
19
. . . . . . . . . . . . . . . . . . . .
19
7
Erklärung der ACID-Eigenschaften . . . . . . . . . . . . . . . . . . . . . . .
28
8
Übersicht über die Synchronisationsmodi des HADR-Systems
. . . . . . . .
32
9
Vergleich der Architektur einer Replikationsumgebung
. . . . . . . . . . . .
36
10
Vergleich der Funktionsweise
. . . . . . . . . . . . . . . . . . . . . . . . . .
37
11
Vergleich des Replikationsbereichs . . . . . . . . . . . . . . . . . . . . . . . .
38
12
Vergleich der Verwaltung und Pege eines Verfahrens . . . . . . . . . . . . .
39
13
Eignungsnoten der Replikationsverfahren . . . . . . . . . . . . . . . . . . . .
44
14
Übersicht über die Kongurationsparameter . . . . . . . . . . . . . . . . . .
51
71
72
Quellcodeverzeichnis
1
Sekundärsystem eintragen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
2
Archival Logging aktivieren
. . . . . . . . . . . . . . . . . . . . . . . . . . .
48
3
Protokollierung erweitern mit LOGINDEXBUILD . . . . . . . . . . . . . . .
48
4
Backup einer Datenbank erstellen . . . . . . . . . . . . . . . . . . . . . . . .
49
5
Einspielen eines Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
6
Modifzieren von alternate server auf dem Primärsystem
49
7
Modifzieren von alternate server auf dem Sekundärsystem
. . . . . . . . . .
49
8
Modifzieren der HADR-Parameter auf dem Primärsystem
. . . . . . . . . .
50
9
Modifzieren der HADR-Parameter auf dem Sekundärsystem . . . . . . . . .
50
10
Starten von HADR auf dem Sekundärsystem
. . . . . . . . . . . . . . . . .
50
11
Starten von HADR auf dem Primärsystem . . . . . . . . . . . . . . . . . . .
50
12
Starten von HADR mit der Erweiterungsklausel FORCE . . . . . . . . . . .
51
13
Snapshot-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
14
db2pd -Befehl
52
15
. . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Befehl zum Ausführen eines manuell erzwungenen Takeovers auf dem Sekundärsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
Befehl zum Einbinden des bisherigen Primärsystems als Sekundärsystem in
die HADR-Umgebung
17
53
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
Befehl zum Ausführen eines manuellen Takeovers auf dem Sekundärsystem .
54
73
74
Erklärung
Ich erkläre, dass ich die vorliegende Studienarbeit selbstständig und nur unter Verwendung der angegebenen Quellen und Hilfsmittel angefertigt habe.
Geraberg/Jena, 01. Juli 2009
75
Herunterladen