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:
- Wann und wie installieren wir Microsoft Updates?
- 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:
- 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.
- 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?