[gelöst] configDB, warten auf MySQL-DB-Dienst

Begonnen von bartman121, 15 Februar 2017, 08:39:56

Vorheriges Thema - Nächstes Thema

bartman121

Moin,

ich krieg sicher gleich wieder irgendwelche Man-Pages um die Ohren gehauen, aber ich bin etwas überfragt. Ich weiß auch nicht so recht wonach ich googlen soll.

Ich habe FHEM auf configDB umgestellt, das funktioniert soweit, ich habe nur das Problem, dass nach dem Hochfahren des Servers fhem über init.d zu früh gestartet wird, die DB (MySQL) ist dann noch nicht bereit und fhem startet mit einer "leeren" config.

Ich habe mir mit einem sleep(20) im init.d-script beholfen, das funktioniert auch. Ich finde das aber eigentlich doof, weil beim "service fhem restart" auch die Wartezeit ist.

Das müsste doch eleganter gehen?
Im Grunde würde ich das init.d script gern so basteln, dass es erst schaut ob der MySQL-Dienst gestartet ist und im Zweifelsfall wartet.

PS: die commandref zu configDB habe ich gelesen.

Hat Jemand die richtigen Links für mich?

Grüße und Danke

rudolfkoenig

Das hat nichts mit FHEM zu tun, sondern mit dem verwendeten OS.

Bei der SYSV-Style /etc/rc.d/rc3.d entscheidet das Alphabet (bzw "ls *") ueber die Startreihenfolge. Bei anderen wie systemd muss man eine Abhaengigkeit von einem anderen Paket eintragen, und das System startet dann alles in der "richtigen" Reihenfolge. Wie das unter Windows laeuft, weiss ich nicht.

bartman121

okay, ich habe es jetzt mal in rc3.d angepasst....

vorher:

S01fhem
S04mysqld


jetzt:

S04mysqld
S08fhem


Danke

rudolfkoenig

Bitte beachten: rc3 wird nur bei runlevel 3 verwendet. Welchen du eingestellt hast, kriegt man mit "who -r " raus.

betateilchen

Zitat von: rudolfkoenig am 15 Februar 2017, 08:54:30
Das hat nichts mit FHEM zu tun, sondern mit dem verwendeten OS.

naja, ein bisschen was hat das schon mit FHEM zu tun, zumindest mit den von FHEM mitgelieferten Startskript. Dort könnte man das Warten auf den mysql-Dienst zwar einbauen, aber das würde dazu führen, dass FHEM immer auf mysql wartet, also auch in Installationen, in denen FHEM überhaupt kein mysql braucht.

In solchen Fällen hilft tatsächlich nur das manuelle Anpassen des Startskripts (oder der entsprechenden service-Definition für systemd)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DeeSPe

Ich habe seit der Umstellung auf configDb das selbe Problem.
Nach jedem Neustart des RPi muss ich FHEM manuell starten weil es beim Autostart zu früh dran ist.

Habe in Jessie /etc/rc5.d/S01fhem probehalber auf /etc/rc5.d/S04fhem und auch mal auf /etc/rc5.d/S05fhem umbenannt, leider keine Änderung!
Was kann ich noch tun??
Wollte in meiner Produktivinstanz demnächst auch endlich mal auf configDb umstellen...

Danke im Voraus.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

betateilchen

#6
Erstens heißt es configDB und zweitens sind das doch Linux Basics...

Im Init-Skript die beiden Zeilen "Should Start" und "Should-Stop" wie eingegeben einfügen:


### BEGIN INIT INFO
# Provides:             fhem.pl
# Required-Start:       $local_fs $remote_fs
# Required-Stop:        $local_fs $remote_fs
# Should-Start: mysql
# Should-Stop: mysql
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM server
### END INIT INFO


danach ein


update-rc.d fhem defaults


ausführen und es sollte funktionieren wie gewünscht (erkennbar daran, dass die Sequenznummer für FHEM in /etc/init.d/rc... höher ist als die von mysql)

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DeeSPe

Vielen Dank Udo.
Funktioniert!

Zitat von: betateilchen am 17 Februar 2017, 19:15:35
Erstens heißt es configDB und zweitens sind das doch Linux Basics...

Offensichtlich nicht... 8)
Habe heute den halben Tag selbst probiert es hinzubekommen (auch mit Google) und habe dennoch Deine Lösung nicht gefunden!

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

crispyduck

Wenn die DB nicht auf dem selben Host läuft einfach folgendes in init.d vor dem starten von fhem einfügen:

until nc -z ip_adresse 3306; do sleep 5; echo "Waiting for DB to come up..."; done

Die schleife wird so lange ausgeführt bis der SQL Server auf port 3306 erreichbar ist.

Lg,
Crispyduck