Kann die Absturzsicherheit von SQL Server verbessert werden?


20

Wir haben PCs mit SQL Server (2008 SP4 und 2016 SP1), die regelmäßig an Leistung verlieren. Offensichtlich führt dies manchmal zu (Index-) Beschädigungen der SQL Server-Datenbank, die wir anschließend wiederherstellen müssen.

Mir ist bewusst, dass SQL Server nicht für solche Szenarien entwickelt wurde und die richtige Lösung darin besteht, die Ursache des Stromausfalls zu beheben (mehr dazu weiter unten, wenn Sie neugierig sind). Gibt es dennoch Optimierungsoptionen in SQL Server, die ich festlegen kann, um das Risiko einer Datenbankbeschädigung bei Stromausfall zu verringern ?


Hintergrund: Der "PC" ist ein Windows-Tablet, das auf einem Gabelstapler montiert ist. Wenn der Benutzer den Gabelstapler ausschaltet, verliert das Tablet an Strom. Wir haben versucht, den Benutzern beizubringen, Windows vor dem Ausschalten des Gabelstaplers ordnungsgemäß herunterzufahren, sind jedoch gescheitert (wahrscheinlich, weil das Ausschalten die meiste Zeit funktioniert). Wir untersuchen derzeit auch andere Optionen, wie das Hinzufügen einer USV, die dem Tablet signalisiert, dass es bei Stromausfall heruntergefahren werden soll.

Antworten:


28

Mir ist bewusst, dass SQL Server nicht für solche Szenarien entwickelt wurde und die richtige Lösung darin besteht, die Ursache des Stromausfalls zu beheben. […]

Eigentlich ist es für den Umgang mit Stromausfällen ausgelegt, deshalb gibt es Dinge wie Write Ahead Logging (WAL) und Crash Recovery beim Start (oder wie auch immer Sie es nennen möchten). Dies geschieht unter anderem dadurch, dass Schreibvorgänge nicht zwischengespeichert werden, wie es scheint, was das Tablet tut, daher die Beschädigung.

Gibt es dennoch Optimierungsoptionen in SQL Server, die ich festlegen kann, um das Risiko einer Datenbankbeschädigung bei Stromausfall zu verringern?

Nein, SQL Server macht das, was es soll. Sie sollten entweder außerhalb von SQL Server nachsehen (Windows-Einstellungen für das Zwischenspeichern von Laufwerken [welche SQL deaktiviert sein soll, aber wir können Sie nicht erzwingen], Hardware- / Firmware-Updates usw.) oder, wie Eric gesagt hat, ein externes Netzteil für relativ viel Geld kaufen billig, was die Symptome lösen könnte (das eigentliche Problem ist wahrscheinlich eine Art Caching oder batteriegepuffertes Schreiben, das nicht wirklich gepuffert ist).



1
Ich habe eine ziemlich gute Vermutung, welche Einstellung der Schuldige ist, wenn es sich um ein Betriebssystemproblem handelt . (obwohl dies wahrscheinlich eines der alten eingebetteten Betriebssysteme ist, wenn ich raten würde, habe ich nie überprüft, ob sie diese Einstellung auch hatten). Und dann lügen zumindest die meisten Consumer-Festplatten unverschämt darüber, den Schreibvorgang aus "Gründen der Leistungsoptimierung" abgeschlossen zu haben, sodass auf diese im Grunde keine Hoffnung besteht.
Voo

26

Wenn das Tablet über einen funktionierenden Akku verfügt , können Sie Windows so konfigurieren, dass es herunterfährt, wenn der Akku fast leer ist .

Wenn das Tablet über einen nicht funktionierenden Akku verfügt, sollten Sie den Akku austauschen. (Ich hatte solche Laptops - Sie wären überrascht, wie günstig Ersatzbatterien bei eBay sein können. Sie funktionieren nicht so gut wie OEMs, aber hey, in dieser Situation ist alles besser als nichts.)

Wenn das Tablet überhaupt nicht über Akkufunktionen verfügt , sollten Sie eine kleine unterbrechungsfreie Stromversorgung (USV) mit USB-Ausgängen hinzufügen, die mit Windows kommunizieren kann, um festzustellen, ob es mit Akkustrom betrieben wird. (Zum Beispiel habe ich meinen eigenen Desktop so konfiguriert, dass er herunterfährt, wenn die USV fast leer ist. Auf diese Weise wird die USV bei einem Stromausfall heruntergefahren, auch wenn ich nicht zu Hause bin.)

Wenn keine davon in Frage kommt, hat man ein bisschen Pech. Es ist ein altes Whitepaper, aber in den SQL Server 2000-E / A-Grundlagen von Microsoft wird im Grunde erklärt, dass Sie ein E / A-Subsystem benötigen, das ordnungsgemäß mit Stromausfällen umgehen kann.

Es gibt Optionen, mit denen Sie das Risiko erhöhen können - z. B. verzögerte Haltbarkeit oder Tabellen, die nur aus Arbeitsspeicher (nicht dauerhaft) bestehen -. Standardmäßig versucht SQL Server jedoch bereits, die Zuverlässigkeit bei jedem Schreiben in das Transaktionsprotokoll zu maximieren. Wenn auch das Schreiben von Transaktionsprotokollen aufgrund zufälliger Stromausfälle nicht garantiert werden kann, geben Sie die 100 USD für eine UPS-Batterie aus.


6

Angenommen, Sie haben eine lokale Datenbank auf dem Gabelstapler und keinen Server, weil die drahtlosen Verbindungen fleckig sind? Offensichtlich wäre es die bevorzugte Lösung, SQL aus dem Stapler zu holen.

Wie auch immer, Brent schlug vor, das Tablet so einzustellen, dass es sich nach x Minuten im Akkubetrieb oder nach ähnlichen Kriterien von selbst ausschaltet.

Andernfalls ist eine kleine USV, die ein normales Herunterfahren auslösen kann, in diesem Fall wahrscheinlich die beste Wahl. Sich bei solchen Dingen auf Benutzer verlassen zu können, ist eine Frage des Scheiterns.


1
"Angenommen, Sie haben eine lokale Datenbank auf dem Gabelstapler und keinen Server, weil die drahtlosen Verbindungen fleckig sind?" Ja, das ist genau der Fall. Die Anwendung hält die lokalen DBs und die Server-DB synchron, sodass die Gabelstapler den von WLAN abgedeckten Bereich verlassen und die Anwendung weiterhin verwenden können.
Heinzi

2

Das zugrunde liegende Betriebssystem muss entweder einen erfolgreichen Schreibvorgang garantieren, oder es wird ein Fehler zurückgegeben. Das Betriebssystem ist wiederum auf Treiber angewiesen, die wiederum auf Firmware angewiesen sind, die auf Hardware angewiesen ist. Wenn entweder die Treiber oder die Firmware oder die Hardware vorhanden sind, kann Windows oder SQL Server nichts dagegen tun.

Aus diesem Grund müssen Sie sich beim Hersteller des Treibers / der Firmware / der Hardware erkundigen.

Auch die Schreibreihenfolge muss über alle Ebenen hinweg gewährleistet sein, damit auch diese überprüft werden müssen.

Selbst batteriegepufferte Caches können ausfallen, z. B. während der Stürme in New York. Einige Rechenzentren waren tagelang nicht erreichbar, und die Batterien wären aufgebraucht

https://www.postgresql.org/docs/devel/static/wal-reliability.html

https://brad.livejournal.com/2116715.html

http://rhaas.blogspot.com/2010/10/wal-reliability.html?m=1


1

So erweitern Sie die anderen Antworten:

Versuchen Sie zunächst, den SQL-Code vom Gabelstapler zu entfernen, wenn dies möglich ist. Denken Sie, dass die Wiederherstellung nach einem Stromausfall schlecht ist. Versuchen Sie es, nachdem der Laptop mehr als 7.000 Pfund überlastet hat. Mit stundenlanger Lageraktivität, nicht gesichert ...

Zweitens sollte ein Mechanismus vorhanden sein, mit dem der Laptop nach x-maligem Laden des Akkus automatisch herunterfährt.

Drittens, wäre es eine Option, den Laptop an eine nicht geschaltete Stromversorgung des Gabelstaplers anzuschließen? Beachten Sie unbedingt die Sicherheitsbestimmungen (die Umgebung erfordert möglicherweise, dass der Gabelstapler ausgeschaltet ist) und wie lange der Gabelstapler zwischen den Einsätzen steht (insbesondere an Wochenenden und Feiertagen), um ein Entladen der Maschinenbatterie zu vermeiden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.