rdaddphp file=support-button.html

 

10 Jahr it schulungen.com

Daher haben wir für Sie ein bundesweit einmaliges Angebot zusammengestellt. Diese  Kompaktseminare bereiten Sie zielgerichtet auf eine Zertifizierung vor. Die Anzahl  der Seminarplätze ist begrenzt und die Anmeldefrist für unten stehende Seminare endet am 07.07.2008. 

 

Angebot:

- Citrix XenApp 4.5 Admin + CCA Certified
- Oracle 11g Administration I und II
- SQL Server 2005 KompaktSeminar + MCITP
- Oracle10g Admin Workshop I und II
- VMware Virtual Infrastructure

 

Anmeldung unter Tel.: 0180 - 501 2002 (14ct/min)

Fallbeispiele & Referenzen
_________________________

 


 

Zusatz-Informationen

No events

Dynamische Werbung

Datenbank-Replikation mit dem Microsoft SQL-Server

 
     
   

Der Microsoft SQL Server stellt Replikationsmechanismen bereit, die eine Abbildung der obigen Konfigurationen erlauben. Die Grundlegenden Techniken werden Snapshot-Replikation, Transaktionale-Replikation und Merge-Replikation genannt. Bezogen auf den SQL Server lässt sich obiges Diagramm wie folgt darstellen:

Synchron
Transaktionale Replikation Transaktionale Replikation
Log Shipping --------------- Aktualisierende Abonnenten
Asymmetrisch -------------- Symmetrisch

Asynchron
Transaktionale Replikation Merge Replikation
Asymmetrisch -------------- Symmetrisch

Verleger - Abonnent
Ein Verleger ist ein Server, der Datenbanken zur Replikation veröffentlicht. Jede einzelne Veröffentlichung wir Publikation genannt, die wiederum aus einzelnen Artikeln (Tabellen) bestehen kann. Grundsätzlich können Datenbanken und Tabellen mehrfach publiziert werden.
Ein Server, der eigene Datenbanken mit einer Publikation verbindet, wird Abonnent genannt.
Unabhängig von der Replikationsart kann die Synchronisation sowohl zentral den Replikaten aufgezwungen als auch dezentral angefordert werden. Die beiden Verfahren werden Push- und Pull-Prinzip genannt.

Filtern von Daten
Alle Replikationsarten unterstützten das Filtern der replizierten Daten. Dabei können sowohl ein Ausschluss von Tabellenfeldern (Spalten) als auch eine Filterung der Datensätze möglich. Die Filterung der Datensätze erfolgt in der Art einer SQL Where-Klausel und kann sowohl statisch (feste Bedingung) als auch dynamisch erfolgen. Bei der dynamischen Filterung kann auf Systemvariablen (z.B. Benutzer- oder Servername) als auch auf benutzerdefinierte Funktionen zurückgegriffen werden.

Snapshot-Replikation
Bei diesem einfachsten Fall der Replikation werden Schemaskripte für den publizierten Teil einer Datenbank nebst Bulk Dateien der Daten erzeugt und in ein spezielles Verzeichnis, dem sogenannten Snapshot Folder, gestellt. Der Abonnent greift auf dieses Verzeichnis zu und wendet zuerst die Schemaskripten auf die Datenbank an. Dabei ist eine Festlegung möglich, ob die vorhandenen Tabellen ersetzt oder beibehalten werden.
Anschließend werden die Daten eingespielt, wobei folgende Optionen möglich sind: löschen aller vorhandener Daten, nur einzuspielende Daten ersetzen oder bestehende Daten beibehalten.
Wichtigstes Einsatzgebiet für die Snapshot-Replikation ist die Erstsynchronisation von Replikaten.

Da eine Erstsynchronisation über langsame Verbindungen oftmals zu aufwändig ist, kann diese alternativ über FTP, alternative Snapshot Folder oder so genannte „Pack And Go"-Snapshots erfolgen. Im Fall des alternativen Snapshot Folders kann die Übertragung mittels Band oder CD erfolgen. Bei den „Pack and Go" Snapshots werden bereits vorhandene Abonnenten „geklont" (nur bei Pull-Konfigurationen!).

Transaktionale Replikation
Die Transaktionale Replikation beruht auf der Weitergabe der Datenänderungen abgeschlossener Transaktionen an die Abonnenten. Diese wenden dann dieses Protokoll auf die eigene Datenbank an und „rekonstruieren" dadurch die Transaktionen. Ist der Abonnent ein SQL Server System, so werden die After Images des Transaktionsprotokolls weitergeleitet. In heterogenen Szenarien werden SQL Anweisungen für das Zielsystem generiert.
Zwei wichtige Dienste bestimmen die Transaktionale Replikation: Log Reader und Distributor.

Am Verleger läuft der Log Reader Agent und liest das Transaktionsprotokoll. Daraus werden je nach Zielsystem die sogenannten Replications Commands erzeugt und in die Verteilerdatenbank geschrieben. Diese fungiert als Zwischenpuffer und speichert Änderungsanweisungen so lange, bis sie an alle Abonnenten weitergeleitet wurden. Die Verteilung der Änderungsanweisungen übernimmt der Distribution Agent. Die Hauptlast liegt dabei beim Verteiler, der zur Entlastung des Verlegerservers auch auf einem eigenständigen Server laufen kann.
Diensteinstellungen ermöglichen die Abstimmung der Sicherungen mit der Weitergabe der Datenänderungen. Dadurch können Verleger, Verteiler und Abonnenten im Störungsfall jederzeit ohne Unterbrechung der Replikation wiederhergestellt werden. Das jeweilige Zielsystem wir dann automatisch auf den aktuellen Stand gebracht, indem gegebenenfalls die Datenänderungen nochmals geliefert werden.

Ein besonderer Einsatzfall ist das Katastrophen-Recovery mit Hilfe des so genannten Log Shipping der Enterprise Edition. Dabei wird das Transaktionsprotokoll des Produktivservers kontinuierlich an die Standby Server übertragen, auf den im Störungsfall umgeschaltet wird. Diese befinden sich also in einem permanenten Wiederherstellungsprozess.

Zwar halten die Standby Server ein aktuelle Kopie des Produktivsystems, die auch für Lesezwecke verwendet werden können, aber im Störungsfall müssen die Clientanfragen umgeleitet werden, was aufgrund der eigenen Netzwerksidentifikation (Servername, IP-Adresse) der Standby System nicht ohne Umkonfiguration erfolgen kann. Für diesen Anwendungsfall ist das Failover Clustering der Enterprise Edition in den meisten Fällen die bessere Lösung.

Die Transaktionale Replikation arbeitet sehr robust mit hohem Durchsatz und ist relativ einfach zu konfigurieren. Bei gut verbundenen Servern liegt die Verzögerung im Sekundenbereich.

Die Transaktionen bleiben atomar, Konflikte werden dadurch vermieden, dass am Abonnenten nur gelesen wird. Insofern ist sie von Ihrer Art eher für asymmetrische Konfigurationen zur Verteilung der Leselast auf mehrere Server interessant.

Typische Einsatzgebiete sind etwa im Internet die Erhöhung von Zugriffsgeschwindigkeit und Verfügbarkeit beim Browsen des Warenkatalogs in E-Commerce-Systemen, Mirror Sites und Suchmaschinen oder die Datenbereitstellung in Data Warehousing Umgebungen. Letzterer Anwendungsfall wird durch die Möglichkeit der Datentransformation während des Replikationsvorgangs mit Hilfe des DTS Dienstes unterstützt.

Zwei Varianten der Transaktionalen Replikation erlauben auch eine Datenänderung in den Replikaten: Bidirektionale Replikation und aktualisierende Abonnenten.

Im ersten Fall treten sowohl die primäre Datenbank als auch das Replikat jeweils als Verleger und Abonnent auf. Eine so genannte Loopback Detection verhindert, dass eingespielte Datenänderungen zurück an den Originator geliefert werden. Allerdings ist diese Technik nur für partitionierte Datenbanken interessant, da der SQL Server für dieses Szenario keine Konflikterkennungsmechanismen bereitstellt.

Bei den aktualisierenden Abonnenten (Updating Subscribers) werden Änderungsanweisungen in den Replikaten abgefangen und auf die Verlegerdatenbank angewandt. Von dort aus werden die Änderungen dann sofort auf den Abonnenten repliziert. Dabei übernimmt der DTC Dienst (Distributed Transaction Koordinator) die Aufgabe der Befehlsweiterleitung über ein Zweiphasen Synchronisationsprotokoll. Allerdings erhalten die anderen Replikate die Änderung verzögert beim nächsten Replikationsvorgang, weshalb es sich hierbei nicht um eine vollständig symmetrisch synchrone Lösung handelt.

Ein interessanter Aspekt dieser Lösung ist die Beibehaltung der transaktionalen Konsistenz aufgrund der Tatsache, dass Änderungen nur in der zentralen Datenbank durchgeführt werden. Allerdings wird hierbei eine dauerhafte, performante Verbindung vorausgesetzt, da sonst die Transaktionen beim Abonnenten in Timeouts laufen. Um dies zu vermeiden, kann zwischen Verleger und Abonnenten eine Message Queue geschaltet werden, die Änderungsanweisungen asynchron überträgt. Allerdings kann es dabei zu Konflikten kommen.