DBAtlas · Atlas für Datenbankbetrieb

Betrieb von SQL Server Always On AG (Windows und Linux)

SQL ServerStufe: FortgeschrittenDauer: 15–90 min (je nach Szenario)

Keine Installation, sondern Betrieb im Alltag und Störungsszenarien einer installierten Always On Availability Group: Health Check, Diagnose von Verzögerung und Log-Wachstum, geplantes Failover, erzwungenes Failover (FORCE_FAILOVER_ALLOW_DATA_LOSS) und Nacharbeiten, Datenverschiebung anhalten/fortsetzen, synchroner/asynchroner Modus, Datenbanken hinzufügen (Automatic Seeding oder Backup/Restore), Replicas hinzufügen/entfernen, Read-Only Routing und Änderungen am Listener. Unter Windows mit WSFC-, unter Linux mit Pacemaker-Befehlen (pcs).

Wähle auf der Szenariokarte, was du tun möchtest; du kannst das passende Szenario auch direkt öffnen, indem du die Fehlernummer (z. B. 9002, 35264, 41142) in die Katalogsuche eingibst. Gibt es noch keine AG: AG (Windows) oder AG (Linux).

Topologie: AG mit 2–9 Replicas (Windows WSFC oder Linux Pacemaker)

Szenarien

  • AG-Health-Check (Dashboard-Abfragen) — Ist alles in Ordnung? Replica-/Datenbankstatus, Failover-Bereitschaft, Cluster und letzte Rollenwechsel. Ändert nichts.
  • Secondary fällt zurück / Logdatei wächst (Diagnose der Verzögerung) — Die Send-/Redo-Queue wächst, die Daten auf dem Secondary sind veraltet, das Log auf dem Primary läuft bald voll (log_reuse_wait = AVAILABILITY_REPLICA) oder Commits sind langsam (HADR_SYNC_COMMIT).
  • Geplantes Failover (Switchover, kein Datenverlust) — Verschiebt den Primary für Wartung, Patching oder Tests auf einen synchronen, SYNCHRONIZED Secondary; einige Sekunden Unterbrechung, kein Datenverlust.
  • Primary verloren: erzwungenes Failover (FORCE_FAILOVER_ALLOW_DATA_LOSS) — Der Primary (oder der ganze Standort / das Cluster-Quorum) ist verloren und Warten ist keine Option: Ein Secondary wird unter Inkaufnahme von Datenverlust zum Primary gemacht; danach werden die Daten verglichen und die anderen Replicas fortgesetzt.
  • Datenverschiebung anhalten / fortsetzen (SUSPEND / RESUME) — Das Senden von Daten an einen Secondary vorübergehend anhalten (Netzwerkwartung, Massenverarbeitung) oder eine im Status SUSPENDED hängende Datenbank fortsetzen.
  • Synchronen / asynchronen Modus ändern — Ein Replica zwischen SYNCHRONOUS_COMMIT und ASYNCHRONOUS_COMMIT umstellen (entfernter Standort, langsames Netzwerk, DR-Übung) und den Commit-Schutz (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT) einstellen.
  • Datenbank zur AG hinzufügen (Automatic Seeding oder Backup/Restore) — Eine neue oder vorhandene Datenbank in die AG aufnehmen: Automatic Seeding für kleine/mittlere Datenbanken, aus dem Backup für große Datenbanken oder bei langsamem Netzwerk.
  • Replica (Node) hinzufügen — Einen neuen Secondary zur AG hinzufügen: Der Node tritt dem Cluster bei, der Endpoint wird vorbereitet, ADD REPLICA + JOIN, die Datenbanken kommen per Seeding.
  • Replica (Node) entfernen — Einen Secondary, der dauerhaft abgeschaltet oder neu aufgebaut wird, aus der AG und dem Cluster entfernen.
  • Read-Only Routing (Leseweiterleitung) — Verbindungen mit ApplicationIntent=ReadOnly über den Listener an lesbare Secondaries weiterleiten (Reporting-Last vom Primary nehmen).
  • Listener erstellen oder ändern (IP, Port) — Den Listener erstellen, falls keiner existiert, seinen Port ändern oder (Windows) eine IP für ein zweites Subnetz hinzufügen.

Vor dem Start

  • Auf jedem Node sqlcmd (/opt/mssql-tools18/bin/sqlcmd) und … als sysadmin; root-Rechte (pcs). Passwort: read -rsp 'Passwort: ' SQLCMDPASSWORD; export SQLCMDPASSWORD und sudo --preserve-env=SQLCMDPASSWORD bash <script>.sh.
  • PowerShell ist als Administrator mit einem Domänenkonto geöffnet, das in SQL Server sysadmin und im WSFC Administrator ist; sqlcmd und das Modul FailoverClusters sind vorhanden.
  • Zeile 1 der Replica-Liste im Formular ist der aktuelle Primary (prüfe das mit der ersten Abfrage des Health Checks); die Schritte werden anhand dieser Reihenfolge dem richtigen Node zugeordnet.
  • Das Change-Fenster ist genehmigt und das Anwendungsteam informiert…: Der Listener ist einige Sekunden unterbrochen, offene Transaktionen werden zurückgesetzt……: Eine Port-/IP-Änderung betrifft die Connection Strings….
  • Die Entscheidung für das erzwungene Failover wurde von einer berechtigten Person getroffen und Datenverlust wurde akzeptiert: Der Primary ist nicht erreichbar und kommt in absehbarer Zeit nicht zurück. Kann der Primary zurückkommen, ist Warten oder ein geplantes Failover immer besser.

Phasen der Anleitung

  • AG-Health-Check — AG-Dashboard: Replicas, Datenbanken, Failover-Bereitschaft · Cluster-Status (WSFC) · Cluster-Status (Pacemaker) · Letzte Rollenwechsel (AlwaysOn_health)
  • Diagnose von Verzögerung und Log-Wachstum — Diagnose: Queues, Raten und geschätzte Aufholzeit (Primary) · Diagnose: Commit-Wartezeiten (Primary) · Diagnose: Wird das Redo blockiert? (auf den Secondaries) · Lösungsoptionen und Log-Prüfung
  • Geplantes Failover — Diagnose: Ist das Ziel failover-bereit? (…) · Sicherheitsnetz: Laufen lange Transaktionen oder Jobs? (Primary) · Failover: … zum Primary machen (T-SQL) · Failover: … zum Primary machen (pcs) · Prüfen: neuer Primary und Listener
  • Erzwungenes Failover (Datenverlust möglich) — Diagnose: Zustand des Ziels und möglicher Datenverlust (…) · WSFC-Quorum erzwungen starten (…) · Verwaltung der AG-Ressource durch Pacemaker anhalten (…) · Erzwungenes Failover: … zum Primary machen · Prüfen: neuer Primary offen, die anderen SUSPENDED · Snapshot auf dem alten Primary erstellen, um verlorene Daten zu retten (…, sobald er zurück ist) …
  • Datenverschiebung anhalten / fortsetzen — Diagnose: angehaltene Datenbanken und Ursache · …Datenverschiebung anhalten (SUSPEND)…Datenverschiebung fortsetzen (RESUME)… · Prüfen und überwachen
  • Änderung des Verfügbarkeitsmodus — Diagnose: aktuelle Modi und Commit-Schutz · … → … · Commit-Schutz einstellen (Windows) · Commit-Schutz einstellen (Pacemaker) · Prüfen
  • Datenbank zur AG hinzufügen — Diagnose: Ist die Datenbank für die AG geeignet? (Primary) · Vorbereiten: Wiederherstellungsmodell FULL und Backup (Primary) · Replicas auf manuelles Seeding umstellen (Primary) · Datenbank zur AG hinzufügen (Primary) · Seeding überwachen (Primary) · Auf dem Secondary aus dem Backup vorbereiten (NORECOVERY): … …
  • Replica hinzufügen — Neuen Node zum WSFC hinzufügen (Primary) · Always On aktivieren (neuer Node) · Endpoint anlegen und Berechtigungen erteilen (neuer Node) · Neuen Node vorbereiten: HA-Agent, Always On, Cluster-Software · Endpoint-Zertifikat auf den neuen Node kopieren (Primary) · Zertifikat, Endpoint und Pacemaker-Login (neuer Node) …
  • Replica entfernen — Diagnose: zu entfernendes Replica und verbleibende Konfiguration · Node aus dem Pacemaker-Cluster entfernen (Primary) · Replica aus der AG entfernen (Primary) · Node aus dem WSFC entfernen (optional) · RESTORING-Datenbanken auf dem entfernten Node bereinigen (…)
  • Read-only routing — Diagnose: Lesezugriff und aktuelles Routing · Routing-URLs und -Listen festlegen (Primary) · Prüfen: Routing-Liste · Test: Wohin geht eine ReadOnly-Verbindung? · Test: Wohin geht eine ReadOnly-Verbindung?
  • Listener — Diagnose: vorhandene Listener · Virtual-IP-Ressource und Constraints anlegen (Pacemaker) · …Listener erstellen…Listener-Port ändern…IP zum Listener hinzufügen… (Primary) · Firewall- und DNS-Einstellungen · Firewall-Einstellungen · Prüfen: Verbindung über den Listener
Schritt-für-Schritt-Plan für Ihre Umgebung öffnen →