Ich erwäge, ein RAID0-Setup für einen unserer SQL Server-Cluster zu verwenden. Ich werde die Situation skizzieren und nach dem Grund suchen, warum dies eine schlechte Idee sein kann. Auch wenn jemand, für den Sie Anwendungsfälle, Whitepapers oder andere Unterlagen haben, auf den Sie mich zu diesem Thema hinweisen können, wäre das großartig.
Wir haben 3 Server in 2 Rechenzentren, die Teil eines SQL-Clusters sind. Sie alle führen SQL Server in einer Verfügbarkeitsgruppe aus. Neben dem Primärserver befindet sich ein Replikat und im anderen Rechenzentrum ein weiteres. Sie führen eine synchrone Replikation mit automatischem Failover aus. Alle Laufwerke sind SSDs der Enterprise-Klasse. Sie werden SQL Server 2017 oder 2019 ausführen.
Ich denke, dass die Ausführung auf RAID0-Arrays gegenüber anderen Methoden mehrere Vorteile mit wenigen, wenn überhaupt wirklichen Nachteilen hätte. Der einzige Nachteil, den ich derzeit sehe, ist die mangelnde Redundanz auf dem Primärserver, sodass der Ausfall zunimmt. Als Profis:
Wenn ein Laufwerk ausfällt und nicht in einem verlangsamten, beeinträchtigten Zustand ausgeführt wird, bis jemand eine Benachrichtigung erhält und manuell darauf reagiert, kann der Server sofort eine sekundäre Funktion ausführen, die die volle Betriebsfähigkeit beibehält. Dies hat den zusätzlichen Vorteil, dass wir über ein Failover benachrichtigt werden, sodass wir die Ursache früher untersuchen können.
Dies verringert die Ausfallwahrscheinlichkeit insgesamt pro TB Kapazität. Da wir keine Paritäts- oder Spiegellaufwerke benötigen, reduzieren wir die Anzahl der Laufwerke pro Array. Mit weniger Laufwerken ist die Wahrscheinlichkeit eines Laufwerksausfalls insgesamt geringer.
Es ist günstiger. Weniger Laufwerke für unsere erforderliche Kapazität zu benötigen, kostet natürlich weniger.
Ich weiß, dass dies nicht das konventionelle Geschäftsdenken ist, aber gibt es etwas, über das ich nicht nachdenke? Ich würde jeden Input lieben, egal ob für oder gegen.
Ich versuche dies nicht, um die Abfrageleistung zu verbessern, aber wenn es sinnvolle gibt, können Sie sie gerne darauf hinweisen. Mein Hauptanliegen ist es, ein Problem mit der Zuverlässigkeit oder Redundanz, an das ich nicht gedacht habe, nicht zu berücksichtigen oder anzugehen.
Das Betriebssystem befindet sich auf einem separaten gespiegelten Laufwerk, sodass der Server selbst in Betrieb bleiben sollte. Eines dieser Laufwerke kann ersetzt und erneut gespiegelt werden. Es ist klein und enthält keine anderen Datenbankdateien als die System-DBs. Ich kann mir nicht vorstellen, dass es länger als Minuten dauert. Wenn eines der Daten-Arrays ausfällt, ersetzen wir das Laufwerk, erstellen das Array neu, stellen es wieder her und synchronisieren es erneut mit dem AG. Nach meiner persönlichen Erfahrung war die Wiederherstellung VIEL schneller als die Wiederherstellung eines RAID5-Laufwerks. Ich habe noch nie einen RAID1-Fehler gehabt, daher weiß ich nicht, ob dieser Neuaufbau schneller sein würde oder nicht. Die Wiederherstellungen würden aus einer Sicherung stammen und für die primäre Sicherung aktualisierend wiederhergestellt. Daher sollte die Auslastung des primären Servers nur minimal sein und nur die letzten Protokollminuten mit dem wiederhergestellten Replikat synchronisieren.
quelle
Antworten:
Es gibt einen sehr wichtigen Aspekt, den Sie meiner Meinung nach in Ihrer Einschätzung vermissen:
Wie wollen Sie sich erholen?
Wenn raid5 ein Laufwerk verliert, wird es in einem herabgesetzten Zustand ausgeführt, bis es automatisch wiederhergestellt wurde. (Zumindest, wenn Sie ein Ersatzgerät zur Hand haben.)
Wenn ein raid0 ein Laufwerk verliert, kann es sich nie mehr erholen. Dies bedeutet, dass Sie die Redundanz verloren haben. Um sie wiederherzustellen, müssen Sie Ihr raid0 neu erstellen und alle Daten (nicht nur die Daten auf dem defekten Laufwerk) von der jetzt unter Produktionslast befindlichen sekundären Festplatte zurückkopieren. Das heißt, anstelle des einzelnen herabgesetzten RAID5-Arrays ist es jetzt Ihr gesamtes Produktions-Setup, das die Leistung beeinträchtigt.
Wenn Sie mit der Leistungsminderung von raid5 (oder raid6) nicht zurechtkommen können, sollten Sie stattdessen wahrscheinlich raid 1 + 0 ausführen . Ja, es kostet mehr, aber wenn die Festplattenpreise so sind, wie sie sind, wird es gut angelegtes Geld sein.
Vielleicht ist "den RAID5-Status aktiv überwachen und die Last von der Primärdatenbank übertragen, wenn ein Laufwerk ausfällt" die Lösung, die Ihnen die meisten Vorteile ohne Nachteile bietet? (Abgesehen davon, dass Sie den Coolness-Faktor verlieren, ohne dass eine lokale Redundanz erforderlich ist.) Wenn die Wiederherstellung Ihres RAID5-Laufwerks viel länger dauert als eine vollständige Datenbank-Datensynchronisierung, verhält sich Ihre RAID-Software seltsam oder Sie haben ernsthaft übergroße Festplatten. Ich würde denken.
quelle
Ein Laufwerksausfall sollte hier berücksichtigt werden.
Stellen Sie sich für eine Sekunde vor, dass unsere Laufwerke an einem bestimmten Tag eine Ausfallrate von 1/1000 haben. Stellen Sie sich vor, wir haben 20 Laufwerke in jedem unserer 3 Arrays.
Die Wahrscheinlichkeit, dass ein einzelnes Laufwerk in einem Array ausfällt, beträgt daher 20/1000 = 1/50. Die Wahrscheinlichkeit, dass zwei Laufwerke innerhalb desselben Arrays ausfallen, liegt nahe bei 20/1000 * 20/1000 / 2 = 200/1000000 = 1/5000. Wenn wir also von RAID 0 auf RAID 5 wechseln, ist die Wahrscheinlichkeit, dass eines unserer Arrays zerstört wird, bereits erheblich geringer.
Wir können das also noch weiter ausführen: Wenn die Wahrscheinlichkeit, dass ein Array an einem Tag ausfällt, 1/50 beträgt, ist die Wahrscheinlichkeit, dass zwei Arrays an einem Tag ausfallen, 1 / (50 * 50) = 1/2500. Die Wahrscheinlichkeit, dass zwei identische RAID 0-Arrays ausfallen, ist doppelt so hoch wie die eines RAID 5-Arrays, wenn derselbe Festplattensatz vorausgesetzt wird. Dieser exponentielle Anstieg der Ausfallwahrscheinlichkeiten sollte Sie beunruhigen, da er die Wahrscheinlichkeit, dass mehr als ein Array gleichzeitig ausfällt, massiv erhöht .
Da diese Datenträger wahrscheinlich eine lange Lebensdauer haben, können Sie die oben genannten Zahlen wahrscheinlich ausführen und direkt sehen, welche Auswirkungen dies auf die Zuverlässigkeit hat. Wenn Sie die Laufwerksspezifikationen bereitstellen können, kann ich diese Berechnung diesem Beitrag hinzufügen. Ob das Risiko dann akzeptabel ist oder nicht, entscheidet Ihre Organisation.
Ein weiterer wichtiger Punkt ist, dass die Wahrscheinlichkeit eines Laufwerksausfalls erhöht werden kann, wenn SSDs verwendet werden, die in derselben Charge (gleiche Fabrik, gleiche Zeit) hergestellt wurden. Wenn Sie nicht aufpassen, können alle drei Knoten aufgrund dieses Problems ausfallen.
Haftungsausschluss: Die obigen Berechnungen wurden vereinfacht - sie sind immer noch relativ genau.
quelle
Dies ist eine recht häufige Konfiguration, wenn AGs mit internen / direkt angeschlossenen Speicherlaufwerken ausgeführt werden. Besonders bei NVMe oder anderen PCI-basierten Flash-Speichergeräten.
Es läuft einfach darauf hinaus, einen Laufwerksfehler wie einen Serverfehler zu behandeln. Bei einer geringen Anzahl von Solid-State-Laufwerken ist die MTBF für die Laufwerke nicht wesentlich niedriger als für die anderen Solid-State-Komponenten des Servers, und Sie behandeln jedes Laufwerk einfach als Fehlerquelle für die Server, und ersetzen / neu erstellen Sie den Server im Falle eines Laufwerksfehlers.
quelle
Ich bin neugierig auf das, was Sie erreichen wollen? Sie erwähnen selbst, dass Sie mit diesem Setup keine Leistungsverbesserungen erzielen möchten. Welchen Gewinn möchten Sie also erzielen?
Hinweis zum Leistungsproblem: Wenn Sie SSDs der Enterprise-Klasse verwenden, ist Ihre RAID-Berechnung wirklich ein so großer Engpass, dass Sie ihn verbessern müssen?
Ich nehme Ihre 3 Profis und glaube nicht, dass Sie genug darüber nachgedacht haben:
Wird SQL-Failover sofort ausgeführt? Was bewirkt, dass das Failover automatisch ausgelöst wird? Wird der Server das Laufwerk offline schalten, sobald jemand darauf zugreift? Was ist, wenn es sich nur um einen fehlerhaften Sektor auf einer Festplatte handelt? Wenn SQL den fehlerhaften Sektor nicht trifft, wird es dann ein Failover geben? Da bin ich mir nicht 100% sicher.
Reduziert es die Ausfallwahrscheinlichkeit insgesamt pro TB Kapazität? Ihr Denken scheint zu sein, dass weniger Festplatten weniger Fehlerpunkte bedeuten, aber ich denke nicht, dass das richtig ist. Die Wahrscheinlichkeit, dass 1 Datenträger ausfällt, bleibt gleich, wenn Sie über 1 Datenträger oder 10 Datenträger (oder 100 Datenträger) verfügen. Bei RAID 0 bedeutet dies jedoch auch, dass es sich um einen katastrophalen Ausfall handelt.
Kostet eine zusätzliche SSD zu viel für RAID5? Ich verstehe, wie RAID1 ODER 1 + 0 das Budget sprengen könnte, aber 1 zusätzliche Festplatte?
Wenn eine Festplatte ausfällt und das RAID offline geschaltet wird, ist dieser Knoten ohne Redundanz offline, bis Sie das RAID neu erstellen und alle Ihre Datenbanken von Grund auf wiederherstellen. Welchen Prozess werden Sie unternehmen, um dies zu erreichen? Sie können die Datenbank nicht aus der Verfügbarkeitsgruppe entfernen, da dadurch die Replikation in DR beendet wird. Wenn Sie jedoch keine Maßnahmen ergreifen, können die anderen beiden Server ihre Protokolldateien nicht kürzen. Ist das in Ordnung? Was passiert, wenn es an einem Freitagabend eines langen Wochenendes versagt? Ist das noch ok Können Ihre Secondaries mit dieser Datenmenge fertig werden?
Meine letzten Fragen beziehen sich auf die von Ihnen erwähnte Zeit des Wiederaufbaus. Sind Sie zu 100% sicher, dass es schneller geht? Wie viel schneller?
Das Brent Ozar-Server-Setup ist immer noch meine erste Adresse für das Einrichten neuer SQL-Instanzen. Der allererste Punkt im Handbuch ist zu überprüfen, ob Sie RAID0 für Laufwerke verwenden.
==== UPDATE ====
Ein zusätzlicher Gedanke: Was passiert, wenn Ihre Sekundärserver nicht mehr mit Ihrem Primärserver synchron sind? Selbst mit der synchronen Replikation können Ihre Secondaries weiterhin automatisch zu Async zurückkehren, und sobald sie dies tun, verlieren Sie die Fähigkeit zum automatischen Failover, da jedes Failover zu Datenverlust führt. Ein paar Beispiele, wann dies passieren könnte:
Es handelt sich um Randfälle, die jedoch katastrophal sein können, je nachdem, was in diesen Zeiten verloren gegangen ist.
quelle