SQL Server AlwaysOn zum Ausführen von Updates und Schemaänderungen in einer 24/7-Umgebung

8

Zunächst muss ich sagen, dass diese Frage aus der Perspektive eines Softwareentwicklers stammt. Leider haben wir keinen DBA, daher müssen wir unsere eigenen Datenbanken verwalten.

Wir haben SQL Server 2012 Enterprise installiert, um eine Datenbank auszuführen, die rund um die Uhr verfügbar sein sollte. Die Datenbank ist ungefähr 150 GB groß und einige Tabellen enthalten Milliarden von Zeilen. Mehrere Dienste treffen tausende Male pro Minute auf die Datenbank, um Echtzeit-Messdaten einzufügen. Wenn die Datenbank eine halbe Stunde lang nicht verfügbar ist, gehen eine halbe Stunde lang Messdaten verloren, die wir uns nicht leisten können ...

In dieser Situation haben wir zwei Hauptprobleme:

  1. Wann und wie installieren wir Microsoft Updates?
  2. Wie wenden wir Schemaänderungen an?

Windows Updates bedarf meiner Meinung nach keiner weiteren Erläuterung. Wenn neue Anforderungen auftreten oder bestehende Anforderungen sich ändern, müssen wir manchmal einige Schemaänderungen vornehmen. Zum Beispiel das Hinzufügen einiger zusätzlicher Spalten, das Ändern von Datentypen, das Ändern der Größe von Varchar-Feldern usw. Einige dieser Änderungen dauern sehr lange oder sogar eine Zeitüberschreitung, da die Datenbank immer stark ausgelastet ist.

Wir denken darüber nach, eine zusätzliche Instanz zu installieren und AlwaysOn zu aktivieren, um Folgendes zu erreichen:

  1. Schalten Sie für Windows-Updates einen Server herunter, installieren Sie Windows-Updates, bringen Sie ihn wieder hoch und aktualisieren Sie dann die zweite Instanz.
  2. Schalten Sie bei Schemaänderungen einen Server herunter, wenden Sie Schemaänderungen an, bringen Sie ihn wieder hoch und wenden Sie dann dieselben Änderungen auf die zweite Instanz an.

Können diese beiden Dinge mit SQL Server AlwaysOn erreicht werden, und ist dies ein gängiger Ansatz? Werden die Daten überhaupt nachträglich synchronisiert? Oder denke ich völlig in die falsche Richtung und gibt es bessere Lösungen?

Jeroen1984
quelle
Wir führen immer ein synchrones manuelles Failover durch, damit wir Dienstag-Patches proaktiv auf Failover-Server übertragen können. Unser WUS-Typ zögerte, diese FS-Server in die WU-Gruppe aufzunehmen, aber er gab schließlich nach und wir haben immer noch einen Job.
BauerInHsv

Antworten:

7

1. Wann und wie installieren wir Microsoft Updates?

Die Verwendung von AOAGs kann möglicherweise dabei helfen, je nachdem, wie viel Ausfallzeit als "zu viel" eingestuft wird. Es gibt immer noch einen Fehler beim Umschalten der primären auf eine synchrone sekundäre, da die Clients während des Umzugs getrennt werden (dies kann in Ihrer Umgebung ein Problem sein oder nicht). Sie müssen die Verbindung mithilfe des Listenernamens wiederherstellen (daher sollten keine Änderungen an der Verbindungszeichenfolge erforderlich sein) und eine Bibliothek verwenden, die dies unterstützt.

1.Fahren Sie für Windows-Updates einen Server herunter, installieren Sie Windows-Updates, bringen Sie ihn wieder hoch und aktualisieren Sie dann die zweite Instanz.

Das sind die Grundlagen, wie es funktioniert. Entfernen Sie das automatische Failover (synchron), installieren Sie die Updates / Patches und starten Sie es neu (in diesem Szenario).

2.Wie wenden wir Schemaänderungen an?

AOAGs werden Ihnen in dieser Hinsicht nicht helfen. Das Transaktionsprotokoll wird grundsätzlich vom primären zum allen sekundären Protokoll abgespielt. Die sekundären können lesbar sein (wenn Sie dies zulassen), können jedoch keine Schreibaktivität (einschließlich ddl-Änderungen) an ihnen vornehmen. Eine synchrone Sekundärseite ist eine Spiegelkopie der Primärseite.

Könnten diese Änderungen vorgenommen werden, wenn die Anwendungsänderungen vorgenommen werden, um Ausfallzeiten zu minimieren? Es kann sinnvoller sein, ein Front-End mit Lastenausgleich zu verwenden, indem Sie beispielsweise F5 verwenden und die Daten über Peer-to-Peer-Replikation synchron halten, als AOAGs zu verwenden. Ich bin kein Replikationsexperte, aber es hört sich definitiv so an, als würden Sie zwei unterschiedliche Systeme benötigen, die über eine Art Frontend mit Lastenausgleich verfügen, damit Änderungen an jeweils einem System vorgenommen werden können, um Ressourcen ein- und auszuschalten, während sie beibehalten werden synchron.

2.Für Schemaänderungen müssen Sie einen Server herunterfahren, Schemaänderungen anwenden, ihn wieder hochfahren und dann dieselben Änderungen auf die zweite Instanz anwenden.

Dies kann mit AOAGs nicht auf diese Weise (oder auf irgendeine Weise wirklich) durchgeführt werden.

Sean Gallardy - Benutzer im Ruhestand
quelle
Vielen Dank für Ihre Antwort, ich glaube, ich verstehe den Punkt. Ihre Antwort basiert auf AOAGs, aber wie wäre es mit Always On Failover-Cluster-Instanzen? Ist diese Lösung auch geeignet, um das gesamte Windows Update-Problem abzudecken?
Jeroen1984
FCIs geben Ihnen HA. Sie können weiterhin fortlaufende Patches ausführen, aber jeweils nur ein Knoten kann über die Ressourcen verfügen, sodass jeweils nur ein Knoten ausgeführt wird. Das einzige, was Sie dadurch erhalten, ist HA für die Instanz, nichts weiter.
Sean Gallardy - Rentner
Danke für die schnelle Antwort! Ich glaube, ich habe jetzt genug Informationen, um eine gute Wahl zu treffen.
Jeroen1984