MySQL kann abstürzen, wenn ihm der Speicher ausgeht oder ein anderes Problem auftritt. In den meisten Fällen können Sie dies durch einen einfachen Neustart des MySQL-Dienstes beheben.
Lesen Sie auch: Einrichten von VueJS auf Ubuntu
Um zu sehen, ob MySQL läuft oder nicht, führen Sie aus:
sudo service mysql status
Wenn MySQL nicht verfügbar ist, können Sie es mit neu starten:
sudo service mysql restart
Aber was ist, wenn Sie im Urlaub sind und die Website Ihres Kunden nicht erreichbar ist? Sicherlich gibt es eine Möglichkeit, diesen Prozess in Ubuntu mit den folgenden einfachen Schritten zu automatisieren.
Erstellen eines Cron-Skripts zum automatischen Neustart von MySQL
Sie können cron so konfigurieren, dass es automatisch den Status des MySQL-Servers überprüft und ihn neu startet, wenn er abstürzt. Natürlich ist dies keine dauerhafte Lösung für Ihren undichten MySQL-Server, aber es kann Ihnen Zeit verschaffen, bis Sie in der Lage sind, weitere Untersuchungen anzustellen.
Als erstes müssen wir ein einfaches BASH-Skript erstellen und es im Home-Ordner (oder wo auch immer Sie wollen) speichern und dann cron anweisen, dieses BASH-Skript einmal pro Minute auszuführen.
Sie können dieses Skript überall ablegen, aber in diesem Beispiel werden wir es im Home-Ordner ablegen.
Wechseln Sie in das Verzeichnis des Home-Ordners.
cd /home/
Erstellen Sie hier ein neues Verzeichnis namens scripts.
sudo mkdir scripts
Wechseln Sie in dieses Verzeichnis.
cd scripts
Erstellen Sie in diesem Verzeichnis eine neue Datei mit dem Namen mysqlmon.sh
unter Verwendung der nano
Text-Editor.
sudo nano mysqlmon.sh
Fügen Sie das folgende Skript ein.
/home/scripts/mysqlmon.sh
#!/bin/bash
# Check if MySQL is running
sudo service mysql status > /dev/null 2>&1
# Restart the MySQL service if it's not running.
if [ $? != 0 ]; then
echo -e "MySQL Service was down. Restarting now...\n"
sudo service mysql restart
else
echo -e "MySQL Service is running already. Nothing to do here.\n"
fi
Speichern und beenden.
Machen Sie das Skript ausführbar.
Lesen Sie auch: Wie die Datenbank das Design der Website beeinflusst
sudo chmod +x mysqlmon.sh
Testen Sie das Skript zum automatischen Neustart von MySQL
Testen Sie das Skript, indem Sie es ausführen:
Lesen Sie auch: Ubuntu-Server für Laravel einrichten
sudo ./mysqlmon.sh
Wenn MySQL läuft, sollten Sie dies sehen:
MySQL Service is running already. Nothing to do here.
Wenn Sie sehen wollen, was passiert, wenn das Skript feststellt, dass MySQL ausgefallen ist, stoppen Sie den MySQL-Dienst, aber tun Sie dies nur, wenn Ihr Webserver nicht in Betrieb ist! Wenn Ihr Server in Betrieb, aber nicht ausgelastet ist, sollte das Stoppen und Starten des MySQL-Servers nur ein paar Sekunden dauern.
sudo service mysql stop
Testen Sie nun das Skript erneut, indem Sie es ausführen:
sudo ./mysqlmon.sh
Ausgabe:
MySQL Service was down. Restarting now..
Der MySQL-Dienst sollte wieder funktionieren
sudo service mysql status
Das Skript zum automatischen Neustart von MySQL zu Crontab hinzufügen
Wenn Sie dieses Skript zu crontab hinzufügen, überprüft der Server den MySQL-Dienst einmal pro Minute und startet ihn neu, wenn er nicht läuft.
Öffnen Sie crontab (wenn Sie aufgefordert werden, einen Texteditor zu wählen, wählen Sie nano).
sudo crontab -e
Fügen Sie in crontab die folgende Zeile am Ende der Datei hinzu.
crontab
* * * * * /home/scripts/mysqlmon.sh > /dev/null 2>&1
Speichern und beenden (presse CTRL
+ X
, Presse Y
und drücken Sie dann ENTER
)
Crontab testen
Um zu testen, ob crontab das Skript einmal pro Minute ausführt, müssen Sie den MySQL-Dienst vorübergehend anhalten.
sudo service mysql stop
Sie können nun mit folgendem Befehl testen, ob MySQL läuft.
sudo service mysql status
Wenn MySQL ausgefallen ist, warten Sie mindestens eine Minute, bis die Crontab ausgeführt wird. Wenn der MySQL-Dienst nach zwei Minuten immer noch nicht funktioniert, ist etwas mit Ihrem Cron-Skript schief gelaufen. Starten Sie MySQL erneut mit sudo service mysql start
.
Lesen Sie auch: PHPStorm unter Ubuntu installieren