Replikation in Datenbanken Ronny Dathe, 05 IN-D, Matrikel 38630 Inhalt Inhalt........................................................................................................................................... 2 Begriffsklärung: Replikation ...................................................................................................... 3 Allgemeine Definition: ........................................................................................................... 3 Definition nach Oracle: .......................................................................................................... 3 Nutzung von Replikation in Datenbanken ................................................................................. 3 Anwendungsbeispiele................................................................................................................. 4 Beispiel 1: Geografisch verteilte Datenbank .......................................................................... 4 Beispiel 2: Webapplikation in einem Rechenzentrum ........................................................... 5 Klassifizierung der Replikationsarten ........................................................................................ 6 Synchron (oder Aktiv) ............................................................................................................ 6 Asynchron (oder Passiv) ........................................................................................................ 6 Asynchrone Replikations Architekturen .................................................................................... 6 Master – Slave Replikation .................................................................................................... 6 Multi Master ........................................................................................................................... 6 Replikationskonflikte ................................................................................................................. 7 Datenkonflikte ........................................................................................................................ 7 Update Konflikt .................................................................................................................. 7 Einmaligkeitskonflikt ......................................................................................................... 7 Löschkonflikt ..................................................................................................................... 7 Transaction Ordering Konflikte ............................................................................................. 7 Auflösung von Replikationskonflikten .................................................................................. 8 Auflösungsmethoden für Uniqueness Konflikte ................................................................ 8 Auflösungsmethoden für Löschkonflikte ........................................................................... 8 Auflösungsmethoden für Update Daten-Konflikte ............................................................ 9 Replizierbare Objektklassen in Oracle 10g .............................................................................. 10 Replikationshierarchie .............................................................................................................. 10 Replikation Object............................................................................................................ 10 Replikation Group ............................................................................................................ 10 Replication Site ................................................................................................................ 10 Betriebsarten der Replikation in Oracle 10g ............................................................................ 11 Multimaster Replication ....................................................................................................... 11 Materialized View Replication............................................................................................. 12 Hybrid – Konfigurationen .................................................................................................... 13 Replikationswerkzeuge in Oracle 10g ...................................................................................... 14 Replication Management Tool ......................................................................................... 14 Replication Management API .......................................................................................... 14 Zusammenfassung .................................................................................................................... 15 Vorteile von Replikationssystemen .................................................................................. 15 Nachteile von Replikationssystemen ............................................................................... 15 Quellenverzeichnis ................................................................................................................... 16 Begriffsklärung: Replikation Allgemeine Definition: Replikation ist der Prozess Informationen konsistent zwischen redundanten Quellen zu teilen. Definition nach Oracle: Replikation ist der Prozess, Datenbankobjekte zwischen multiplen Datenbanken, welche ein verteiltes Datenbanksystem bilden, zu kopieren und zu verwalten. Nutzung von Replikation in Datenbanken Replikation in Datenbanken kann zu Unterschiedlichen Zwecken eingesetzt werden. Durch Replikation lässt sich die Ausfallsicherheit und die Verfügbarkeit des Gesamtsystems steigern. Des Weiteren wird die Performanz des Gesamtsystems erhöht. Ebenso schützt Replikation durch aktive Backups vor vollständigem Datenverlust durch physische Zerstörung. Darüber hinaus kann Replikation zur Reduktion von Kosten, vor allem des Internet Traffic, eingesetzt werden, in dem in unterschiedlichen Standorten eigene Replikationsserver eingesetzt werden, welche mit hoher Bandbreite angebunden sind. Zu guter Letzt ist Replikation auch eine bequeme Möglichkeit die Datensätze eines Datenbankservers komplett auf ein oder mehrere Systeme zu duplizieren. Die verschiedenen Einsatzzwecke sollen in den folgenden zwei Anwendungsbeispielen näher erläutert werden. Anwendungsbeispiele Beispiel 1: Geografisch verteilte Datenbank Eine Weltweit operierende Firma mit Standorten über alle Kontinent verteilt kann sich der Replikation ihres Datenbanksystems zu bedienen um unabhängige Standorte mit eigenen, lokalen Datenbankservern zu versorgen. Bei der Initialisierung dieses Vorgangs kann mittels Massen Datenverteilung von der zentralen Datenbank ein global verteiltes Datenbanksystem geschaffen werden in dem die Mitarbeiter einzelner Standorte Anfragen nur noch über ihren lokalen Server über das LAN ausführen. Dadurch wird ein kostengünstiger lokaler Zugriff durch Clients erreicht und Internettraffic vermieden. Nur der lokale Server selbst muss mit dem zentralen Datenbankserver kommunizieren. Des Weiteren tritt automatisch der Effekt einer globalen Lastverteilung der Anfragen ein, da nicht mehr jeder Client weltweit auf dem zentralen Server arbeitet. Beispiel 2: Webapplikation in einem Rechenzentrum Clients Load Balancer Webserver Load Balancer Datenbankserver In einem Rechenzentrum wird für eine sehr Lastintensive Webapplikation mehrstufiges Load Balancing eingerichtet. Eingehende Sitzungen werden auf mehrere Webserver verteilt, die ihrerseits ihre Anfragen balanciert auf ein Repliziertes Datenbanksystem verteilen. Diese Strukturierung bietet eine sehr hohe Verfügbarkeit und hohe Ausfallsicherheit, gepaart mir optimale Lastverteilung und sehr guter Skalierbarkeit. Klassifizierung der Replikationsarten Synchron (oder Aktiv) Im Synchronen betrieb wird eine Anfrage wird auf allen Replikationssystemen verarbeitet. Ein Schreibvorgang ist nur dann gültig, wenn er auf allen Replikationssystemen erfolgreich ausgeführt wurde. Diese Methode stellt zwar sicher, dass die Daten stets synchron sind, jedoch multipliziert sich die Fehleranfälligkeit der Einzelsysteme für das Gesamtsystem auf. Asynchron (oder Passiv) Eine Anfrage wird auf einem System verarbeitet und später synchronisiert. Dies erlaubt Latenzen zwischen den Synchronisierungen, lässt jedoch Konflikte zu, welche später erkannt und aufgelöst werden müssen. Asynchrone Replikationsysteme sind nicht echtzeitfähig und können unter Anderem nicht für Anwendungen wie z.B. Platzreservierungen eingesetzt werden, da die Konfliktauflösung ein zurückrollen des Geschäftsprozesses bedeuten würde. Asynchrone Replikations Architekturen Master – Slave Replikation Ein Master verarbeitet alle schreibenden Anfragen und synchronisiert seine Daten auf die Slave Systeme. Die Slave Systeme erhalten nur materialisierte Sichten und erlauben lediglich Schreibzugriff. Aufgrund der Tatsache, das alle Schreibenden Anfragen an den Master gesendet werden müssen, wird keine Konfliktauflösung benötigt, da keine Konflikte durch die Replikation entstehen können. Es kann lediglich vorkommen das Clients von den Slave-Systemen Alte, noch nicht replizierte Daten lesen. Multi Master Jedes Master System verarbeitet Anfragen individuell und synchronisiert den neuen Zustand hinterher mit den anderen Master Systemen. Multi Master Systeme benötigt eine Art verteiltes Concurrency Control System um Anomalien zu vermeiden und Konflikte Aufzulösen Replikationskonflikte Replikationskonflikte entstehen wenn auf verschiedenen Mastern nahezu zeitgleich Transaktionen mit denselben oder ähnlichen Zieldatensätzen ausgeführt werden Datenkonflikte Update Konflikt Update Konflikte entstehen wenn zwei zeitnahe, unabhängige Operationen auf zwei unterschiedlichen Master Systemen auf demselben Datensatz stattfinden. Einmaligkeitskonflikt Einmaligkeitskonflikte entstehen, wenn auf zwei Master Systemen Zeitnah Operationen erfolgen die einen neuen (von den Daten ähnlichen) Datensatz anlegen und dadurch im Gesamtsystem die Einmaligkeit, definiert durch einen Primärschlüssel oder ein Unique Constraint, verletzen. Löschkonflikt Der Löschkonflikt ist eine Sonderform des Update Konflikts. Wird auf zwei Mastern zeitnah versucht denselben Datensatz zu löschen so wird das System, welches die Anfrage zuerst erhält dieses Update propagieren. Auf dem zweiten Master System kann, abhängig von der Reihenfolge des Empfangs, die Löschoperation oder das Replication Update nicht ausgeführt werden, da der Datensatz nicht mehr existiert. Transaction Ordering Konflikte Transaction Ordering Konflikte entstehen nur wenn mehr als 2 Multimaster Sites vorhanden sind in einem Gesamtsystem vorhanden sind. Ist die Kommunikation zu einem Master so wird die Kommunikation zwischen den verbleibenden aktiven Mastersystemen fortgeführt. Nachdem die gestörte Kommunikation wiederhergestellt worden ist, wird der Replikationsvorgang auf den wieder erreichbaren Master fortgesetzt, wobei die übrigen Master Systeme ihre Updates unabhängig voneinander versenden. Somit ist die zeitliche Reihenfolge des Eintreffens der Updates nicht gewährleistet. Hierdurch können Konflikte in Daten und der referentiellen Integrität entstehen. Auflösung von Replikationskonflikten Die Erkennung von Konflikten in Replikationssystemen erfolgt automatisch durch die Master Sites. Spalten können eindeutigen Gruppen zugeordnet werden, denen wiederum eine spezifische Konfliktauflösungsmethode zugeordnet wird. Nicht zugeordnete Gruppen sind per default der Shadow Column Group zugeordnet. Auflösungsmethoden für Uniqueness Konflikte Append Site Name Der globale Sitename wird an den Wert der Konfliktspalte angehängt Nur für Alphanumerische Werte Bereinigt den Konflikt technisch, Konfliktauflösung von Hand Append Sequence Eine generierte Zahlenfolge wird an den Wert der Konfliktspalte angehängt Nur für Alphanumerische Werte Bereinigt den Konflikt technisch, Konfliktauflösung von Hand Discard Das Replikationsupdate wird bei Konflikten ignoriert, lokale Datenbevorzugt Auflösungsmethoden für Löschkonflikte Oracle bietet keine Auflösungsmethoden für Lösch Konflikte. Die Auflösung solcher Konflikte ist, da die Entsprechenden Datensätze bereits gelöscht worden sind auch nicht notwendig. Auflösungsmethoden für Update Daten-Konflikte Overwrite Das letzte Replikationsupdate überschreibt existierende Daten Methode konvergiert in Multimaster Systemen nicht Discard Das Replikationsupdate wird bei Konflikten ignoriert, lokale Datenbevorzugt Methode konvergiert in Multimaster Systemen nicht Latest Timestamp Die Anfrage mit dem jüngsten Zeitstempel wird ausgeführt Methode konvergiert in Multimaster Systemen Earliest Timestamp Die Anfrage mit dem ältesten Zeitstempel wird ausgeführt Methode konvergiert in Multimaster Systemen nicht Minimum Der numerisch kleinste Wert wird verwendet Methode konvergiert in Multimaster Systemen, falls Daten stets immer kleiner werden Maximum Der numerisch größte Wert wird verwendet Methode konvergiert in Multimaster Systemen, falls Daten stets immer größer werden Additive Numerische Konfliktdatensätze werden addiert Methode konvergiert in Multimaster Systemen, falls sich die Daten aufsummieren Average Der numerische Durchschnitt der Konfliktwerte wird verwendet. Methode konvergiert in Multimaster Systemen nicht Priority Group Werte einer Spalte sind vordefiniert und mit Prioritäten versehen Im Konfliktfall wird der Wert mit der höchsten Priorität verwendet Methode konvergiert in Multimaster Systemen mit geordneten Update Werten Site Priority Die Daten von einer festgelegten priorisierten Site werden bei Konflikten verwendet Methode konvergiert in Multimaster Systemen nicht Replizierbare Objektklassen in Oracle 10g Die in Oracle 10g replizierbaren Objekte sind: Tabellen Indexe Views and Object Views Packages und Package Bodies Prozeduren und Funktionen Nutzer-Definierte Typen und Type Bodies Trigger Synonyme Indextypen Nutzer-Definierte Operatoren Replikationshierarchie Replikation Object Ein Replikation Object ist das unterste Element der Hierarchie und kann eines der oben genannten Objekte darstellen. Replikation Group Eine Replication Group fasst mehrere beliebige Replikation Objects zusammen. Replikation Groups dienen als logische Einheit um zusammengehörige Elemente sinnvoll zu Replikationstasks zu gruppieren. Jede Replication Group kann in multiplen Replication Sites vorhanden sein. Replication Site Die Replication Site repräsentiert den Standort / Server. Eine Replication Site verwqaltet mehrere Replication Groups. Für jede Replication Group kann sich die Site entweder Master Site oder als Materialized View verhalten. Beides gleichzeitig hingegen ist ausgeschlossen. Betriebsarten der Replikation in Oracle 10g Multimaster Replication In der reinen Multimaster Replication in Oracle teilen sich 2 oder mehr Server dieselbe Replication Group als Master. Anfragen aller Art entsprechend können auf allen Systemen ausgeführt werden, jedoch müssen Konflikte zwischen den Mastern erkannt und aufgelöste werden. Materialized View Replication Die Materialized View Replication in Oracle entspricht der Master Slave Replikation. Hierbei sind einem Master ein oder mehrere Slave - Server bzw. Materialized View Sites zugeordnet. Die Materiealized View Sites werden durch den Master aktuell gehalten. Clients können ihre Leseanfragen günstig über den lokalen Slave Server ausführen, müssen jedoch für schreibende Anfragen eine Verbindung zur Master Datenbank herstellen. Hybrid – Konfigurationen In Hybriden Konfigurationen gibt es sowohl mehrere Master Sites als auch Materialized View Sites auf verschiedenen physischen Servern. Hierbei kann ein und der Selbe Server für unterschiedliche Replikation Groups verschiedenen Rollen einnehmen. Durch diese differenzierte Aufteilung, ist es nach der Erstellung eines Lastprofils möglich, Tabellen mit stark überwiegenden Leseanfragen als Gruppe zusammenzufassen und als Materialized View Replication aufgesetzt werden, während die wenigen Tabellen welchen vermehrt Schreibzugriff erfahren, im Multimaster Modus gruppiert werden können. Replikationswerkzeuge in Oracle 10g Replication Management Tool Das Replication Management Tool ist eingebettet in der Oracle Enterprise Manager Console Sie besitzt ein grafisches Frontend mit Wizard und greift ihrerseits auf die Replication Management API zu. Replication Management API Die Replication Management API stellt eine Programmierschnittstelle in PL/SQL bereit, über welche einzelnen Replikationsfunktionen direkt aufgerufen werden können. Diese Varriante eignet sich besonders zur engen Verzahnung der Replikation mit eigenen Applikationen. Zusammenfassung Vorteile von Replikationssystemen Die Vorteile eines Replikationssystems sind vielfältig. Zum einen wird eine erhöhten Verfügbarkeit und Ausfallsicherheit erreicht, zum anderen dienen Replikationsysteme gleichzeitig als aktives Backup und reduzieren die Wahrscheinlichkeit von komplettem Datenverlust. Durch Replikation kann die Performanz des Gesamtsystems durch Parallelität der Lastverteilung über jene Grenzen hinaus steigern, denen Einzelsysteme unterliegen und dabei kostengünster sein als Einzelsysteme gleicher Performanz. Weiterhin können Replikationsysteme zur Verringerung des Internet Traffic und somit zur Kosteneinsparung genutzt werden. Die geschieht, in dem den Clients unterschiedlicher Standorte jeweils ein lokales Replikationsystem mit schneller Andbindung zur Verfügung gestellt wird. Über diese Methode ist auch Offline Computing auf read-only Daten möglich während die Verbindung zum zentralen Datenbankserver gestört ist. Nachteile von Replikationssystemen Die Nachteile eines Replikationssystems liegen in den zusätzlich aufzuwendenden Hardwarekosten. Weiterhin steigen bei Replizierten Systemen die Anforderungen an die Zuverlässigkeit der Netzwerkanbindung welches ebenfalls erhöhte Kosten zur Gewährleisung dieser verursachen kann. Darüber hinaus fällt zusätzlicher Aufwand für Synchronisierung und Konfliktauflösung der einzelnen Systeme an und der Administrationsaufwand erhöht sich. Quellenverzeichnis Diese Ausarbeitung entstand unter Nutzung der folgenden Informationsquellen: http://download.oracle.com/docs/cd/B14117_01/server.101/b10733/toc.htm http://download.oracle.com/docs/cd/B14117_01/server.101/b10732/repoverv.htm#197 15 http://download.oracle.com/docs/cd/B14117_01/server.101/b10732/repconfl.htm#223 36 http://en.wikipedia.org/wiki/Replication_%28computer_science%29 http://de.wikipedia.org/wiki/Replikation_%28Datenverarbeitung%29