Anweisungen zur Verwendung von Cronjob zum Planen eines automatischen Neustarts von Mysql, wenn der Server überlastet ist
- 24-07-2022
- Toanngo92
- 0 Comments
Mục lục
1. Starten Sie MySQL manuell neu, wenn es überlastet ist
MySQL kann Probleme haben, wenn der Speicher knapp wird, oder wegen eines anderen Problems in meinem Fall, wenn der Server viele verschiedene Sites ausführt. In den meisten Fällen können wir dieses Problem lösen, indem wir den MySQL-Dienst manuell neu starten.
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob MySQL ausgeführt wird:
sudo service mysql status // kiểm tra trạng thái mysql
Oder:
sudo service mysqld status // kiểm tra trạng thái nếu sử dụng mariadb
Wenn der MySQL-Status deaktiviert ist, starten Sie über die Befehlszeile neu:
sudo service mysql restart // hoặc sudo service mysqld restart
Wenn Sie es manuell machen, ist es einfach, aber wenn die Datenbank mitten in der Nacht überlastet ist, wenn wir schlafen, wird der Zugriff auf die Website unterbrochen, das ist das Problem, also wie kann man das Problem lösen?
Mit Linux/Centos stellt uns das Betriebssystem die Cron -Funktion zur Verfügung, die ein zeitbasiertes automatisches Scripting-Job-Scheduler für Linux ist, damit es die Skripte ausführen kann, ohne dass wir sie erneut manipulieren.
2. Erstellen Sie ein Skript (Bash-Skript), um MySQL neu zu starten
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 schmuddeligen MySQL-Server, aber es kann Ihnen Zeit sparen, bis Sie weitere Nachforschungen anstellen können.
Zuerst müssen wir ein einfaches BASH-Skript erstellen und es im Home-Verzeichnis (oder wo immer Sie wollen) speichern, 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 Stammverzeichnis ablegen. oder Sie können Bitvise verwenden, um auf den Server zuzugreifen und einen Ordner zu erstellen, der Ihre Befehlszeile simuliert. Erstellen Sie als Nächstes einen Ordner namens scripts
cd /root/ // change directory to root folder sudo mkdir scripts // make dir scripts with root permission
Gehen Sie zum Skriptordner und erstellen Sie eine mysqlmon-Datei mit dem Nano-Tool (Dateneditor auf dem Linux-Terminal) oder verwenden Sie Bitvise, um diese Datei zu erstellen
cd scripts sudo nano mysqlmon.sh
Fügen Sie diesen Code in die neu erstellte Datei mysqlmon.sh ein, je nachdem, ob Ihr Dienst mysql oder mysqld ist:
#!/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 // sử dụng 1 trong 2 đoạn code này phù hợp server của bạn, chỉ khác nhau mysql và mysqld #!/bin/bash # Check if MySQL is running sudo service mysqld 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 mysqld restart else echo -e "MySQL Service is running already. Nothing to do here.n" fi
Wenn Sie Nano verwenden, speichern und beenden Sie (drücken Sie Strg + X , drücken Sie Y (Ja) und drücken Sie dann die Eingabetaste)
Gewähren Sie dem Skript die Ausführungsberechtigung:
sudo chmod +x mysqlmon.sh
3. Überprüfen Sie, ob die soeben erstellte Skriptdatei ordnungsgemäß funktioniert
Führen Sie diesen Befehl aus, um die neu erstellte Skriptdatei auszuführen:
sudo ./mysqlmon.sh
Wenn der Mysql-Dienst noch läuft, zeigt das Terminal die Zeile an:
MySQL Service is running already. Nothing to do here.
Wenn Sie sehen möchten, was passiert, wenn das Skript erkennt, dass MySQL abstürzt, stoppen Sie den MySQL-Dienst, denken Sie an diesen Schritt, Ihr Server wird vorübergehend abstürzen, weil er die Datenbank nicht laden kann:
sudo service mysql stop
Versuchen Sie nach dem Stoppen, die gerade erstellte mysqlmon.sh-Datei erneut auszuführen, um zu sehen, ob sie mysql erkennt und neu startet:
sudo ./mysqlmon.sh
Bei korrekter Ausführung wird diese Textzeile angezeigt
MySQL Service was down. Restarting now..
Überprüfen Sie den Status ein letztes Mal, um zu sehen, ob es erfolgreich war:
sudo service mysql status
4. Automatisieren Sie die Ausführung von Skriptdateien mit Cron
Cron-Dateien mit Nano oder Bitvise erstellen:
cd ~ cd /etc/cron.d // chuyển tơi thư mục etc/cron.d nano -w auto_restart // khởi tạo file auto_restart với trình biên tập nano
Fügen Sie diese Befehlszeile in die Datei auto_restart
*/1 * * * * root /root/scripts/mysqlmon.sh >/dev/null 2>&1 // chạy file này 1 phút 1 lần, tăng số 1 lên nhiều nếu bạn muốn thời gian tự động chạy lâu hơn
Speichern Sie die Cron-Datei, um den Vorgang abzuschließen.
Beachten Sie, dass Sie bei Verwendung dieser Methode den Cron-Befehl nicht mit der Befehlszeile crontab -l finden können, um zu sehen, ob Ihr Befehl erkannt wird, verwenden Sie die Befehlszeile:
head -n -0 /var/spool/cron/* /etc/crontab /etc/cron.d/* // xem các kịch bản tự động chạy trong thư mục cron.d ls /etc/cron.{hourly,daily,weekly,monthly}/ // xem các file cron tự động chạy trong các thư mục cron theo giờ, ngày, tuần, tháng ...
Viel Glück !