SQL Server Log Shipping

Der SQL Server Protokollversand (Log Shipping) ist ein Teil der Hochverfügbarkeitstechnologie von SQL Server. Es beschreibt im einfachsten Sinne das Kopieren, Wiederherstellen und Ausführen von Transaktionsprotokollen zwischen Quell- und Zielserver-Instanzen. In der Regel befindet sich der sekundäre Zielserver im Standby Modus, sodass die besagten Protokolle auf dem Quellserver gesichert und an den sekundären Zielserver gesendet und angewendet werden können.

In diesem Artikel erklären wir Ihnen, wie Sie Schritt für Schritt das Log Shipping für SQL Server einrichten können.

Voraussetzung vor dem Start

Um das Log Shipping in SQL Server einzurichten, müssen Sie über Systemadministrator Berechtigungen auf dem Server verfügen.

Mindestanforderungen

  1. SQL Server 2005 oder höher
  2. Alle Editionen (Standard, Arbeitsgruppen, Enterprise) müssen auf allen Serverinstanzen installiert sein
  3. Alle beteiligten Server müssen über dieselbe Einstellung der Groß- & Kleinschreibung haben
  4. Die Datenbank muss das vollständige oder massenprotokollierte Wiederherstellungsmodel verwenden
  5. Es muss ein freigegebener Ordner zum Kopieren der T-Log-Sicherungsdateien existieren
  6. Der SQL Server Agentendienst muss konfiguriert sein
  7. Bestenfalls sollten beide Serverinstanzen dieselbe Version (2005 oder höher) verwenden

Erfüllen Sie die Mindestanforderungen für die Einrichtung des LogShippings in SQL Server, beginnen wir nachfolgend mit der schrittweise Einrichtung.

Schritt 1

Zuerst stellen wir sicher, dass sich unsere Datenbank im vollständigen oder massenprotokollierten Wiederherstellungsmodell befindet. Ist das noch nicht der Fall, können wir mit folgender Abfrage das Datenbankwiederherstellungsmodell ändern:

-- Check recovery model
SELECT [name], [recovery_model_desc] FROM sys.databases WHERE [name] = 'TestDB';

-- Set recovery model
USE [master]
GO
ALTER DATABASE [TestDB] SET RECOVERY FULL WITH NO_WAIT;

Wenn Sie sich nicht sicher sind, ob sich Ihre Datenbank im passenden Wiederherstellungsmodell befindet, können Sie die Einstellung im sys.databases überprüfen.

Schritt 2

Wir öffnen nun SSMS und klicken mit einem Rechtsklick auf die Eigenschaften des Quellservers. Danach setzen wir im Reiter “Transaction Log Shipping” den Haken zur Aktivierung des ausgewählten Servers als Primärdatenbank in der Protokollversandskonfiguration.

Schritt 3

Im selben Fenster klicken wir auf Backup Settings und starten mit der Konfiguration der Transaktionsprotokollsicherung und gelangen in folgendes Fenster:

Zur Sicherung auf Netzwerkebene geben wir den entsprechenden Netzwerkpfad ein. Möchten wir das Transaktionsprotokoll jedoch lokal speichern, geben wir dafür den Pfad des lokalen Zielordners an. Verfügen Sie über die SQL Server 2008 Edition oder höher, können Sie zudem vom Sicherungskomprimierungsverfahren profitieren und auswählen, ob die Sicherung komprimiert gespeichert werden soll. Mit dem Ok bestätigen wir die Konfiguration auf dem Primärserver.

Schritt 4

Wir haben nun den Quellserver mit der Transaktionsprotokollsicherung konfiguriert. Als nächstes müssen wir dies auch für die sekundäre Instanz, den Zielserver vornehmen und eine Verbindung herstellen. Dafür fügen wir eine weitere Datenbank über die Schaltfläche ‘add‘ hinzu und klicken im darauf folgenden Fenster auf ‘connect’.

Sie können beliebig viele Instanzen hinzufügen. Je nach dem, auf wie vielen Instanzen Sie das Log Shipping durchführen möchten.

Ist die Verbindung zu den sekundären Instanzen erfolgreich gewesen, werden 3 Registerkarten zur weiteren Konfiguration freigegeben. Wir können nun festlegen, wie die Daten auf unserem sekundären Server erstellt werden sollen. Dafür haben wir 3 Möglichkeiten:

  1. Wir erstellen eine Sicherung und stellen sie wieder her
  2. Wir verwenden eine vorhandene Sicherung und stellen sie wieder her
  3. Wir tun nichts, da wir die Datenbank bereits manuell wiederhergestellt und in ordnungsgemäßen Zustand versetzt haben.

In der Registerkarte ‘Copy Files’ geben wir nun den Pfad des freigegebenen Zielordners an, in den die kopierten T-Log-Sicherungsdateien kopiert werden sollen. Damit erstellen wir gleichzeitig den Auftrag zum Kopieren auf den sekundären Server.

In der letzten Registerkarte ‘Restore Transaction Log’ geben wir die Statusinformationen für die Datenbankwiederherstellung und den dazu passenden Zeitplan an. Mit diesem Schritt erstellen wir den Wiederherstellungsauftrag.

Schritt 5

Nachdem wir nun die Transaktionsprotokolle konfiguriert haben, wenden wir uns jetzt dessen Überwachung zu, die uns bei möglichen Fehlern benachrichtigt. Hierbei ist zu sagen, dass der Schritt nicht zwingend notwendig – aber hilfreich ist.

Wir klicken auf die Einstellungen um zum Protokollversandmonitor zu gelangen und ihn entsprechend zu konfigurieren. Über ‘Connect’ verbinden wir uns mit dem Monitorserver, der die Überwachung des Quell- und Zielservers oder einer separaten SQL Server Instanz vornimmt. Zusätzlich legen wir fest, wie lange die Datensätze in der MSDB-Datenbank aufbewahrt werden sollen.

Wichtig! → Der Monitorserver kann nur vor der finalen Konfiguration des Protokollversands hinzugefügt werden.

Schritt 6

Mit einem Klick auf ‘Ok’ bestätigen wir die Konfiguration des Log Shippings.

Good to know

→ Der Protokollversand (Log Shipping) unterstützt kein automatisches Failover. Planen Sie daher ein manuelles Failover ein

→ Führen Sie ein manuelles Failover durch, suchen Sie anschließend nach Orphan Users (Benutzer ohne zugehörigen Login) und beheben diese

→ VLDBs empfehlen wir, die Datenbanken manuell wiederherzustellen und nicht den Assistenten zur vollständigen Sicherung zu nutzen.

Fazit

Log Shipping kann durchaus komplex und aufwendig werden, da hier vollständige Datenbankesicherungen und Protokolldateien erzeugt und verarbeitet werden müssen. Gibt es Möglichkeiten, den Prozess zu vereinfachen? Durchaus.

Der SQLSyncer ist eine vollautomatische und plattformunabhängige Datenreplikationslösung. Er migriert und synchronisiert Daten, Tabellen, Strukturen etc. in Echtzeit und ohne Ausfallzeiten. So können Sie ggf. vom umfangreichen Log Shipping Abstand nehmen und Daten auf Objektebene replizieren. Durch die enorme Konfigurierbarkeit des SQLSyncers sind Sie nicht mehr an eine komplette Datenbank gebunden und können individuell Einheiten auf Objektebene auswählen, sie replizieren und zwischen verschiedenen Umgebungen synchronisieren lassen. Um den Vorgang nicht manuell durchführen zu müssen, können Sie zudem die Migration & Synchronisation in festgelegten Iterationsintervallen durchführen lassen und sich über Ergebnisse per Benachrichtigung unterrichten lassen.

Wollen Sie mehr über den SQLSyncer und seine Eigenschaften erfahren? Klicken Sie hier.