Kein High Availability Konzept => Wie ich Verfügbarkeit durch Clustering oder AlwaysOn erhöhe

Wenn einer fragt: „Was ist mit Ausfall?“ – und keiner hat ’ne Antwort

SQL Server läuft.
Aber nur, wenn er läuft.
Kein Cluster. Kein Failover. Kein Notfallplan.

Dann reicht ein Stromausfall,
ein Patch,
eine versehentliche VM-Pause –
und das System steht.

Ich zeig Dir, wie ich Hochverfügbarkeit im SQL Server sauber aufziehe –
von pragmatisch bis anspruchsvoll.

Optionen für High Availability

TechnikVerfügbarkeitFailoverAufwandLizenzbedarf
Windows Failover ClusterhochautomatischhochEnterprise / Standard
Always On FCIhochautomatischhochWSFC + shared storage
Always On AGsehr hochautomatischhochEnterprise (voll), ab 2016 auch Basic AG
Log Shippingmittelmanuellmittelauch mit Standard möglich
Database MirroringveraltetautomatischmittelStandard bis 2016
Replikationspeziellkein Failoverhochnur für bestimmte Use-Cases
Azure SQL / MIsehr hochautomatischgeringCloud only

Beispiel: Always On Availability Group

Ab SQL Server 2016 geht’s auch mit Standard Edition (Basic AG).
Für bis zu 2 Knoten, 1 Datenbank.

Voraussetzungen

  • Windows Server Failover Cluster (WSFC)
  • Gleiche SQL Server-Version + Patchstand
  • Gemeinsames Domänennetzwerk
  • Listener (für automatische Verbindung)

Schritt 1: Cluster vorbereiten

# Windows PowerShell
New-Cluster -Name SQLCLUSTER01 -Node SQL01,SQL02 -StaticAddress 192.168.1.100

Dann SQL Server auf beiden Knoten installieren.
SQL Services als Clusterressource einrichten.

Schritt 2: Availability Group konfigurieren

Im SQL Server Management Studio (SSMS):

  • Neue Availability Group anlegen
  • Primäre Datenbank auswählen
  • Backup/Restore auf Sekundärknoten automatisieren
  • Listener konfigurieren (Name + Port)

Beispiel-T-SQL:

ALTER AVAILABILITY GROUP [AG_ERP]
ADD DATABASE [ERPDB];

Schritt 3: Verbindung über Listener

Die Clients (z. B. Access, Anwendungen) verbinden sich nicht mehr mit dem Servernamen,
sondern mit dem Listener:

Server=tcp:AGLISTENER01,1433;Database=ERPDB;Integrated Security=true;

Im Failoverfall übernimmt der zweite Knoten –
ohne dass Du oder der Client etwas tun müssen.

Monitoring per T-SQL

Status prüfen

SELECT ag.name AS AGName, 
       rs.role_desc AS Knotenrolle, 
       drs.synchronization_state_desc AS SyncStatus
FROM sys.availability_groups ag
JOIN sys.dm_hadr_availability_replica_states ars ON ag.group_id = ars.group_id
JOIN sys.dm_hadr_database_replica_states drs ON ag.group_id = drs.group_id
JOIN sys.dm_hadr_availability_replica_cluster_states rs ON ars.replica_id = rs.replica_id

Letztes Failover prüfen

SELECT * 
FROM sys.dm_hadr_cluster_events 
WHERE event_type_desc = 'FAILOVER_OCCURRED'
ORDER BY time_stamp DESC;

Tipp: Basic AG in der Standard Edition

Ab SQL Server 2016 SP1.
Eine Datenbank.
Kein Listener – aber failoverfähig.

CREATE AVAILABILITY GROUP [AG_Basic]
WITH (AUTOMATED_BACKUP_PREFERENCE = PRIMARY)
FOR DATABASE [MeineDatenbank]
REPLICA ON 
  'SQL01' WITH (
    ENDPOINT_URL = 'TCP://SQL01:5022',
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    FAILOVER_MODE = AUTOMATIC),
  'SQL02' WITH (
    ENDPOINT_URL = 'TCP://SQL02:5022',
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    FAILOVER_MODE = AUTOMATIC);

Client muss dann aktiv die aktuelle Rolle anfragen oder DNS nutzen.

Tabelle: Vergleich AG vs. FCI

KriteriumAlways On AGAlways On FCI
Speichergetrennt pro KnotenShared Storage (SAN, S2D)
Failoverdauersehr kurz (Sekunden)etwas länger
Wartbarkeiteinzelne DBs möglichnur ganze Instanz
Patchingonline möglichKnotenweise (Rolling Patch)
LizenzbedarfAG = mind. Standard 2xFCI = Standard 1x (aktive Instanz)
Komplexitätmittel bis hochhoch

Mein Setup bei KMU-Kunden

FirmengrößeLösung
< 50 UserSQL Standard mit Log Shipping
50–150 UserSQL Standard mit Basic AG
> 150 UserSQL Enterprise mit Always On AG + Listener
Remote onlyAzure SQL mit Geo-Replication

Ein SQL Server ohne Hochverfügbarkeit ist wie ein Segelboot ohne Ruder.

Läuft. Aber nur bis zum ersten Sturm.

Wenn’s kritisch ist – brauchst Du ein Konzept. Keins von Microsoft, sondern eins, das Du verstehst und pflegst.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert