InterBase Replication Demon - Handbuch

1. Einleitung
2. Neuerungen / Versions Historie
3. Konzepte
4. Installation
5. Konfiguration des Systems
6. erweiterte Konfigurationsmöglichkeiten
7. Die Tabellen des InterBase Replication Demon
8. Die einzelnen Tools
9. Die Demonstrations Version


[Bestellung]            [Download der DemoVersion und Dokumente]

1. Einleitung

Replikation, d.h. Abgleich von verschiedenen Datenbeständen, ist ein komplexes Thema. Am besten vermeidet man Replikation ganz, z.B. durch den Einsatz zentraler Datenbanken. In Wide Area Networks (WAN) sind jedoch nicht immer alle Verbindungen verfügbar. Dann ist ein Off-Line Betrieb einzelner Teile des WANs sinnvoll. Werden dann alle Server wieder miteinander verbunden, ist ein Abgleich notwendig.

Der InterBase Replication Demon ist ein System von Programmen, das den Abgleich von InterBase Servern ermöglicht.

Zuerst werden die Neuerungen der neuen Version beschrieben. Dann erfolgt die Beschreibung verschiedener Replikationskonzepte und deren Realisierung mit dem InterBase Replication Demon, anhand des Konfigurationswerkzeuges des InterBase Replication Demon. Abschließend werden die weiteren Tools beschrieben. Im Anhang finden Sie eine Beschreibung der Konfigurationstabellen des Replikationsdatenbankschemas. Damit ist es möglich, das System über SQL zu konfigurieren.

Da die Einrichtung einer Replikation sehr stark von den individuellen Bedürfnissen der jeweiligen Anwendung abhängt, können in diesem Handbuch nicht alle Aspekte berücksichtigt werden. Wenn in Ihrem speziellen Fall Fragen offen bleiben, wenden Sie sich bitte an uns info@sdctec.de.

2. Neuerungen / Versions Historie

2.1 Veränderungen von Version 2 nach 2.5

2.1.1 Verbesserung der Überwachungsmechanismen

Am Ende einer Replikation werden statistische Daten protokolliert, so dass an Hand dieser Information eine bessere Anpassung an die konkrete Situation durchgeführt werden kann.

Zu dem können Mails an verschiedene Empfänger je nach Abschluss einer Replikation versandt werden. Das Netzwerk muss dafür Zugriff zu einem SMTP-Server haben.

2.1.2 Weitere Neuerungen

2.2 Veränderungen von Version 1 nach Version 2

2.2.1 Dezentralisierung der Replikation

In der Version 1 des InterBase Replication Demon wurde die gesamte Replikation von einem Demon aus zentral durchgeführt. Dieser nahm Kontakt mit allen verfügbaren Servern auf.

In der neuen Version des InterBase Replication Demon wurde die Replikation dezentralisiert, d.h., auf jedem Server befindet sich ein Demon. Dieser kann nun, insbesondere bei einer Sternreplikation, die Daten unabhängig von anderen Demons abgleichen. Dabei ist sichergestellt, dass im Falle eines Rollbacks der Transaktion, die anderen Server weiter arbeiten können. Natürlich ist es bei entsprechenden Anforderungen an die Transaktionssicherheit möglich, die Konstellation gemäß Version 1 zu konfigurieren und die Replikation zentral durchzuführen.

2.2.2 Neue Tools

Die Dezentralisierung des Systems verlangt eine gute Unterstützung des Administrators bei seiner Arbeit.

Das neue System stellt einen InterBase Replication Guardian zur Verfügung, dieser überwacht die Ausführung des InterBase Replication Demon und startet ihn ggf. neu. Er handelt also analog zum InterBase Guardian. Zu dem bildet der InterBase Replication Guardian, die Schnittstelle für das InterBase Replication Terminal.

Das InterBase Replication Terminal ermöglicht die Überwachung aller im Netz befindlichen Guardians. Das Terminal zeigt den aktuellen Status eines Servers an. Bei Problemen kann so gezielt eingegriffen werden. Das Terminal erlaubt den Restart eines Demon und ggf. auch den Austausch. Dies ist z.B. bei einem Update des Systems notwendig.

3. Konzepte

3.1 Übersicht

Unter Replikation versteht man das Abgleichen und Synchronisieren der Inhalte von verschiedenen räumlich verteilten Kopien einer Datenbank. Dabei stehen die verschiedenen Kopien der Datenbank miteinander im Zusammenhang und deren Datensätze können verändert werden.

Mit der Replikation werden vorgenommene Änderungen der verschiedenen Datenbankkopien verglichen und ausgetauscht, so dass alle eingebundenen Datenbankkopien anschließend wieder über einen konsistenten Datenbestand verfügen.

Für eine erfolgreiche Replikation müssen alle Änderungen in den angeschlossenen Kopien der Datenbank festgehalten werden. Dazu wird häufig das Transaktionslogfile ausgewertet. In dieser Datei werden die Datenbank Operationen für die jeweilige Datenbank protokolliert. Die Operationen werden dann für die Replikation auf der Zielplattform wiederholt. In den meisten Produkten, die serienmäßig einen Replikationsmechanismus anbieten, wird diese Technik verwendet. Sie wird bei Informix, Sybase und MS SQL eingesetzt.

Bei InterBase kann diese Technik nicht zum Einsatz kommen, da InterBase auf Grund seiner Multigenerationsarchitektur kein Transaktionslogfile benötigt und daher einer Replikation dieses auch nicht zur Verfügung steht. Bei InterBase müssen Datenbank-Trigger benutzt werden, um Datenänderungen im Moment des Auftretens in eine Protokolltabelle für die Replikation zu sichern. Dieses Verfahren ist wesentlich flexibler und kann Plattform übergreifend implementiert werden, da mit der prozeduralen Sprache der Serverplattform gearbeitet wird. InterBase Trigger arbeiten sehr schnell, so dass das für diese Art des Protokolls übliche Gegenargument, der mangelnden Performance, nicht greift.

Die Programmierung der Trigger kann bereits Regeln für die zu replizierenden Daten beinhalten. Dieses Verfahren wird ebenfalls bei den Replikationsprodukten von Ingres und Oracle benutzt und ist beim InterBase Replication Demon für InterBase implementiert worden.

3.2 InterBase Replication Demon

Die Übertragung der geänderten Daten erfordert ein Replikationsprogramm, den InterBase Replication Demon, der das Änderungsprotokoll auswertet. Dieser Demon verbindet sich mit den über ein LAN oder WAN an der Replikation beteiligten Datenbank Servern und führt die Änderungen durch.

Eine bidirektionale Replikation erfordert ein Management zur Verarbeitung von Änderungen, die gleichzeitig an denselben Datensätzen vorgenommen wurden (Konfliktmanagement). Die Applikation muss in der Lage sein, Änderungskonflikte zu erkennen und eine geeignete Verarbeitung zur Verfügung zu stellen. Dies kann z.B. durch benutzerdefinierte Verarbeitungsregeln geschehen. Je häufiger die Replikation durchgeführt wird, desto weniger Änderungskonflikte sind zu erwarten.

Der InterBase Replication Demon bietet die Möglichkeit, Ihr individuelles Konfliktmanagement zu integrieren. In der normalen Ausführung ist ein "last write wins" Algorithmus implementiert, der der letzten Änderung an einem Datensatz den Vorrang gibt. Über nicht akzeptierte Änderungen wird in einer Konflikttabelle informiert. Werden andere Konfliktlösungsverfahren benötigt, können diese in den InterBase Replication Demon als individuelle Erweiterung integriert werden.

3.3 Funktionsumfang

3.3.1 Unterstützung mehrteiliger Primärschlüssel

Viele Replikationsprogramme brauchen einen numerischen Schlüssel, der lediglich in einem Feld verwaltet wird. Mit dem InterBase Replication Demon kann ein mehrteiliger Schlüssel verwendet werden, der auch aus alphanumerischen Werten bestehen kann, um einen Datensatz eindeutig zu identifizieren.

3.3.2 Direkter Zugriff

Die Replikation ist direkt auf der InterBase API programmiert. Somit wird nicht auf ODBC oder die Borland Database Engine (BDE) zugegriffen. Durch den Verzicht auf diese Zwischenschichten wird unnötiger Overhead verhindert.

3.3.3 Die Replikation von Blob-Feldern ist möglich.

Nicht nur "normale" Datenfelder, sondern auch der Inhalt von BLOB Feldern (Binary Large Objects), dies sind üblicherweise große Textdokumente, Bilder oder Videos können repliziert werden.

3.3.4 Anwendungsunabhängigkeit

Alle für die Replikation notwendigen zusätzlichen Datenbankstrukturen werden neben Ihre Datenbankstrukturen gestellt. Ihre Anwendung bleibt unverändert.

3.3.5 Fehlertoleranz

Sind bei einem Replikationslauf einzelne Server nicht zu erreichen, kann die Replikation trotzdem durchgeführt werden. Die betroffenen Server erhalten die entsprechenden Daten später, z.B. mit dem nächsten Replikationslauf.

3.3.6 Individuelles Konfliktmanagement

Über das Konfliktmanagement können Sie entscheiden, welche vorgenommenen Änderungen den Vorrang beim Abgleich bekommen. Eine automatische Lösung wird von den meisten Replikationssystemen abgelehnt.

Wir bieten Ihnen passend zu Ihren individuellen Anforderungen die Implementation von individuellen Konfliktlösungsstrategien.

3.3.7 Individuelle Konfigurierbarkeit

Den InterBase Replication Demon können Sie individuell nach Ihren Anforderungen konfigurieren. So können Sie z.B. festlegen, welche Server oder welche Tabellen und welche Felder eines Datensatzes repliziert werden sollen.

3.3.8 Globale Generatoren

InterBase Generatoren liefern innerhalb eines Servers eindeutige Werte. Zur Sicherstellung einer eindeutigen Vergabe von Generatorwerten im ganzen Netzwerk, wird von globalen Generatoren mit Hilfe des InterBase Replication Demon an die einzelnen Server ein jeweils eindeutiger Nummernbereich vergeben.

3.3.9 Inter- / Intranet fähig

Der InterBase Replication Demon benötigt einzig TCP/IP-Verbindungen zwischen den Servern. Daher besteht ohne weiteres die Möglichkeit der Einsatz im Internet bzw. Intranet Ihres Unternehmens.

3.3.10 zentrale Konfiguration

Insbesondere ist bei einer großen Anzahl von Servern eine zentrale Konfiguration notwendig. Dabei kann eine neue Konfiguration an einem Server (zentral) erstellt werden und dann automatisch an alle anderen Server übertragen werden.

Der InterBase Replication Guardian und das InterBase Replication Terminal ermöglicht die Überwachung des Status des InterBase Replication Demons und den Austausch der Demonen auf den einzelnen Servern im Falle eines Updates.

4. Installation

Bei der Beschreibung der Installation gehen wir davon aus, dass Sie an einem "zentralen" System arbeiten und sich alle anderen Server auf "entfernten" Systemen befinden. Das zentrale System der Konfiguration muss nicht (sofern es überhaupt existiert), der zentrale Server der Replikation sein. Am zentralen System der Konfiguration werden das InterBase Replication Terminal und ggf. Konfigurationsschablonen hinterlegt. Jeder an der Replikation beteiligte Server sollte auf dieses System zugreifen können und jeder Server sollte von diesem System erreichbar sein.

4.1 Die Programmdateien

Sofern es noch notwendig ist, installieren Sie den InterBase Server auf allen Systemen, falls Sie den InterBase Server im Bundle von uns erworben haben, verwenden Sie die Ihnen zu Verfügung gestellten Lizenzschlüssel.

Führen Sie die Installation des InterBase Replication Demon durch Aufruf des Setup- Programms auf allen an der Replikation beteiligten Servern aus. Beachten Sie die einzelnen Schritte, des Setup-Programms.

Installieren Sie dabei auf den "entfernten" Systemen den Replication Demon und den Guardian und auf Ihrem zentralen System zusätzlich die Tools & Skripts.

Dabei sind folgende Hinweise zu beachten:

Der InterBase Replication Demon setzt ein vollständig auf Hostnamen basierendes TCP/IP-Netzwerk voraus. Zu weiteren Informationen zu diesem Thema konsultieren Sie den Netzwerkadministrator oder die einschlägige Literatur.

Ob das Netzwerk und die Remote Funktionalitäten von InterBase einwandfrei arbeiten, können Sie mit dem InterBase Communications Diagnostic Programm verifizieren.

Der Setup installiert im einzelnen:

rpModul.dll im InterBase/Bin Verzeichnis, eine UDF-Erweiterung Ihres InterBase Servers bzw. beim Einsatz von InterBase 6 im Verzeichnis InterBase/UDF.
rpDemon.exe den eigentlichen InterBase Replication Demon, standardmäßig im Verzeichnis c:\Programme\SDCTec\IBRDemon
rpDemon.ini enthält im wesentlichen den lokalen Pfad zur Datenbank, damit der Demon einen Connect zu seiner Konfiguration ausführen kann.
rpGuard.exe den InterBase Replication Guard im Verzeichnis des Demon
und zusätzlich auf Ihrem zentralen Konfigurationssystem
rpConfig.exe das Konfigurationsprogramm im Verzeichnis des Demon
rpTerminal.exe das InterBase Replication Terminal
rpTables.sql, das SQL-Script zum Anpassen Ihres Datenbankschemas
rpManual.doc, dieses Dokument

4.2 Datensicherung

Wichtig: Bevor Sie das System um die Replikation erweitern, machen Sie sich bitte eine Datensicherung und schaffen so eine Entwicklungsumgebung. Installieren Sie die Replikation erst in Ihrem produktiven System, wenn Sie Ihre Konfiguration ausreichend getestet haben. Wir übernehmen für alle Softwarehersteller keine Haftung für verlorengegangene Daten und sich daraus ergebende Folgen.

4.3 Erweiterung des Datenbankschemas

Nachdem die Programmdateien installiert sind, müssen Sie Ihr Datenbankschema um die für die Replikation notwendigen Tabellen und Prozeduren erweitern. Dazu dient das Script rpTables.sql, das Sie zusammen mit den Tools im Verzeichnis des InterBase Replication Demon auf Ihrem zentralen System installiert haben.

Starten Sie dazu das Konfigurationswerkzeug rpConfig.exe und bauen Sie über Datei | DB-Connect eine Verbindung zur Datenbank auf.

Werden dann die Konfigurationstabellen der Replikation nicht gefunden, fordert Sie das Werkzeug auf, das Replikationsskript anzuwenden.

Bestätigen Sie dies, laden Sie das Skript mit und starten Sie dann die Ausführung des Skripts mit

Jetzt kann Ihre Datenbank für die Replikation konfiguriert werden.

Sie können das Script auch mit Hilfe von InterBase Windows ISQL oder der IBConsole ausführen. Passen Sie dazu in der ersten Zeile das Connect Statement an und führen Sie das Skript für jede an der Replikation beteiligten Datenbank notwendig aus.

Am einfachsten lassen Sie das Script gegen Ihre Datenbank laufen und verteilen diese per Datensicherung auf alle anderen Server, dann sind Sie sicher, dass alle Datenbanken die gleiche und richtige Struktur haben. Dies geht natürlich nicht, wenn auf Ihren Servern bereits unterschiedliche Datenbestände vorhanden sind.

5. Konfiguration des Systems

An Hand der einzelnen Schritte im Konfigurationstool werden im folgenden die Konfigurationsmöglichkeiten des InterBase Replication Demon beschrieben. Ohne eine korrekte Konfiguration Ihres Systems ist keine Replikation möglich. Die meisten Probleme bei der Replikation sind auf eine fehlerhafte Konfiguration zurückzuführen.

5.1 Aufbau der Konfiguration

Um eine zentrale Konfiguration zu ermöglichen, erfolgt die Konfiguration über Referenz- oder Konfigurationsdatenbanken. D.h., damit nicht jeder Server manuell eingerichtet werden muss, kann ein Server die Konfiguration aus einer anderen Datenbank laden. Ist kein Konfigurationsserver angegeben, muss die Datenbank selbst konfiguriert werden. Somit ist es möglich die Konfiguration lokal an den Vorlagen vorzunehmen. Das eigentliche Replikationssystem bezieht dann die neue Konfiguration aus den Vorlagen.

Im folgenden gehen wir davon aus, dass auf allen entfernten Systemen Datenbanken liegen, bei denen rpTables.sql angewendet wurde. Die Konfiguration erfolgt nun ausgehend von Ihrem "zentralen" System.

Starten Sie bitte das Replikationsprogramm und machen Sie einen Datenbank Connect auf Ihre Konfigurationsvorlage, die eine um rpTables.sql erweiterte Anwendungsdatenbank sein muss.

5.2 Festlegen der beteiligten Server

Die einzelnen beteiligten Server müssen hinterlegt werden. Um einen weiteren Server anzulegen, verwenden Sie den Neu Button .

Die einzelnen Felder bedeuten:

Server ID eindeutige Identifikationsnummer des Servers, diese muss nicht lückenlos sein
Server IP Hostname (nicht IP-Adresse) des Servers
Datenbank lokaler Datenbankpfad auf den entsprechenden Server
Lizenz Serverlizenz wie in Ihren Unterlagen zur Verfügung gestellt. Je Server ist eine Extralizenz notwendig. Keine Lizenz kann doppelt verwendet werden.
OnLine falls ja, bleibt die Datenbankverbindung nach einer Replikation bestehen, üblicherweise nein, da im Falle von vorhandenen OnLine Verbindungen besser mit einer zentralen DB statt mit einer Replikation gearbeitet wird
Parallel erlaubt Replikationszugriffe auf den Server, während dieser selbst repliziert
via Server (vgl. erweiterte Konfigurationsmöglichkeiten)
CFG-Datenbank Netzwerkpfad der Konfigurationsvorlage
DialUp Netzwerk Soll die Replikation eine Verbindung über das DialUp-Netzwerk (RAS) aufbauen, ist hier der entsprechende Eintrag der RAS-Konfiguration des Rechners auszuwählen. Es werden Ihnen die lokalen RAS Einstellungen angeboten, die RAS Einstellungen entfernter Systeme sind hier natürlich nicht bekannt, können aber eingegeben werden. Achten Sie auf die korrekte Schreibweise.

5.3 Festlegen der zu replizierenden Tabellen

5.3.1 allgemeine Angaben

Durch Drücken des entsprechendes Buttons können Sie eine Tabelle in die Replikation aufnehmen oder entfernen. Es werden dann alle notwendigen Trigger, Funktionen, Grants und Standardeinstellungen vorgenommen. Diese Angaben können Sie dann auf den nächsten Seiten ändern.

Sie können auch für Tabellen, die nicht direkt repliziert werden, die Grant-Rechte für den Replikationsuser RPDEMON anlegen. Dies ist notwendig, wenn Tabellen indirekt, z.B. über Trigger von der Replikation betroffen sind.

Das Feld Replikationsmodus beschreibt, auf welche Art die Daten geändert werden:

Der Vorteil von "U" ist, das mit "prepared" SQL-Statement gearbeitet werden kann, der Zielserver der Anwendung hat weniger zu tun, bei ausreichender Bandbreite des Netzwerks die schnellste Methode.

Bei der Variante "A" werden keine Vergleichsdaten von Zielserver zum Masterserver übertragen, dafür hat der Zielserver mehr mit der Interpretation des SQL-Statements zu tun. Dies ist bei geringerer Netzwerkbandbreite (z.B. bei Wählleitungen) die schnellere Methode.

Die Variante "C" stellt einen Kompromiss zwischen "U" und "A", um nicht permanent Felder zu ändern, deren Wert sich nicht geändert hat.

Das Feld Commit nach Sätzen wird in den erweiterten Konfigurationsmöglichkeiten beschrieben und sollte im Normalfall auf 0 stehen.

5.3.2 zu übertragende Felder

Für jeden Server kann angegeben werden, welche Daten gesandt, bzw. entgegengenommen werden. Standardmäßig werden alle Felder versandt und akzeptiert.

Sie können die Auswahl inklusive treffen, also durch Angabe der zu replizierenden Felder oder exklusiv, d.h. welche Felder nicht repliziert werden sollen. Beachten Sie, dass diese Einstellungen bei Änderungen der Datenbankstruktur Ihrer Anwendung ggf. angepasst werden müssen.

5.3.3 Zielserver

Über das Target wird bestimmt, an welche Server die Änderungen eines Servers übertragen werden. Bei gleichberechtigten Systemen erfolgt die Übertragung an alle Server. Bei einer Sternreplikation erfolgt nur von der Zentrale eine Übertragung an alle anderen Server. Die Filialen übertragen nur an die Zentrale. Fast beliebige Zwischenstufen sind denkbar. Beachten Sie auch den Abschnitt über erweiterte Konfigurationsmöglichkeiten.

5.3.4 Trigger

Auf der letzten Seite sehen Sie die automatisch angelegten Trigger, diese können an die Anforderungen Ihrer Anwendung angepasst werden.

Wenn Sie einen anderen User als RPDEMON verwenden, müssen Sie selbst darauf achten, dass die Trigger entsprechend geändert werden und alle notwendigen GRANT-Rechte vorhanden sind.

5.4 Die Replikationsreihenfolge

Zur Vermeidung von Problemen mit der referentiellen Integrität gibt es zwei Strategien. Erstens, die Änderung in genau der Reihenfolge übertragen, in der sie vorgekommen sind. Nachteil dieses Verfahrens ist, das permanent zwischen den zu replizierenden Tabellen umgeschaltet werden muss, der Verwaltungsaufwand nimmt stark zu. Oder aber Zweitens, es wird eine geeignete Replikationsreihenfolge gewählt.

Wenn Sie die zu replizierenden Tabellen so anordnen, dass die Tabelle ohne Abhängigkeiten zuoberst steht, d.h. zuerst repliziert wird, und die mit den meisten Abhängigkeiten zuletzt, dann ergibt die Default Reihenfolge eine Anordnung, die das Replizieren ohne Probleme ermöglichen sollte. Sie können aber die einzelnen Einstellungen unter Berücksichtigung der Kenntnis ihrer referentiellen Integrität beliebig sortieren .

Sie können auch einzelne Operationen auf diesem Wege von der Replikation ausschließen , allerdings werden diese, wenn ein entsprechender Trigger vorhanden ist protokolliert. Da die Änderungen dann nicht übertragen werden, bleiben sie im Änderungsprotokoll erhalten und "belasten" die Verwaltung der Replikation.

Mehrere TableOrder sind sinnvoll, um z.B. eine kleine Abfolge mit dringenden Daten zu definieren, die mehrmals am Tag abgeglichen wird und eine vollständige Liste, die einmal in der Nacht abgeglichen wird.

5.5 Festlegen des Events

ID Nummer des Events
Name Bezeichnung der Event beschreibt
Folge Event nach Durchführung des aktuellen Events kann eine weitere Replikation gestartet werden ( vgl. auch Sternreplikation )
Startserver Server dessen Demon die Replikation ausführt. Werden mehrere gewählt, starten mehrere parallele Replikationen
Replikationsserver Server die neben dem ausführenden Server an der Replikation beteiligt sind
OrderID TableOrder, also die Reihenfolge der auszuführenden Replikationen
Priorität wird während einer laufenden Replikation ein Event mit höherer Priorität angestoßen, wird der laufende unterbrochen ( Rollback! ).
User, Password User mit Password unter dem die Replikation ausgeführt wird
Rollback ob bei Fehlern ein Rollback gemacht wird. Mit "nein" wird das Transaktionsmanagement im wesentlichen ausgebremst, sollte daher nur in gut begründeten Ausnahmefällen verwendet werden.

5.6 globale Generatoren

Mit InterBase Generatoren erzeugen Sie normalerweise Schlüsselwerte, o.ä. in Ihrer Datenbank. Problematisch bei einer Replikation ist, das die Verwaltung der Nummern nur lokal erfolgt. Dabei geht dann eine wesentliche Eigenschaft von Generatoren verloren. InterBase Generatoren können dann nicht mehr garantieren, das ein Wert eindeutig ist.

Mit globalen Generatoren lässt sich das Problem lösen. Globale Generatoren sind Nummernbereiche, die vom InterBase Replication Demon verwaltet und den einzelnen Server automatisch zugeordnet werden. Damit lässt sich die Eindeutigkeit von Nummern über mehrere Server hinweg garantieren.

Definieren Sie im obigen Dialog mindestens einen Generator Event (Generator Gruppe). Dieser legt für eine Gruppe von Generatoren fest, von welchem Server sie verwaltet werden, (vgl. auch erweiterte Konfigurationsmöglichkeiten).

Ein Generator wird dann über seinen Namen definiert, einem Event zugeordnet und dann mit Hilfe seiner zwei Parameter spezifiziert:

Zur Initialisierung der Generatoren sollten auf allen beteiligten Servern nach Einrichtung der Replikation der entsprechende Generatorevent manuell ausgelöst werden. Das darf nicht vor der Verteilung der DB auf die einzelnen Server geschehen, weil sonst alle Datenbanken mit dem gleichen Nummernbereich arbeiten müssen.

5.7 Scheduler

Mit Hilfe des integrierten Schedulers können Replikationen zu festgelegten Zeiten gestartet werden. Legen Sie für jeden Start einen Eintrag an und definieren Sie die einzelnen Werte:

ID Nummer des Eintrags
Server Server an dem der Event ausgelöst wird
Wochentag Wochentag an dem der Event ausgelöst wird
Uhrzeit Uhrzeit zu welcher der Event ausgelöst wird
Event Art Replikation starten oder Generatoren Nummernbereiche prüfen
Event Auswahl des Events

Andere Möglichkeiten eine Replikation zu starten sind:

  1. Aufruf der Datenbank Procedure rp$StartReplic(eventId integer) oder rp$getnewgens(eventid integer)
  2. Manueller Aufruf über das Menu des InterBase Replication Demons
  3. Senden eines TCP-Datagramms an den InterBase Replicaiton Demon ( s. u. )

5.8 Mailer

Mit dem Mailer können automatisch eMails nach Abschluss einer Replikation versandt werden. Für jede eMail ist zu spezifizieren:

ID laufende Nummer
Adresse eMail - Adresse, an die die Mail versandt wird
Code sendet nur bei Rollback
endet nur bei Satzübertragungsfehler oder Rollback, also wenn ein Problem auftrat
sendet immer eine eMail, also auch wenn alles glatt durchlief
Style Die Mail kann in einer Zusammenfassung (short) oder in einer langen Fassung mit Angaben zu jeder Tabelle gesendet werden
Subject Subject der eMail

In der Konfigurationsdatei des InterBase Replication Demon sind, damit der Mailer funktionieren kann, noch die folgenden Einstellungen notwendig:

[Mail]
Host=mail.myserver.de ; die Adresse eines erreichbaren smtp-Server
FromName=MyName	      ; Name im Names dessen die Mail versandt wird
HdrFrom	              ; eMail Adresse des Absenders
ReplyTo	              ; eMail Adresse an die eine Antwort gesendet werden kann

5.9 Basislizenz, Versionsinfo und Speichern

Wenn Sie das System zum ersten Mal konfigurieren, müssen Sie die Basislizenz eintragen. Zudem ist die Version der neuen Konfiguration einzutragen.

Der InterBase Replication Demon startet automatisch den Abgleich der Konfigurationen, wenn beim Start einer Replikation unterschiedliche Versionen vorgefunden werden. Dabei wird dann die Konfiguration der Konfigurationsdatenbank des Servers geladen.

Wichtig: Achten Sie bei der Verwendung mehrerer Konfigurationsvorlagen darauf, dass alle Vorlagen die gleiche Versionsnummer erhalten. Ansonsten vermutet der InterBase Replication Demon Inkonsistenten in der Konfiguration und versucht diese durch Aktualisierung zu entfernen. Im Feld Beschreibung können Anmerkungen zur Historie fort geschrieben werden.

5.10 Einstellungen vor dem ersten Start

Damit der InterBase Replication Demon überhaupt gestartet werden kann, muss in der Konfigurationsdatei rpdemon.ini u.a die Datenbank mit der die Verbindung aufgebaut werden soll, eingetragen werden. In der Datenbank werden dann die weiteren Konfigurationsparameter gefunden.

[Demon]
Database=freetown:c:\work\kbase1.gdb  ;Pfad zu Datenbank mit Serverangabe
SysUser=SYSDBA                        ; Benutzername zur Anmeldung
SysPassword=masterkey                 ; Passwort zur Anmeldung
CharSet=ISO8859_1                     ; zu verwendendes Character Set

Das Passwort müssen Sie mit Ausnahme von masterkey über den InterBase Replication Guardian eintragen, da es verschlüsselt hinterlegt wird.

6. erweiterte Konfigurationsmöglichkeiten

6.1 Beispiel Vollabgleich

Bei einem Vollabgleich werden alle Daten aller Server zu allen anderen Servern übertragen. Zu dem ist das Netzwerk auch so konfiguriert, dass sich die Server jederzeit erreichen.

Einziger Zweck der Replikation ist in diesem Fall Redundanz herzustellen. D.h., das System bleibt funktionsfähig, wenn Verbindungen ausfallen. Dazu definieren Sie das System mit seinen Standardeinstellungen. Es werden alle Änderungen der Daten an alle Server übertragen. Es gibt nur einen Replikationsevent, dieser definiert den Startserver, der die Replikation ausführt. Zu allen Servern wird dann eine Verbindung aufgebaut.

6.2 Beispiel Sternreplikation

Bei einer Sternreplikation werden Filialserver Datenbankserver mit einem Zentralserver verbunden, z.B. beim Einsatz von Außendienstnotebooks und einem zentralen Netzwerk des Innendienst.

Bei einer Replikation nun alle Server miteinander zu verbinden, ist unpraktikabel. Da ja ggf. nicht alle Mitarbeiter zu diesem Zeitpunkt an das Netz angeschlossen sind, oder in einem WAN nicht genügend Telefonleitungen zur Verfügung stehen.

Daher replizieren alle Filialserver nur direkt mit dem Zentralserver, der die Änderungen dann weiterreicht. Folgende Einstellungen sind dafür notwendig.

6.2.1 Konfiguration des Zentralservers

Alle Daten werden vom Zentralserver an alle Filialserver weitergereicht, wie beim Vollabgleich.

6.2.2 Konfiguration der Filialserver

In einem Filialserver erfolgt die direkte Weitergabe nur zum Zentralserver (im Bild Zielserver 1:freetown). Von da aus erfolgt die Weitergabe der Daten an die anderen Filialserver (hier 3:canberra).

Diese Art der Vorgehensweise ist notwendig, weil die Verwaltung, welcher Server welche Sätze erhalten hat, bzw. noch erhalten muss, nur im Zentralserver aufgebaut wird.

6.2.3 Konfiguration der Event-Abfolge

Finden Abgleiche asynchron statt, also z.B. immer dann, wenn ein Außendienstmitarbeiter dies für notwendig hält sein Notebook abzugleichen, wird die Replikationstätigkeit vom Filialserver aus getätigt. Dafür muss je Filialserver ein Event definiert werden. Dabei hat der Event am besten die gleiche Nummer, wie der entsprechende Filialserver. Dies ist natürlich nicht zwingend, fördert aber die Übersichtlichkeit.

Als Startserver wird dann der Filialserver festgelegt. Beteiligter Replikationsserver ist nur der Zentralserver, der Startserver ist automatisch dabei.

Soll ein vollständiger Abgleich zwischen allen Filialservern und der zentralen Datenbank durchgeführt werden, definiert man am besten eine Ziehharmonika. Dabei erfolgt ein Abgleich zwischen Server 2 und 1, dann 3 und 1, dann 4 und 1, dann wieder 3 und 1 und abschließend wieder 2 und 1. Damit kann sichergestellt werden, dass auch Änderungen vom Server 4 zum Server 2 gelangen.

Um dies zu realisieren müssen Sie 5 Events anlegen (z.B. 12, 13, 14, 23, 22), wobei nach Abschluss eines Events automatisch der nächste Event über das Feld Folgeevent angestoßen werden kann.

Werden die Events jeweils von dem Filialserver ausgeführt, wird Filialserver 2 nach Abschluss von Event 12 versuchen dem Filialserver 2 mitzuteilen, dass der Event 13 starten soll. Dazu bedarf es einer TCP/IP Verbindung von Server 2 zu 3. D.h., die Server müssen voneinander wissen (Hostfile oder DNS-Nameserver) und das Routing muss entsprechend konfiguriert werden. Sprechen Sie ggf. mit Ihrem Netzwerkadministrator.

6.3 Details zu globalen Generatoren

Bei der Verwaltung der Generatoren hat man drei verschiedene Möglichkeiten, wobei sicherlich Variante a die am häufigsten verwendete ist.

6.4 TCP/IP Datagrams

Der InterBase Replication Demon kann über TCP/IP Ihre Anwendung informieren, dass er aktiv ist, bzw. dass er einen Replikationslauf mit Commit oder Rollback abgeschlossen hat.

Dazu sendet der InterBase Replication Demon über den im Guardian hinterlegten Port ein Datagramm an alle Server, die an der Replication beteiligt sind. Ist als Port -1 hinterlegt, ist dieser Mechanismus nicht aktiv.

Wenn Sie zum Beispiel vier Server im Netz haben und auf Server 2 wird eine Replikation zwischen den Servern 1, 2 und 4 gestartet, dann sendet der Demon beim Start der Replikation das Datagramm

2;nfStart; 

an die Server 1, 2 und 4..

Das Datagramm besteht aus klar lesbaren ASCII-Zeichen. Die Benachrichtigungstexte im einzelnen sind die Folgenden, dabei ist das Feld Data derzeit immer leer:

<SrvId>;nfStart;<data>
<SrvId>;nfCommit;<data>
<SrvId>;nfRollback;<data>
<SrvId>;nfConflict;<data>

Die nfConflict Meldung geht nur an die Server, deren Änderungen sich nicht durchsetzen könnten und bei denen somit Einträge in der Tabelle rp$Conflict entstanden sind.

In dem Sie einen TCP/IP SocketServer an dem hinterlegten Port in Ihrer Anwendung implementieren, können Sie diese Daten empfangen.

6.5 "procedurale Trigger"

Neben der Benachrichtigung via TCP/IP ruft der InterBase Replication Demon auf allen, bei einer Replikation beteiligten Datenbanken zu Beginn und nach Abschluss einer Replikation, SQL-Proceduren auf.

RP$TRIGGERSTARTREPLIC
	RP$TRIGGERENDREPLIC

In dem Sie in diesen Proceduren einen InterBase Event auslösen, oder Arbeiten an Ihren Daten vornehmen, können Sie Ihre Anwendung auf die Replikation reagieren lassen.

Für die Funktionalität des InterBase Replication Demon sind die Proceduren nicht notwendig, sie können fehlen oder leer sein.

6.6 verteilte Datenbanken

Da die Möglichkeit besteht, sowohl die Protokolltrigger, als auch die zu übertragenden Felder für jeden Server und jede Tabelle getrennt zu gestalten, besteht auch die prinzipielle Möglichkeit den InterBase Replication Demon zur Verteilung/Weitergabe von Daten in einer verteilten Datenbank zu nutzen.

Bei verteilten Datenbanken hängen die Details der Lösung noch stärker von Ihren individuellen Anforderungen ab, als bei einer Replikation. Wir verzichten daher hier auf weitere Details und bitten Sie, uns direkt anzusprechen.

6.7 Anmerkungen zu InterBase 6.0

Der InterBase Replication Demon kann natürlich auch für InterBase 6.0 genutzt werden. Dabei ist zu beachten, dass User Defined Function DLL?s nicht mehr in ..\InterBase\bin oder \Windows\System zu abzulegen sind, sondern in ..\Interbase\Udf.

Weitere "Schwierigkeiten" haben sich bei unseren Tests nicht ergeben.

6.8 Wiederholungsläufe

Bei der Replication kann es trotz der festgelegten Reihenfolge der Tabellenabarbeitung (TableOrder) zu Problemen mit der referentiellen Integrität kommen. Eine Möglichkeit dies zu umgehen besteht darin, auftretende Übertragungsfehler bei einem ersten Durchlauf zu ignorieren und in einem zweiten Durchlauf dann zu schreiben, wenn die Voraussetzungen der referentiellen Integrität erfüllt sind.

Die Anzahl der Umläufe wird derzeit lokal am InterBase Replication Demon in der Konfigurationsdatei (rpdemon.ini) eingestellt.

[Sonstiges]
LoopCountMax=2

Der Wert muss 1 sein, wenn nur ein Durchlauf stattfinden soll. Er gibt also die Anzahl der Durchläufe und nicht die Anzahl der Wiederholungen an.

6.9 Deaktivierung des Transaktionsmanagement

Wenn bei der Übertragung der Daten im letzten Wiederholungslauf noch Fehler auftreten, wird die Replication abgebrochen und ein RollBack ausgelöst. Dadurch werden alle übertragenden Änderungen rückgängig gemacht, aber die referentielle Integrität und das Transaktionsmanagement werden gewahrt.

Um diesen Mechanismus zu deaktivieren, und die fehlerfreien Sätze zu erhalten, muss in der Konfigurationsdatei (rpdemon.ini) der Parameter

[Sonstiges]
ContinueWithError=Y

gesetzt werden. Wir empfehlen diese Variante nicht einzusetzen!

6.10 Anmerkungen zur Performance

  1. Der InterBase Replication Demon nutzt das Two-Phase Commit des InterBase Servers, um Transaktionssicherheit zu garantieren. Bei diesem Verfahren, was aus Sicht einer sicheren Datenbank unverzichtbar ist, hat der InterBase Replication Demon wenig Einfluss auf die Daten, die tatsächlich über die Leitung gehen.
    Praktische Tests im LAN und im WAN zeigen jedoch, dass die theoretisch schnellste Lösung mit, der Replikationsmodus `U´, auf einem Netzwerk mit wenig Bandbreite die langsamste Lösung ist. Der Modus `U´ ist der Modus, mit der wenigsten Arbeit für die Server. Es wird versucht, die Analyse und Optimierung eines SQL-Statements nicht häufiger als zwingend notwendig durchzuführen, denn dieses "Prepare" des SQL-Statements ist normalerweise die zeitkritische Operation eines Datenbankservers.
    Im Falle der Replikationsmodus ?A? und ?C? wird darauf keine Rücksicht genommen und jeweils ein neues komplettes SQL-Statement zur Änderung der Daten verwendet. Das führt zu weniger Datentraffic auf dem Netzwerk und bedeutet in langsamen Netzen eine Performancesteigerung. Im LAN allerdings, braucht die Lösung etwas mehr Zeit.
  2. Unter Windows bedeutet die Abfrage der Benuteroberfläche um z.B. festzustellen, ob der Benutzer den Abbrechbutton gedrückt hat, einen nicht zu vernachlässigten Zeitverlust. Daher fragen wir die Benutzeroberfläche nicht nach jeder Übertragung eines Satzes ab, sondern defaultmäßig erst alle 50 Sätze. Diesen Wert können Sie über die Konfigurationsdatei (rpdemon.ini) verändern, um die Performance zu steigern (vergrößern), oder die Sensibilität des Systems zu erhöhen (verkleinern).

6.11 populäre Irrtümer

6.12 weitere Möglichkeiten

Sollte dieses rudimentäre Konfliktmanagement für Ihre Anwendung nicht ausreichen, wenden Sie sich bitte an uns, mit individuellen Erweiterungen ist viel machbar, doch ist es wenig sinnvoll in einer allgemeinen Lösung eine andere Form des Konfliktmanagements zu implementieren.

7. Die Tabellen des InterBase Replication Demon

Im folgenden werden die Tabellen des Interbase Replication Demon beschrieben. Statt des Konfigurationswerkzeugs, können Sie auch direkt auf diese Tabellen zugreifen, um mit SQL die Anwendung zu konfigurieren.

Das ist insbesondere bei einer großen Anzahl zu replizierender Tabellen sinnvoll. Wir empfehlen folgende Vorgehensweise:

  1. Konfigurieren Sie statische Daten, wie die Server manuell über die Oberfläche, generieren sie sich ggf. aus den Daten der Tabellen SQL-Statement zum Wiederherstellen der Situation
  2. Identifizieren Sie Typen von Replikationsarten, in denen Ihre Tabellen repliziert werden, d.h. z.B., Typ 1 alle Daten zu allen Servern für die Tabellen A, B und C, Typ 2 alle Daten zur Zentrale für die Tabellen E und D
  3. Programmieren Sie ein Template für jeden Typ, das mit Hilfe einer kleinen Anwendung oder von SQL-Proceduren SQL-Statement zur Erzeugung der Konfiguration erzeugt.
  4. Jetzt haben Sie einen Satz SQL-Statement zur Verfügung, der Ihnen die Wiederherstellung der Konfiguration auf jedem System erlaubt.

7.1 Konfigurationstabellen

7.1.1 RP$SERVER

Jeder Satz beschreibt einen an der Replikation beteiligten Server

RP$SRVID smallint not null Id des Servers
RP$HOST RP$TSTRING TCP/IP Name via DNS oder Host-Datei
RP$DATABASE RP$TSTRING not null Pfad zur Datenbank (am besten alles klein schreiben, wg. eines InterBase Bugs)
RP$LIZENZ RP$TSTRING not null InterBase Replication Lizenz für den Server
RP$ONLINE RP$TBOOL DEFAULT "Y" Nach der Verbindung OnLine bleiben (normalerweise N)
RP$PARALLEL RP$TBOOL DEFAULT "Y" Dürfen gleichzeitig 2 Demon auf einer DB replizieren
RP$ACCEPTVIA RP$TSTRING Liste von Servern, über die Daten kommen dürfen, vgl. verteilte Datenbanken
RP$LOCAL RP$TBOOL DEFAULT "N" (ohne Bedeutung)
RP$CFGDATABASE RP$TSTRING Pfad mit Hostnamen zur Konfigurationsdatenbank, von der bei Bedarf eine neue Konfiguration gezogen wird
RP$DIALUP RP$TSTRING Name des DFÜ-Netzwerks, über das eine Verbindung hergestellt werden soll. Leer=Verwende LAN

7.1.2 RP$TABLE

Beschreibt die zu replizierenden Datenbanktabellen Ihrer Anwendung

RP$TBLID smallint not null Id der Tabelle
RP$TABLENAME RP$TNAME not null Name der Datenbanktabelle
RP$INDEXNAME RP$TNAME Wenn kein echter Primary Key verwendet wird, Name des uniquen Index, mit den Feldern die den Satz identifizieren
RP$TABLEKEYS varchar(255) Aufzählung der Felder des verwendeten Primärschlüssels
Format;
"<key1>";<key2>"
RP$COMMITAFTER integer Ob nach n setzen ein Commit gemacht werden soll, besser 0, sonst Transaktionsmanagement nicht sauber
RP$MODE char(1) Art auf, die die Daten der Tabelle übertragen werden:
U - select for update
A - update table set alle Felder
C - update table set geänderte Felder

7.1.3 RP$TABLORDER

Definiert die Reihenfolge in der die Tabellenoperationen repliziert werden

RP$ORDID integer not null Id der TableOrder
RP$TBLID smallint not null Verweis auf die Tabelle
RP$OPORDER integer not null Reihenfolge 1, 2, 3,...
RP$OPERATION RP$TOPERATION not null Operation I, U, D

7.1.4 RP$TOPOLOGIE

Definiert, welche Daten einer Tabelle gesendet bzw. empfangen werden

RP$SRVID smallint not null SrvId für den der Eintrag gilt
RP$TBLID smallint not null Verweis auf die Tabelle
RP$SEND RP$TSTRING Liste der ein- oder auszuschließenden Felder (* alle) beim senden
RP$RECEIVE RP$TSTRING Liste analog zu rp$send für das Empfangen
RP$INCLUSIVE RP$TBOOL DEFAULT "Y" not null Y: Die Felder rp$send und rp$receive beschreiben die zu verarbeitenden Felder
N: Die Felder rp$send und rp$receive beschreiben die nicht zu verarbeitenden Felder

7.1.5 RP$TARGET

Definiert, welche Daten von welchem Server zu welchem Server gesendet werden

RP$SRVID smallint not null Server für den der Eintrag gilt
RP$TBLID smallint not null Verweis auf die Tabelle
RP$TARGETID integer not null 0 alle Server,
sonst je Zielserver einen Eintrag in rp$Target
RP$PACKAGE RP$TSTRING an welche Server sollen die Daten weiterversandt werden
Format x, y, z

7.1.6 RP$REPLEVEN

Definiert den Start eines Replikationslaufes, auslösbar über rp$StartReplic, die Benutzeroberfläche oder ein TCP/IP Datagramm

RP$EVENTID smallint not null ID des Events
RP$EVENTNAME RP$TNAME Bezeichnung zur Beschreibung
RP$STARTSERVERS RP$TSTRING Server, auf denen der Demon die Replikation ausführt.
Normalerweise n.
Möglich aber auch 2, 3, startet gleichzeitig eine Replikation an Server 2 und 3
RP$PRIORITY smallint Höher Priorisierte Events brechen gerade laufende Events ab
RP$ORDID integer not null Id der auszuführenden TableOrder
RP$REPLSERVERS RP$TSTRING neben dem ausführenden Server, noch an der Replikation beteiligte Server
RP$USER RP$TNAME zu verwendenden User
RP$PASSWORD RP$TNAME zu verwendendes Passwort
RP$ROLLBACK RP$TBOOL default "Y" Rollback bei Fehlern
RP$NEXTEVENT smallint ID des Folgeevents rrp$replevents, der nach dem Event ausgeführt wird

7.1.7 RP$SCHEDULE

RP$SCKEY integer not null Id des Eintrags
RP$SRVID smallint Server auf dem der Event ausgelöst wird
RP$DAY smallint Wochentag
1: Sonntag,
2: Montag,
3...
RP$TIME date Uhrzeit
RP$EVENTSTYLE char(1) (R)eplikations oder (G)eneratorevent
RP$EVENTID smallint Nummer des Events

7.1.8 RP$MAILER

RP$MAILID smallint not null Id des Eintrags
RP$EMAIL varchar(64) not null eMail Adresse, an die die Mail versandt wird
RP$MCODE smallint ab welchem Fehlerlevel versandt wird,
21 nach jeder Replikation
11 nur bei Fehlern
1 nur bei Rollbacks
RP$MSTYLE char(1) S Short
L Lang

7.1.9 RP$GENEVENT

RP$EVENTID smallint not null Id des Events
RP$SERVERS RP$TSTRING Id?s der Server, die die zugeordneten Generatoren verwalten. Format:
n
<keiner>
x, y

7.1.10 RP$GENERATORS

Definiert einen Generator, also einen Mechanismus zur Erzeugung von Nummernbereichen, damit eindeutige Nummern im Gesamtsystem möglich werden.

RP$GENNAME RP$TNAME not null Name des Generators
RP$THRESHOLD integer Schwellwert, d.h. Anzahl an Restnummern ab den ein neuer Nummernbereich angefordert wird
RP$BLOCKSIZE integer Größe eines Nummernbereichs
RP$ACTVALUE integer intern:
nächster zu vergebener Wert
RP$ACTLASTVALUE integer intern
letzter zu vergebener Wert des aktuellen Nummernbereichs
RP$NXTFIRSTVALUE integer intern:
nächster erster Wert eines bereits neu angeforderten Nummernbereichs
RP$NXTGLOBALVALUE integer größer bekannter vergebener Wert
RP$EVENTID smallint zugeordneter Generatorevent für die Aktualisierung

7.2.1 RP$CONFLICT

Hier werden die Sätze vermerkt, deren Änderungen nicht übertragen werden konnten.

RP$SRVID smallint Id des Masterservers, von dem der Satz kam
RP$TBLID smallint Id der betroffenen Tabelle
RP$DATE date Datum der Änderung
RP$OPERATION RP$TOPERATION Operationen, die nicht ausgeführt werden können (I,U,D)
RP$PRIMKEY RP$TSTRING Primary Key der betroffen ist, im Format aus rp$Change
RP$DESTSRV smallint Server Id, zu dem die Änderung hätte übertragen werden sollen

7.2.2 RP$STATISTIC

Diese Tabelle protokolliert summarisch den Ablauf einer Replikation, kann als Basis für Optimierungen verwendet werden.

RP$STATKEY integer not null Id des Satzes
RP$DEMONID smallint Id des Servers der repliziert hat
RP$REPLID integer laufende Nummer der Replikation
RP$LOOP integer Nummer des Durchlaufs
RP$START date Datum, Uhrzeit, zu der die Replikation einer Tabelle begann
RP$ENDE date Datum und Uhrzeit des Endes
RP$TBLID integer Table ID, deren Werte hier aufgeführt sind,
-1 steht für einen Replikationslauf
RP$COUNT integer Anzahl übertragene Sätze
RP$ERROR integer davon fehlerhafte Übertragungen

7.2.3 RP$ERROR

Diese Tabelle enthält Details zu den Sätzen deren Änderungen nicht eingetragen werden konnte, weil der Zielserver den Eintrag auf Grund referentieller Integrität oder Constraints abgelehnt hat.

RP$ERRKEY integer not null Id des Eintrags
RP$DEMONID smallint Id des Servers der repliziert hat
RP$REPLID integer laufende Nummer der Replikation
RP$LOOP integer Nummer des Durchlaufs,
RP$ZEIT date Änderungsdatum
RP$TBLID integer Tabelle, die betroffen ist
RP$PRIMKEY RP$TSTRING Primary Key der betroffen ist im Format von rp$change
RP$SOURCESRV smallint Masterserver von dem die Änderung kam
RP$TARGETSRV smallint Zielserver, wo die Änderung hin sollte
RP$MSG RP$TLONGSTRING Fehlermeldung, Meldung des Datenbankservers
RP$STYLE char(1) (W)arnung oder (E)rror

7.3 Systemtabellen

7.3.1 RP$CHANGE

Das Änderungsprotokoll

RP$SRVID smallint not null, Server, auf dem der Satz geändert wurde
RP$RECID integer not null, laufende Nummer der Änderung
RP$USER RP$TNAME, Benutzer, der geändert hat
RP$TBLID smallint not null, Tabelle, wo geändert wurde
RP$OPERATION RP$TOPERATION, I, U, D
RP$PRIMKEY RP$TSTRING not null, Primary key korrespondieren zur PrimaryKey Beschreibung der Tabelle;
"<value1>"<value2>"
RP$DATE date, Zeitpunkt der Änderung
RP$SEND RP$TSTRING, intern:
welche Felder zu versenden sind
RP$INITIALIZED RP$TCHANGESTATUS DEFAULT "N" intern:
Initialisierungsstatus des Satzes

7.3.2 RP$CONTROL

Intern: Verwaltet, welcher Server schon welche Änderungen erhalten hat und entsprechende Quittungen. Dient der Überwachung, ob die Einträge in rp$Change gelöscht werden dürfen.

RP$SRVID smallint not null,
RP$RECID integer not null,
RP$TARGETID smallint not null,
RP$PACKAGE RP$TSTRING,
RP$TRANSFERD RP$TBOOL DEFAULT "N",
RP$DELIVERED RP$TCONTROL);

7.3.3 RP$SYSINFO

verwaltet interne Informationen, u.a. die Basislizenz

RP$ID char(1) not null,
RP$DATE date,
RP$IVALUE smallint,
RP$SVALUE varchar(128),
RP$REMARK varchar(255));

8. Die einzelnen Tools

8.1 InterBase Replication Demon

Der InterBase Replication Demon kann direkt über das Startmenu gestartet werden. Dieses sollte insbesondere zur Zeit der Einrichtung so geschehen: Wenn das System dann im produktiven Einsatz ist, ist es besser, den Start des Demons, dem InterBase Replication Guardian zu überlassen.

Vor dem Protokollieren einer Änderung in Ihren Daten, wird mit Hilfe des InterBase Replication Demon die ID des Servers auf dem die Änderung passiert, festgestellt. Daher ist es nicht möglich, Änderungen in Ihrer Anwendung vorzunehmen, ohne das der InterBase Replication Demon aktiv ist.

8.1.1 Das File Hauptmenu

Bei jedem Start des InterBase Replication Demon wird ein neues LogFile angelegt.

Mit der Nummerierung der LogFiles können Sie festlegen, bei welcher Nummer es weitergeht und wie viel Files maximal aufgehoben werden.

Mit den Log/Trace aktivieren und bestimmen Sie den Umfang der Ausgaben auf dem Bildschirm und in die Logdate. Verwenden Sie den SQL-Monitor nur, wenn Sie Fehler in Ihrer Konfiguration suchen.

Mit der unteren Auswahl können Sie detailliert festlegen, welche Art von Aktivität vom SQL-Monitor aufgezeichnet werden. Beim Einsatz des SQL Monitors entstehen umfangreiche Protokolle, diese sind nur zur Fehlersuche gedacht.

8.1.2 Das Action Menu

8.1.3 Das PopUp Menu

Wenn der InterBase Replication Demon in der Taskbar zu sehen ist, erreichen Sie die wesentlichen Auswahlpunkte des Menus auch über die rechte Maustaste. Zudem haben Sie die Möglichkeit, über den Menupunkt Show, das Hauptfenster des InterBase Replication Demon anzuzeigen.

8.2 InterBase Replication Guardian

Primäre Aufgabe des InterBase Replication Demon, zu überwachen ob der InterBase Replication Demon aktiv ist und diesen ggf. zu starten. Zu dem können einige Einstellungen der Konfigurationsdatei über einen Dialog des InterBase Replication Guardian vorgenommen werden.

8.2.1 Das Action Menu

Nach der Eingabe des Passwords für den Zugriff des Interbase Replication Demon (default mastekey), erreichen Sie das Properties (Eigenschaften) Menus.

Im oberen Teil können Sie die lokale Datenbank und den zu verwendenden Benutzer und das Passwort angeben.

Links unten werden die TCP/IP Ports definiert, die zur Kommunikation der Programme des InterBase Replication Demon untereinander eingesetzt werden. Dabei ist es notwendig, das diese Ports durch alle vorhandenen Firewalls, etc. transparent durchgehen. Der UserPort ist standardmäßig deaktiviert (vgl TCP/IP Datagramme).

In den Einstellungen des Guardian definieren Sie:

  1. Look Intervalls, Intervalldauer, nach der der Guardian prüft, ob der Demon noch aktiv ist, in Sekunden
  2. Start Intervall, Intervalldauer, nach der der Guardian den unter Event angegebenen Replikationevent starten soll, in Sekunden. Aus Kompatibilitätsgründen ist dieser Modus noch vorhanden, verwenden Sie besser den über die Konfiguration erreichbaren Scheduler.

Mit diesem kleinen Tool können Sie Daten unter der Anwendung von Bedingungen aus einer Datenbank in eine andere kopieren. Geben Sie eine Quell- und eine Zieldatenbank an, sowie eine Ini-Datei zum Steuern des Prozesses.

Schritt 1, es wird eine Strukturdatensicherung der Quelldatenbank gemacht, ohne Daten.
Schritt 2, diese Struktur wird als neue Datenbank wiederhergestellt.
Schritt 3, gemäß der Ini-Datei werden die Daten in die neue Datenbank übertragen.
Schritt 4, von der Zieldatenbank wird eine Datensicherung gemacht.

Die Konfigurationsdatei hat den folgenden Aufbau:

[TABLE]
KBProd=Product
KBCat=
KBase=Product

Dabei werden Daten jeder angegebenen Tabelle übertragen und die hinter dem Gleichheitszeichen angegebene where-Bedingung verwendet.

8.2.2 Das PopUp Menu

Wenn der InterBase Replication Demon in der Taskbar zu sehen ist, erreichen Sie die wesentlichen Auswahlpunkte des Menus auch über die rechte Maustaste. Zu dem haben Sie die Möglichkeit, über den Menupunkt Show das Hauptfenster des InterBase Replication Demon anzuzeigen.

8.3 InterBase Replication Terminal

Das InterBase Replication Terminal gibt den Zustand der InterBase Replication Demons in einem Netzwerk wieder. Dabei kann dies auf einem Computer installiert sein, der mit der Replikation sonst nichts zu tun hat. Einzige Voraussetzung ist, das vom Terminal eine TCP/IP Verbindung zu den InterBase Replication Guardians der Replikation besteht.

In der Konfigurationsdatei rpDemon.ini werden die Namen der Server eingetragen, die überwacht werden sollen. Im Rahmen des Netzwerkes muss eine Namensauflösung via DNS oder Hostdatei möglich sein.

[Servers]
dublin=
freetown=

8.4 InterBase Replication Service

Der InterBase Replication Service prüft alle 2 Minuten, ob der InterBase Replication Guardian noch aktiv ist und startet ihn, wenn dies nicht der Fall ist. Damit garantiert er auch ohne angemeldeten Benutzer unter Windows NT und Windows 2000, den Betrieb des InterBase Replication Demon.

Sie installieren den Service mit:

rpservice -install

und deinstallieren ihn wieder mit:

rpservice -uninstall

Die Verwaltung geschieht über die Verwaltung der Dienste von Windows NT bzw. Windows 2000.

8.5 InterBase Replication Show

Sollte nach dem Start des InterBase Replication Guardian, oder des InterBase Replication Demon über den InterBase Replication Service in Ihrem Windows nach der Anmeldung eines Benutzers die Programme nicht in der Taskbar zu sehen sein, können Sie die Icons der Programme durch den Aufruf von rpShow sichtbar machen.

9. Die Demonstrations Version

Die Downloadbare Demonversion enthält die volle Funktionalität des InterBase Replication Demon, ist aber auf 60 Tage nach der Installation beschränkt. Eine weitere Nutzung entspricht nicht den Lizenzbestimmungen und kann entsprechend geahndet werden.

In der Demonstrationsversion sind Datensicherungen enthalten, um drei typische Fälle einer Replikation zu demonstrieren. Sie benötigen dafür zwei bis drei via TCP/IP verbundene Computer und auf jedem Rechner einen InterBase Server, sowie eine Installation des InterBase Replication Demon.

9.1 Vorbereitung

Es wird im folgenden davon ausgegangen, dass:

athen:c:\MeineDaten\MeineDatenbank.gdb

Dadurch verwendet InterBase TCP/IP.

Host 1: athen
Datenbank 1: c:\work\kbase.gdb
Konfigurationsdatenbank 1:
Host 2: bern
Datenbank 2: c:\work\kbase.gdb
Konfigurationsdatenbank 2: athen:c:\work\kbase.gdb
[Demon]

Database=athen:c:\work\kbase1.gdb

den Pfad zum lokalen Datennamen eintragen, auf "Bern" natürlich entsprechend:

bern:c:\?

können Sie den InterBase Replication Demon starten. Starten Sie den InterBase Replication Demon zu Beginn durch Aufruf von rpDemon.exe, verwenden Sie den Interbase Replication Guardian erst, wenn der Start des Demon funktioniert hat. Folgendes Bild muss sich dann ergeben:

Der Server gibt unter anderem die DEMONID an, diese muss bei "Athen" eins und bei "Bern" zwei sein.

9.2 Vollreplikation

Die jetzt bereits installierte Konfiguration ist eine Vollreplikation/Vollabgleich. D.h., jede Änderung wird auf den anderen Server übertragen. Mit dem Programm rpCllient.exe können Sie Datensätze in den Datenbanken verändern und die Replikation starten. Die Daten werden dann auf die andere Datenbank übertragen.

Auf Grund des Transaktionsmanagements werden Änderungen in rpClient erst dann sichtbar, wenn Sie nach einer Replikation die Daten erneut von der Datenbank anfordern, also den Refresh Button verwenden, der ein Close/Open, aller im Client vorhandenen Abfragen auslöst.

Machen Sie sich mit den Einstellungen der Replikation an Hand des Konfigurationswerkzeuges vertraut.

9.3 Abgleich der Konfigurationen

Als Vorbereitung der Sternreplikation sichern Sie die Daten den kbase_stern.gbk auf "Athen" zurück, über die Datei kbase.gdb.

Die in dieser Datenbank eingetragene Version der Konfiguration ist größer, als die bisherige von kbase_base.gbk, die noch als kbase.gdb auf dem Server "Bern" liegt.

Gehen Sie mit dem Konfigurationswerkzeug erneut auf die Datenbank kbase.gdb auf "Athen" und passen Sie die Pfade der Server erneut an. Es ist jetzt auch ein dritter Server "Canberra" vorhanden, da für eine echte Sternreplikation mindestens drei Server notwendig sind. Die Anpassung der Pfade ist leider erneut notwendig, da wir die bei Ihnen im Test real auftretende Servernamen nicht kennen konnten.

Wenn Sie nun eine Replikation starten, erkennt der InterBase Replication Demon, dass die Version der Konfiguration auf "Bern" zu klein ist und schließt "Bern" von der Replikation aus. "Bern" lädt dann automatisch die Konfiguration aus der, bei ihm hinterlegten Konfigurationsdatenbank, also in diesem Falle, aus der Datenbank auf "Athen". "Athen" bricht jetzt auch die Replikation ab, da mit sich selbst keine Replikation möglich ist.

Wenn Sie die Replikation nach dem Nachladen der Konfiguration erneut starten, haben beide Seiten wieder die gleiche Version der Konfiguration und werden daher mit den neuen Einstellungen replizieren.

9.4 Sternreplikation

Bei einer Sternreplikation fungiert ein Server (hier "Athen") als Zentralserver, an dem alle anderen Server sternförmig angeschlossen sind. Trotzdem kann ein Vollabgleich der Daten erfolgen, aber die Server "Bern" und "Canberra" sind nicht direkt miteinander verbunden, sondern versenden ihre Daten über den Zentralserver "Athen".

Um dies gut beobachten zu können, benötigen wir den dritten PC "Canberra", auf dem auch InterBase und der Interbase Relication Demon installiert sein muss. Auf "Canberra" verwenden wir dann für die Demonstration die gleiche Datenbank kbase.gdb, wie auf "Athen" und "Bern".

Starten Sie auf dem Server "Athen" den Replikationsevent 1, es erfolgt dann ein normaler Vollabgleich zwischen den Servern "Athen", "Bern" und "Canberra", analog zu 9.2.

Wenn Sie den Event 12 auf dem Server "Athen" starten, wird dieser Server "Bern" benachrichtigt, um zwischen "Bern" und "Athen" zu replizieren. Danach erfolgt ein Abgleich zwischen "Canberra" und "Athen" mit Hilfe eines Folgeevents und schließt erneut einen Abgleich zwischen "Bern" und "Athen" ab, damit auch die Änderungen von "Canberra" zum Server "Bern" gelangen können.

Bei dieser Form der Replikation müssen alle Filialserver erreichbar sein, sonst bricht die Kette ab. Auch muss für die Kommunikation zwischen den Servern eine TCP/IP Verbindung von "Bern" zu "Canberra" zum Auslösen des Folgeevents möglich sein.

Natürlich kann diese Form der Replikation auch asynchron stattfinden. D.h., "Bern" gleicht mit "Athen" Daten ab und bekommt dabei die Daten die "Athen" kennt, ohne dabei Rücksicht auf "Canberra" zu nehmen. Der Server "Canberra" wiederum gleicht seine Daten dann zu einem beliebigen anderen Zeitpunkt ab. Dafür sind die Replikationsevents 2 und 3 hinterlegt, die jeweils einen Abgleich zwischen den Servern "Bern" und "Athen" sowie "Canberra" und "Athen" starten.

9.5 Globale Generatoren

Die globalen Generatoren sind in beiden Demonstrationskonfigurationen so konfiguriert, dass beim Einfügen des dritten Satzes über den globalen Generator ein neuer Nummernbereich angefordert wird. Durch Ändern der Größe des Nummernbereiches und des Schwellwertes (derzeit 2) können Sie das Verhalten des Generators anpassen.

9.6 weitere Schritte

In der Konfiguration der zu replizierenden Tabellen, können Sie die zu versendenden Felder verändern und andere Einstellungen der Replikation verändern und deren Auswirkung beobachten.

Da der InterBase Replication Demon in der Demonstrationsversion nur zeitlich und nicht funktionell begrenzt ist, können Sie natürlich auch mit Ihrer eigenen Anwendungsdatenbank experimentieren. Wir empfehlen dazu, zuvor eine Übersicht der zu replizierenden Tabellen und die dabei zu replizierenden Daten und Transferrichtungen aufzustellen. Je besser eine Replikation vorbereitet wird, desto leichter ist später die Realisierung.