# SQL Server Always On: High-Availability & Disaster Recovery
TL;DR / Management Summary Always On Availability Groups (AG) ist die moderne HA-Lösung für den Microsoft SQL Server. Im Gegensatz zum klassischen Failover-Cluster (FCI) benötigt eine AG keinen Shared Storage. Die Daten werden auf Block-Ebene zwischen den Instanzen synchronisiert. Für Senior Admins bietet dies maximale Flexibilität: Wir können Lesezugriffe auf die Replika-Knoten auslagern (Read-Only Routing) und Backups auf den Standby-Server verschieben, um die Produktion zu entlasten.
# 1. Einführung & Architektur
Synchronität im Cluster.
Eine Availability Group ist ein logischer Container für eine Gruppe von Datenbanken, die gemeinsam geschwenkt werden.
# Komponenten
- Primary Replica: Hier finden die Schreibzugriffe statt (Read/Write).
- Secondary Replicas: Halten eine Kopie der Daten (bis zu 8 Knoten).
- Listener: Eine virtuelle IP/Name, mit dem sich die Applikation verbindet. Er leitet den Traffic automatisch zum aktuellen Primary.
# Architektur-Übersicht (Mermaid)
graph TD
APP[Application] -->|Connects to| LIS[AG Listener: 10.0.0.100]
LIS -->|Routes to| PRI[Primary Node: SRV-SQL-01]
PRI -->|Synchronous Commit| SEC1[Secondary Node: SRV-SQL-02]
PRI -->|Asynchronous Commit| SEC2[DR Node: Remote-SQL]
subgraph "Windows Failover Cluster"
PRI
SEC1
SEC2
end
# 2. Einrichtung in der Praxis
Der Weg zum stabilen SQL-Cluster.
# Voraussetzungen
- Windows Failover Cluster: Muss auf OS-Ebene konfiguriert sein (Artikel 536).
- Service Account: SQL Server muss unter einem Domain-Account (gMSA empfohlen) laufen.
- Endpunkte: SQL nutzt Port 5022 für die Datenreplikation.
# Konfiguration (T-SQL)
-- Erstellen eines Endpunkts für die Replikation
CREATE ENDPOINT [Hadr_endpoint]
STATE=STARTED
AS TCP (LISTENER_PORT = 5022)
FOR DATA_MIRRORING (ROLE = ALL);
# 3. Deep Dive: Synchron vs. Asynchron
RPO vs. Performance.
- Synchronous-Commit Mode: Die Transaktion wird erst bestätigt, wenn sie auf dem Secondary gehärtet ist.
- Vorteil: Zero Data Loss (RPO=0).
- Nachteil: Höhere Latenz für die Applikation.
- Asynchronous-Commit Mode: Primary bestätigt sofort.
- Vorteil: Keine Latenz-Beeinträchtigung.
- Anwendungsfall: Disaster Recovery Standorte (Zweigstellen).
# 4. Day-2 Operations: Read-Only Routing
Die Hardware effizient nutzen.
Warum sollten die Secondary-Server nur im Standby warten?
- Aktion: Konfigurieren Sie den Listener so, dass Reporting-Queries (z.B. PowerBI) automatisch auf einen Secondary umgeleitet werden.
- Vorteil: Die Last auf dem Primary sinkt massiv.
# 5. Troubleshooting & “War Stories”
Wenn der Sync bricht.
# Top 3 Fehlerbilder
-
Symptom: AG-Status steht auf
NOT SYNCHRONIZING.- Ursache: Firewall blockiert Port 5022 oder das Log-File der Datenbank ist voll.
- Lösung:
sys.dm_hadr_availability_replica_statesabfragen.
-
Symptom: Automatischer Failover schlägt fehl.
- Ursache: Das Cluster-Quorum (Artikel 508) ist nicht stabil oder der SQL-Service-Account hat keine Rechte im AD.
-
Symptom: Listener ist nicht erreichbar.
- Ursache: Multi-Subnet Setup. Der Client-Treiber unterstützt kein
MultiSubnetFailover=True.
- Ursache: Multi-Subnet Setup. Der Client-Treiber unterstützt kein
# “War Story”: Der “Log-Zerstörer”
Ein Admin aktivierte Always On, konfiguriert auf “Synchronous”. Er startete einen Massen-Import von 100 Mio. Zeilen.
Das Ergebnis: Der SQL Server fror praktisch ein. Da jeder Insert erst über eine 1 Gbit Leitung zum Secondary bestätigt werden musste, sank die Performance auf ein Zehntel.
Lehre: Bei Massen-Datenoperationen schalten Sie die Replikation temporär auf “Asynchron” oder nutzen Sie dedizierte 10G+ Karten für den Hadr_endpoint.
# 6. Monitoring & Alerting
Den Status tracken.
# Wichtige SQL-Metriken
- Log Send Queue: Wie viel MB hängen in der Warteschlange zum Secondary?
- Redo Queue: Wie schnell kann der Secondary die empfangenen Logs einarbeiten?
# 7. Fazit & Empfehlung
SQL Always On ist der Industriestandard für Windows-Datenbanken.
- Empfehlung: Nutzen Sie Always On statt des alten Datenbank-Mirroring (Deprecated).
- Pro-Tipp: Wenn Sie nur zwei SQL-Server haben, nutzen Sie den Basic Availability Groups Modus (verfügbar in SQL Server Standard Edition), um Kosten zu sparen.
# Anhang: Cheatsheet
| Aufgabe | Befehl / Sicht |
|---|---|
| Status prüfen | sys.dm_hadr_database_replica_states |
| Failover manuell | ALTER AVAILABILITY GROUP [AGName] FAILOVER; |
| Dashboard | SQL Server Management Studio -> Always On Dashboard |
| Port Check | tnc <Knoten> -p 5022 |