Mysql über php neustarten?

Apache, Lighttpd, nginx, Cherokee
amiga1200
Posts: 208
Joined: 2007-01-13 19:58

Mysql über php neustarten?

Post by amiga1200 » 2016-09-23 14:21

Mein Mysql Server Crash* leider oft und ich weiß bisher nicht wo dran es liegt.

Dann must jemand unter SSH mysql restart eingeben und alles ist wieder gut.

Nun wollte ich ein PHP Schript schreiben was im Chrom im 1 min. Takt aufgerufen wird, eine Zahl
aus Mysql holt und vergleicht, wenn z.B. <>2016 ist mysql ist mysql Down.
Dann würde ich Mysql über php neustarten
Geht das überhaupt und wie?
Das Script läuft natürlich nur in ein Home Verzeichnis, also über http nicht sichtbar.
Sowas kann man auch über Shell programmieren, aber über php ist schon einfacher!


Crash:
*Ich vermute mal im Projekt wird mit 2 Datenbanken gearbeitet und beim Wechseln kommt es zum Crash.
Die Access und _log error_log sagen überhaupt nichts, dort sind die letzten Aufrufe ganz normal.
Oft sind viele Wochen alles gut, dann aber am Tag 2 mal ein Crash.
Die komplette Hardware samt Hoster wurde schon getauscht, dadurch bs/apache/php/mysql eine Version höher,
Aber mit der neuen Hardware und Hoster ist alles noch schlimmer geworden.
Apache Crash Übrigends mit, wird aber schon 5 Minute durch ein Cron neu gestartet.


Suse 13.1 / MysqlServer Version: 5.6.28
Vorher:
Suse12.1 MysqlServer Version: 5.3 hier 1-2 in 6 Monaten in Crash

@Admin ich konnte eben die rootforum.org über Firefox nicht öffnet, Verbindung ist nicht sicher, irgendwas mit ssl
trotz Firefox Update auf 49

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Mysql über php neustarten?

Post by Joe User » 2016-09-23 15:41

Was steht im MySQL Error Log?


BTW: Bitte statt der alten Domain http://rootforum.org/ die bereits seit einigen Jahren gültige Domain https://www.rootforum.org/ verwenden, danke.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

amiga1200
Posts: 208
Joined: 2007-01-13 19:58

Re: Mysql über php neustarten?

Post by amiga1200 » 2016-09-23 20:43

musst gestehen log für myqsl laufen nicht, must ich gleich mal aktivieren.
gerade gemerkt Apache Logs laufen weiter beim Mysql Crash.
So hat man leider keinen Anhaltspunkt.
Ich werde mal eine eig. Log-Funktion über php schreiben, sobald mysql weg ist hätte man den letzten Aufruf


Cool wäre erst mal eine Möglichkeit zu haben, um Mysql automatisch neustarten zulassen beim Crash, falls es nachts passiert.
Ich werde mich wohl mit Shell etwas schreiben.
Vielleicht hat jemand ja ein fertiges Script ?
Ich habe in einer Tabelle einfach einen festen Wert der wird abgefragt.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Mysql über php neustarten?

Post by Joe User » 2016-09-23 22:48

MySQL einfach so (mit Gewalt) nach einem Crash wieder zu starten, kann ganz schnell in einem Datenverlust enden und das will man definitiv nicht. Aus diesem Grund ist das MySQL Error Log sehr wichtig, die Apache Logs sind hierbei hingegen völlig wertlos.

Tue Dir also selbst einen Gefallen und vergiss die Idee mit dem automatischen Restart ganz schnell wieder.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Mysql über php neustarten?

Post by Joe User » 2016-09-23 23:07

Solltest Du das Risiko eines Datenverlustes wirklich und entgegen meiner Empfehlung eingehen wollen, dann könnte dieses Shellscript als Cron für root helfen (gegebenenfalls selbst anpassen):

Code: Select all

#!/bin/sh

is_up="$(/usr/bin/mysqladmin ping 2>&1)"
if [ "$is_up" = "mysqld is alive" ] ; then
  echo "UP" > /dev/null
elif [ "$is_up" != "mysqld is alive" ] ; then
  /etc/init.d/mysqld restart
else
  echo "Unknow exit status"
  exit 1
fi
Voraussetzung ist, dass /root/.mylogin.cnf existiert und gültige Daten enthält. Erzeugen lässt sie sich bei Bedarf als root so:

Code: Select all

mysql_config_editor set --login-path=client --host=localhost --host=127.0.0.1 --user=root --password
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.