Alwayson Availability Group mit SQL Server 2019

Das mit SQL Server 2012 erstmals eingeführte Alwayson Availiability Group Feature durfte sich in den letzten Jahren über sehr viele Verbesserungen und Neuerungen freuen. So ist das Feature im Rahmen von SQL Server 2019 deutlich umfangreicher geworden. Zu diesem Zweck wollen wir in diesem Beitrag Schritt für Schritt eine kleine Availability Group mit 3 Knoten und SQL Server 2019 erstellen.

Voraussetzungen

Damit unsere Availiability Group auch einwandfrei funktioniert, müssen wir einige Voraussetzungen bezüglich unserer Windows Host Server und SQL Server Instanzen beachten. So müssen wir für unsere Hotserver beachten dass

  • wir keinen Domaincontroller als Node für unsere Availability Group konfigurieren
  • das Betriebssystem nicht älter als Windows 2012 ist
  • wir alle Hotfixes auf unseren Host Maschinen installiert haben
  • wir auf jedem Replikat unserer Availability Group ein Windows Server Failover Cluster (WSFC) installiert haben

Als Voraussetzungen für unsere SQL Server Instanzen gilt, dass

  • jedes Replikat eine Node in unserem WSFC darstellt
  • keines der Replikate einen Active Directory Dienst ausführt
  • jede Instanz der selben SQL Server Version entspricht

Beherzigen wir diese Voraussetzungen, können wir dem erstellen unserer Availability Group beginnen.

Hinzufügen des Windows Failover Clusters auf allen Replikaten

Hierfür gehen wir auf all unseren Host-Maschinen, welche wir als Node in unsere Availability Group aufnehmen wollen, wie folgt vor:

  • Wir öffnen den Server Manager auf dem gewünschten Host
  • Anschließend klicken wir auf Rollen und Features hinzufügen und wählen in der Feature Liste die Option Failoverclustering aus
  • Sollten Sie auf Ihrer Maschine noch nicht über das .NET Framework 3.5.1 oder höher verfügen, setzen sie diesen Haken ebenfalls in der Feature Liste
  • Mit einem finalen Klick auf Installieren werden alle ausgewählten Features installiert

Haben wir diese Schritte auf allen gewünschten Hosts durchgeführt, können wir damit beginnen, das WSFC auf unserem primären Replikat konfigurieren.

Konfigurieren des WSFC auf dem primären Replikat

Hierfür öffnen wir den Server Manager auf dem primären Replikat und wählen unter Tools am oberen Rechten Bildschirmrandden Failovercluster Manager aus und klicken auf Konfiguration Überprüfen

Hier tragen wir nun die Namen all der SQL Server ein, welche wir in unsere Availability Group aufnehmen wollen.

Nach einem Klick auf Weiter kommen wir auf die Seite Testing Options. Hier wählen wir Alle Tests durchführen. Sollten hier Warnmeldungen auftreten, so stellen Sie sicher dass sie mögliche Fehler korrigieren.

Nachdem nun die Validierung und die Zusammenfassung abgeschlossen sind, öffnet sich der Clustererstellungs-Assistent. Im Register Zugriffspunkt für die Clusterverwaltunggeben wir nun den gewünschten Namen für unser Cluster an.

Haben wir diesen Vorgang abgeschlossen, wurde unser Cluster erfolgreich erstellt. Um zu prüfen, ob auch alles korrekt erstellt wurde, können wir auf unseren sekundären Replikaten den Failover Cluster Manager verwenden.

Alwayson Installieren

Um Alwayson zu installieren, müssen hierfür die einzelnen SQL Server Instanzen konfigurieren. Hierfür öffnen wir den SQL Server Configuration Manager auf jedem Replikat. Anschließen klicken wir mit einem Rechtsklick unter SQL Server Services auf den Dienst unserer SQL Server Instanz und wählen die Eigenschaften aus. Wir öffnen nun den AlwaysOn High Availability Reiter und setzen einen Haken bei Enable Always On Availability Groups.

Anschließend starten wir den SQL Server Dienst einmal neu, damit unsere Änderungen angewendet werden.

Als nächsten Schritt stellen wir sicher, dass alle unsere Datenbanken im Full Recovery Mode sind. Während der Installation der Availability Group sollten diese Datenbanken aus der Transaktionslogsicherung entfernt werden. Diese können allerdings nachträglich wieder hinzugefügt werden.

Nun führen wir auf allen Datenbanken, welche wir in unsere Availability Group aufnehmen wollen, ein Vollständiges und ein Transaktionslogsicherung mithilfe dieses Skriptes durch:

--full backup for Testdb
BACKUP DATABASE Testdb TO  DISK = N'S:\MSSQL\Backups\Testdb_FullBackup.bak'
WITH NOFORMAT, NOINIT, NAME = N'Testdb-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10, CHECKSUM
GO

--translog backup for Testdb
BACKUP LOG Testdb TO  DISK = N'S:\MSSQL\Backups\Testdb_TlogBackup.trn'
WITH NOFORMAT, NOINIT, NAME = N'Testdb-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10, CHECKSUM
GO

Wahlweise können die Backups auch manuell via SSMS durchgeführt werden.

Auf unserem Primären Replikat öffnen wir nun das SQL Server Management Studio (SSMS) und klappen den AlwaysOn High Availability Ordner aus. Mit einem Rechtsklick wählen wir nun Availability Groups und anschließend New Availability Group Wizard… aus.

Hier spezifizieren wir als erstes den Alwayson Group Namen. Ebenfalls setzen wir hier einen Haken für die Database Level Health Detection aus:

Nun wählen wir all die Datenbanken aus, die Teil unserer Availability Group sein sollen. Hierbei ist es nicht von Nöten, alle Datenbanken der Instanz auszuwählen:

Neben jeder Datenbank befindet sich ein blauer Link, der angibt, ob eine Datenbank bereit ist, in unsere Gruppe aufgenommen zu werden oder nicht. Wenn der Link nicht “Meets prerequisites” lautet, bestehen noch Fehler. Mit einem Klick auf den Link, erhalten wir hierzu eine Nähere Erläuterung.

Als nächstes gelangen wir auf die Specify Replicas Seite, in welcher wir nun alle Replikate angeben, welche Teil unserer AvailabilityGroup sein sollen. Mit einem Klick auf add Replica fügen wir diese hinzu:

Unter dem Reiter Endpoint am oberen Rand geben wir den Port 5022 an. Sollten sie über mehrere SQL Server Instanzen auf einem Replikat verfügen, muss hier gegebenfalls ein anderer Port angegeben werden.

Der nächste Reiter ist für die Sicherungseinstellungen. Hier können wir auswählen, wo unsere Sicherungen ausgeführt werden sollen.

Der nächste Reiter auf der Seite ist der für den Listener. Hier wählen wir Create an availability group listener. Hier geben wir den DNS-Namen ein, der anschließend in der Anwendungsverbindungszeichenfolge verwendet wird. Wir vergeben den Port 1433 und geben die IP-Adresse für unseren Listener ein. Dies sollte eine nicht verwendete IP-Adresse in Ihrem Netzwerk sein:

Der letzte Reiter ist Read-Only Routing. Dies wird verwendet, wenn SQL Server schreibgeschützte Verbindungen zu einem sekundären Replikat leiten soll. Diese Funktion muss über eine Routing-URL und eine schreibgeschützte Routing-Liste verfügen. Innerhalb des Assistenten können wir die Routing-URL angeben, die Routing-Liste können wir jedoch zu diesem Zeitpunkt noch nicht angeben. Um die Routingliste anzugeben, müssen wir die Eigenschaften der AlwaysOn-Gruppe nach ihrer Erstellung öffnen oder mit TSQL oder PowerShell hinzufügen

Wir fahren fort und klicken auf Next

Als nächstes kommen wir auf die Seite Select Initial Data Synchronization. Wir wählen hier die Option Automatic seeding aus, damit SQL Server automatisch auf allen Replikaten die gewünschten Datenbanken erstellt.

Als letzten Schritt stellen wir sicher, dass unsere Validierungsprüfungen erfolgreiche Ergebnisse liefern. Ist dies der Fall, haben wir es fast geschafft.

Auf der Summary Seite können wir nun noch einmal überprüfen, ob unsere Konfiguration korrekt ist

Ist hier nun alles zu unserer Zufriedenheit und treten keine weiteren Fehler auf, können wir unsere Availability Group mit einem Klick auf Finish erfolgreich erstellen.

Nachdem wir unsere Availability Group erfolgreich erstellt haben, können wir auf SSMS genaue Details einsehen:

Mit einem Rechtsklick auf unsere Availability Group können wir die Option Show Dashbord auswählen. Er öffnet sich ein von SSMS bereitgestelltes Dashboard mit dem wir den Zustand und die Gesundheit unserer Group überwachen können: