In diesem Artikel wird der schrittweise Bereitstellungsprozess des SQL Server-Protokollversands erläutert. Es ist die Notfallwiederherstellungslösung auf Datenbankebene, die einfach einzurichten und zu warten ist.
Der Protokollversand umfasst drei Schritte:
- Erstellen Sie die Protokollsicherung in der primären Datenbank.
- Kopieren Sie die Sicherung an den Netzwerkspeicherort oder in das spezifische Verzeichnis auf dem sekundären Server.
- Stellen Sie die Protokollsicherung auf dem sekundären Server wieder her.
Die Protokollversandtechnologie führt die oben beschriebenen Schritte mithilfe von SQL Server-Agent-Aufträgen aus. Während des Konfigurationsprozesses erstellt der Protokollversandassistent diese Jobs auf primären und sekundären Servern.
Der Protokollversand kann in zwei Betriebsmodi erfolgen.
- Wiederherstellungsmodus . Der SQL-Job stellt Transaktionsprotokollsicherungen in der sekundären Datenbank wieder her. Der Status der Datenbank ist RESTORING , und es ist nicht zugänglich.
- Standby-Modus . Der SQL-Job stellt Transaktionsprotokollsicherungen in der sekundären Datenbank wieder her, aber die Datenbank kann im schreibgeschützten Modus bleiben. Daher können Benutzer Lesevorgänge darauf ausführen. Mit dieser Option können wir die Berichtsanwendung auslagern.
Hinweis:Der Standby-Modus hat einen Nachteil:Die Datenbank ist während der Ausführung des Wiederherstellungsjobs nicht verfügbar. Alle mit der Datenbank verbundenen Benutzer müssen während dieses Vorgangs die Verbindung trennen. Andernfalls kann sich der Wiederherstellungsjob verzögern .
Der Hauptnachteil des Protokollversands ist das Fehlen einer automatischen Failover-Unterstützung. Um ein Failover durchzuführen, müssen Sie die folgenden Schritte ausführen:
- Generieren Sie eine Protokollfragmentsicherung und kopieren Sie sie auf einen sekundären Datenbankserver.
- Alle Protokollversandaufträge auf dem primären Server stoppen.
- Stellen Sie das Protokoll auf dem sekundären Server wieder her.
Dieser Prozess kann die Verfügbarkeit der sekundären Datenbank verzögern.
Nun fahren wir mit der schrittweisen Prüfung des Bereitstellungsprozesses fort. Zunächst haben wir die Arbeitsstation vorbereitet, indem wir sie wie folgt eingestellt haben:
Servername | Rolle |
SQL01 | Primärer Server |
SQL02 | Sekundärserver |
iSCSI\SQL2017 | Überwachungsserver |
\\domain\Protokollversandsicherungen | Netzwerkfreigabe zum Kopieren der Backups |
Konfigurieren Sie den primären Server
Die SQL01 fungiert als primärer Server und die Datenbank. Wir werden den Protokollversand zwischen der AdventureWorks2017-Datenbank einrichten.
Um den Protokollversand zu konfigurieren, stellen Sie eine Verbindung zur SQL01-Instanz her:
- Öffnen Sie SQL Server Management Studio
- Datenbank erweitern
- Klicken Sie mit der rechten Maustaste auf AdventureWorks2017
- Bewegen Sie den Mauszeiger auf Aufgaben
- Klicken Sie auf Transaktionsprotokolle versenden.
Die Datenbankeigenschaften Dialogfeld öffnet sich.
Um den Protokollversand zu aktivieren, klicken Sie auf Als primäre Datenbank in einer Protokollversandkonfiguration aktivieren Option.
Klicken Sie zum Konfigurieren des Transaktionsprotokollsicherungszeitplans für den Protokollversand auf Sicherungseinstellungen .
Es öffnet sich ein Dialogfenster „Transaktionsprotokoll-Sicherungseinstellungen“.
Geben Sie im Dialogfeld die Netzwerkfreigabe an, auf die Sie die Transaktionsprotokollsicherungen kopieren möchten – den Netzwerkpfad zum Sicherungsordner Textfeld. Sie können den Aufbewahrungszeitraum für Backups unter Dateien löschen, die älter sind als festlegen im Textfeld angegeben. Wenn der Sicherungsauftrag fehlschlägt oder die Sicherungsdatei nicht für die im Textfeld angegebene Zeit vorhanden ist, löst der SQL Server eine Warnung aus.
Beim Protokollversand kopiert SQL Server die Protokolldateisicherungen auf die Netzwerkfreigabe. Der Assistent erstellt während des Bereitstellungsprozesses automatisch einen Backup-Job. Es erstellt auch automatisch einen Zeitplan, aber Sie können ihn ändern, indem Sie auf die Schaltfläche Zeitplan klicken.
In meinem Fall habe ich den Namen des Sicherungsjobs geändert, um ihn zu identifizieren. Der Name des Jobs lautet LogShipping_Backup_AdventureWorks2017 .
Ich habe keine Änderungen am Auftragszeitplan und an den Backup-Komprimierungseinstellungen vorgenommen.
Sekundärserver konfigurieren
Um den sekundären Server und die Datenbank hinzuzufügen, klicken Sie auf „Hinzufügen“ in den Datenbankeigenschaften Dialogfeld.
Ein Dialogfeld namens Sekundäre Datenbankeinstellungen wird Öffnen. Wir müssen eine Verbindung zum sekundären Datenbankserver herstellen. Klicken Sie dazu auf „Hinzufügen.“
Ein Dialogfeld wird geöffnet. Geben Sie den Servernamen ein und klicken Sie auf Verbinden :
Sekundäre Datenbankeinstellungen konfigurieren
Sekundäre Datenbank initialisieren
Auf der Registerkarte „Sekundäre Datenbank initialisieren“ können Sie eine der folgenden drei Optionen zum Wiederherstellen der Datenbank einrichten:
- Wenn die Datenbank auf dem sekundären Server nicht vorhanden ist, können Sie eine vollständige Sicherung erstellen und sie auf dem sekundären Server wiederherstellen. In diesem Szenario können Sie die erste Option verwenden.
- Wenn eine vollständige Sicherung einer Datenbank von anderen Sicherungsaufträgen erstellt wurde oder Sie bereits eine haben, können Sie sie auf dem sekundären Server wiederherstellen. In diesem Szenario können Sie die zweite Option wählen.
- Wenn Sie die sekundäre Datenbank mit dem Status NORECOVERY wiederhergestellt haben, können Sie die dritte Option wählen.
Dateien kopieren
Klicken Sie auf Dateien kopieren Auf der Registerkarte können Sie das Zielverzeichnis für den Speicherort der kopierten Sicherungsdateien angeben. Dort ist auch die Aufbewahrungsfrist definiert.
Der Assistent erstellt einen SQL-Job, um Dateien in das Zielverzeichnis zu kopieren. Der Sicherungszielordner ist \\domain\Log Shipping Backups. Der Name des Kopierauftrags lautet LogShipping_Copy_SQL01_AdventureWorks2017 .
Transaktionsprotokoll wiederherstellen
Im Transaktionsprotokoll wiederherstellen Registerkarte können Sie den Datenbankmodus festlegen. Wenn Sie die Datenbank im schreibgeschützten Modus halten möchten, wählen Sie Standby-Modus aus oder wählen Sie den Modus Keine Wiederherstellung .
In dieser Demo behalten wir den Datenbankstatus als NORECOVERY bei. Sie können die Verzögerung für die Wiederherstellung der Sicherung angeben und Warnungen für Sicherungen konfigurieren, die nicht innerhalb eines bestimmten Intervalls wiederhergestellt wurden. In unserem Fall verwenden wir keine Standardeinstellungen.
Der Name des Wiederherstellungsjobs lautet LogShipping_Restore_SQL01_AdventureWorks2017.
Sobald die Konfiguration abgeschlossen ist, klicken Sie auf OK, um die Änderungen zu speichern.
Wie Sie sehen, wurden der sekundäre Server und die Datenbank im „Raster für sekundäre Serverinstanzen und Datenbanken hinzugefügt ” in den Datenbankeigenschaften Bildschirm.
Überwachungsinstanz konfigurieren
Wenn Sie die Monitor-Serverinstanz konfigurieren möchten, setzen Sie ein Häkchen bei Use a monitor server instance . Um die Überwachungsinstanz hinzuzufügen, klicken Sie auf Einstellungen .
Wir werden die iscsi\SQL2017-Instanz als Überwachungsserver für den Protokollversand verwenden.
In der Protokollversandüberwachungseinstellung Geben Sie im Dialogfeld Serverinstanz überwachen den Namen an Textfeld.
Wir verwenden das sa Konto, um den Protokollversand zu überwachen. Daher müssen Sie sa angeben als Benutzername und Passwort. Sie können auch den Aufbewahrungszeitraum der Überwachungswarnungen und des Verlaufs angeben.
Hier verwenden wir Standardeinstellungen. Der Name des Warnjobs lautet LogShipping_Alert_iscsi\sql2017 .
Klicken Sie auf OK, um die Konfiguration zu speichern und das Dialogfeld zu schließen.
Sie können ein T-SQL-Skript für die gesamte Konfiguration generieren, indem Sie auf die Skriptkonfiguration klicken Taste. Kopieren Sie das Konfigurationsskript entweder in die Zwischenablage oder in die Datei oder öffnen Sie es in einem neuen Fenster des Abfrageeditors.
Wir wollen die Aktion nicht skripten. Sie können diesen Schritt ignorieren.
Klicken Sie auf OK, um die Protokollversandkonfiguration zu speichern, und der Vorgang beginnt:
Sobald der Protokollversand konfiguriert ist, können Sie das Erfolgsdialogfeld sehen:
Failover-Szenario testen
USE [AdventureWorks2017]
GO
CREATE TABLE [Person](
[BusinessEntityID] [int] NOT NULL,
[PersonType] [nchar](2) NOT NULL,
[NameStyle] [dbo].[NameStyle] NOT NULL,
[Title] [nvarchar](8) NULL,
[FirstName] [dbo].[Name] NOT NULL,
[MiddleName] [dbo].[Name] NULL,
[LastName] [dbo].[Name] NOT NULL,
[Suffix] [nvarchar](10) NULL,
[EmailPromotion] [int] NOT NULL,
[ModifiedDate] [datetime] NOT NULL,
CONSTRAINT [PK_Person_BusinessEntityID] PRIMARY KEY CLUSTERED
(
[BusinessEntityID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Führen Sie die folgende Abfrage aus, um Demodaten einzufügen:
insert into [Person]([BusinessEntityID],[PersonType],[NameStyle],[Title],[FirstName] ,[MiddleName],[LastName] ,[Suffix] ,[EmailPromotion],[ModifiedDate])
select top 10 [BusinessEntityID],[PersonType],[NameStyle],[Title],[FirstName] ,[MiddleName],[LastName] ,[Suffix] ,[EmailPromotion],[ModifiedDate]
from Person.Person
Um ein Failover durchzuführen, erstellen Sie eine Tail-Log-Sicherung der Adventureworks2017-Datenbank. Führen Sie folgende Abfrage aus:
Backup Log adventureworks2017 to disk='\\domain\LogShippingBackups\Tail_Log_Backup.trn' with norecovery
Stellen Sie eine Verbindung zu SQL02 (sekundärer Server) her und stellen Sie die Tail-Log-Sicherung mit RESTORE WITH RECOVERY wieder her. Führen Sie den folgenden Code aus:
RESTORE LOG [AdventureWorks2017] FROM DISK = N'\\domain\LogShippingBackups\Tail_Log_Backup.trn' WITH RECOVERY
Führen Sie nach erfolgreicher Wiederherstellung der Tail-Log-Sicherung die Abfrage aus, um zu überprüfen, ob die Daten auf den sekundären Server kopiert wurden:
Select * from person
Abfrageausgabe:
Wie Sie sehen, werden die Daten auf dem sekundären Server wiederhergestellt.
Schlussfolgerung
In diesem Artikel haben wir den SQL Server-Protokollversandprozess und seine Konfiguration erläutert. Wir haben auch den schrittweisen Failover-Prozess des Protokollversands demonstriert.