Autor Thema: [gelöst] configDB, warten auf MySQL-DB-Dienst  (Gelesen 720 mal)

Offline bartman121

  • Full Member
  • ***
  • Beiträge: 136
[gelöst] configDB, warten auf MySQL-DB-Dienst
« am: 15 Februar 2017, 08:39:56 »
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
« Letzte Änderung: 15 Februar 2017, 09:20:01 von bartman121 »

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16929
Antw:NOOB: configDB, warten auf MySQL-DB-Dienst
« Antwort #1 am: 15 Februar 2017, 08:54:30 »
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.

Offline bartman121

  • Full Member
  • ***
  • Beiträge: 136
Antw:NOOB: configDB, warten auf MySQL-DB-Dienst
« Antwort #2 am: 15 Februar 2017, 09:19:46 »
okay, ich habe es jetzt mal in rc3.d angepasst....

vorher:
S01fhem
S04mysqld

jetzt:
S04mysqld
S08fhem

Danke

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16929
Antw:[gelöst] configDB, warten auf MySQL-DB-Dienst
« Antwort #3 am: 15 Februar 2017, 09:24:00 »
Bitte beachten: rc3 wird nur bei runlevel 3 verwendet. Welchen du eingestellt hast, kriegt man mit "who -r " raus.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13436
  • Das "S" in "IoT" steht für "Security"
Antw:NOOB: configDB, warten auf MySQL-DB-Dienst
« Antwort #4 am: 17 Februar 2017, 10:22:13 »
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)
Nächster Hamburg-Stammtisch: 15.12.2017

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3227
  • Wer anderen eine Bratwurst brät...
Antw:[gelöst] configDB, warten auf MySQL-DB-Dienst
« Antwort #5 am: 17 Februar 2017, 18:58:36 »
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
FHEM 5.8, Brix, VIVO mini, RPi3, Debian Jessie, ZME_UZB1
HM-CFG-LAN, HM-MOD-UART-WIFI, HUE, HarmonyHub, JeeLink, CO20
Hyperion auf RPi Zero W, Sonos, viel Z-Wave und HM
alles per HomeKit steuerbar
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13436
  • Das "S" in "IoT" steht für "Security"
Antw:[gelöst] configDB, warten auf MySQL-DB-Dienst
« Antwort #6 am: 17 Februar 2017, 19:15:35 »
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)

« Letzte Änderung: 17 Februar 2017, 19:32:02 von betateilchen »
Nächster Hamburg-Stammtisch: 15.12.2017

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3227
  • Wer anderen eine Bratwurst brät...
Antw:[gelöst] configDB, warten auf MySQL-DB-Dienst
« Antwort #7 am: 17 Februar 2017, 20:22:05 »
Vielen Dank Udo.
Funktioniert!

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
FHEM 5.8, Brix, VIVO mini, RPi3, Debian Jessie, ZME_UZB1
HM-CFG-LAN, HM-MOD-UART-WIFI, HUE, HarmonyHub, JeeLink, CO20
Hyperion auf RPi Zero W, Sonos, viel Z-Wave und HM
alles per HomeKit steuerbar
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert

Offline crispyduck

  • Jr. Member
  • **
  • Beiträge: 86
Antw:[gelöst] configDB, warten auf MySQL-DB-Dienst
« Antwort #8 am: 13 Mai 2017, 18:36:06 »
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