2016-09-18 3 views
-2

Wie kann ich einen robusteren Datenbankserver erstellen? Ich weiß, dass dies eine ziemlich allgemeine Frage ist, aber ich bekomme alle Arten von Fehlern und Ausfallzeiten mit MySQL mit einem einfachen Service, der einige Selects und 2 Inserts ausführt. Nichts kompliziertes, keine JOINs ...MySQL ist wirklich instabil - unter Berücksichtigung der Migration

Zuerst wurde mein Host vom DB-Server wegen vieler Verbindungen blockiert, deshalb habe ich den Parameter max_used_connections erhöht. Und mein Client schließt die Verbindungen und behandelt den Pool korrekt.

Für einige Tage hat es funktioniert, OK. Heute bin ich aufgewacht und der MySQL-Server war ausgefallen. Versucht, es mit service mysql restart neu zu starten und es ist fehlgeschlagen. Versucht Verbindung herzustellen und Fehler 1040: zu viele Verbindungen. So konnte ich den Server nicht einmal neu starten.

Ich habe killall mysqld und versucht, den Server mit service mysql start zu starten. Der Service würde nicht starten. Führen Sie su - mysql -s /bin/sh -c "/usr/bin/mysqld_safe > /dev/null 2>&1 &" und der Server schließlich gestartet.

Ich habe auch die Grenze von max_connections erhöht, weil der Server nach einigen Sekunden beim heutigen Start einfach absterben würde.

Dann ein Tisch war korrupt ERROR 144 (HY000): Table '<table_name>' is marked as crashed and last (automatic?) repair failed

-REPAIR <table_name> versucht, aber nach einiger Zeit der Server starb wieder ERROR 2006 (HY000): MySQL server has gone away. Ich habe den gleichen Prozess (killall bis hierher) ungefähr dreimal probiert, jedes Mal wenn der Server starb.

Jetzt laufe ich REPAIR <table_name> QUICK und der Server scheint nicht zu sterben, aber es dauert eine sehr lange Zeit, um eine 200k Zeile Tabelle zu beheben.

Übrigens habe ich nur zwei Tabellen, eine mit 200k Zeilen und eine andere mit 11M Zeilen. Ich spitze ungefähr 2000 gleichzeitige Benutzer, die in ungefähr 100 Abfragen pro Sekunde max ergeben.

Ist es normal, dass MySQL so einfach abstürzt? Sollte ich zu anderen, besser skalierbaren Datenbanken wie Cassandra migrieren? Ich bevorzuge tatsächlich eine relationale Datenbank für meinen Fall (Tabellenresultate hat eine request_id, FK einer Anfragetabelle, die eine key_id FK einer Schlüsseltabelle hat), würde aber nichts dagegen haben, die relationalen Vorteile für eine wirklich gute Verfügbarkeit zu verlieren.

+1

Die Migration zu einer anderen Software bedeutet nicht, dass sie einen "magischen" Code haben, der auf schlechter Hardware funktioniert. Zuallererst möchten Sie nichts haben, das von MySQL anschließt/trennt. Sie möchten dauerhafte Verbindungen haben. Zweitens müssen Sie die richtige Hardware für die db haben - das bedeutet eine gute Solid-State-Laufwerk und genügend RAM - RAM für Arbeitsdaten in ihm zu halten. Drittens müssen Sie Ihr MySQL konfigurieren - es kommt mit einer Konfiguration, die es auf Computern von 2001 "ok" -ish ausführen lässt. Um zu antworten - es ist nicht normal, dass MySQL abstürzt. –

+3

MySQL ist ein ziemlich robuster und zuverlässiger Dienst. Abstürze sind nicht üblich, nicht als normales Verhalten. Bitte teilen Sie uns mit, welche Betriebssystem-Distribution Sie verwenden, sowie die MySQL-Version. – JasonD

+0

Sie scheinen dies auch von einem virtuellen Host aus auszuführen - geben Sie uns RAM- und Festplattenspezifikationen. Die Fehler beim Neustart von MySQL beziehen sich eher auf das Betriebssystem als auf MySQL selbst. – JasonD

Antwort

0

Ich bin nicht sicher, dass Ihre Frage objektiv beantwortet werden kann, also hier ist meine subjektive Antwort (Ist es normal, dass MySQL so einfach abstürzt Soll ich zu anderen skalierbaren Datenbanken wie Cassandra migrieren?):

Nein, es ist nicht normal, und Sie sollten wahrscheinlich nicht migrieren, da Sie eine relationale Datenbank und MySQL wird gut unterstützt und wirklich gut bekannt.

Mehr Informationen über Ihr Problem (auch subjektiv):

MySQL ist wirklich sehr stabil. Ich habe MySQL-Dienste, die seit Jahren mit regelmäßigem Gebrauch laufen und keine Probleme hatten. Ich bin sicher, viele andere haben ähnliche Erfahrungen gemacht. Viele große Unternehmen verwenden MySQL mit großem Erfolg.

Was mich betrifft ist, dass killall und Service-Neustart nicht funktioniert hat. Vor allem, weil Sie auf einer Ubuntu LTS-Version laufen, die über 2 Jahre alt und daher ziemlich stabil ist. Obwohl ich das nicht mit absoluter Sicherheit sagen kann, sieht es so aus, als hätten Sie Hardware-Probleme oder zumindest eine beschädigte Festplatte. Möglicherweise verfügen Sie auch über Software- und/oder Kerneloptionen oder Einstellungen, die Probleme verursachen.

Mein Vorschlag an Sie wäre eine vollständige Hardware-Überprüfung (mindestens RAM und HDD überprüfen), und eine vollständige Neuinstallation durchführen.

Verwandte Themen