Hallo Betateilchen,
mit großem Interresse verfolge ich deine Entwicklung der ConfigDB. Eigentlich würde ich gerne meine FHEM Konfiguration nach ConfigDB überführen, jedoch scheue ich mich aktuell noch davor, da ich bisher noch nichts zum Thema Backup/Restore der Daten in der ConfigDB gefunden habe. Idealerweise würde ich das gerne in einen Cron Job auf dem FHEM Server ausführen lassen. Da ich so gut wie keine Kenntnisse in SQL habe und mir funktionierende Backups aus Erfahrung sehr wichtig sind, scheue ich mich hier dem Thema durch try & error zu nähern :-[
Wie hast Du das bei dir gelöst? Evtl. hast du scripts, welche du Verfügung stellen könntest.
Viele Grüße
Klaus
Zitat von: Klaus Rubik am 08 Mai 2014, 16:52:35
da ich bisher noch nichts zum Thema Backup/Restore der Daten in der ConfigDB gefunden habe.
Das Sichern der Datenbank liegt alleine im Verantwortungsbereich des Anwenders. Eine Lösung innerhalb von configDB selbst wird es nicht geben, da die Sicherungsmechanismen für die unterschiedlichen Datenbanktypen unterschiedlich sind. Die einfachste Variante ist die Sicherung der Datenbank bei SQLITE, denn da steckt ALLES in einer einzigen Datei, die man sich einfach regelmäßig wegkopieren (sichern) kann.
Theoretisch wäre es möglich, das Sichern der SQLITE Datenbank über den normalen Backup-Prozess von fhem selbst zu machen, aber das lehnt Rudi aus mir bisher unerfindlichen Gründen kategorisch ab und er hat die Nutzung des backup-Befehls für configDB Benutzer komplett gesperrt. Als Alternative für diesen Fall gibt es aber die Möglichkeit, mittels "configdb backup" (siehe auch commandref) ein Backup analog des Standardbackups von fhem zu erstellen. Das bedeutet, solange die SQLITE Datenbankdatei innerhalb des fhem-Verzeichnis liegt, wird die Datenbank automatisch mit in das erstellte .tar.gz gepackt.
Hallo Betateilchen,
erstmal danke für die umfassende Antwort, ich hatte eher an einen echten DB Backup oder Export mit SQL Mitteln gedacht, um wirklich einen sauberen und aus DB-Sicht konsistenten Zustand zu haben.
Ich würde die Frage dann gerne an alle ConfigDB User weitergeben, wie macht ihr denn den Backup und ggf. Restore? Speziell mit MySQL würde es mich interessieren.
Vielen Dank
Klaus
Dazu würdest du in einem mySQL Forum sicher mehr Infos finden bzw. hat google dazu jede Menge auf Lager
Nur als Beispiel:
mysqldump --user=XXX --password=YYY -Q fhem_db > /PPfad/zum/Backup/backup_$date.sql
In ein Script und dann in einen Cronjob...
wie schon gesagt: Es hängt davon ab, welchen Datenbanktyp man verwendet.
Zitat von: Klaus Rubik am 08 Mai 2014, 16:52:35
jedoch scheue ich mich aktuell noch davor, da ich bisher noch nichts zum Thema Backup/Restore der Daten in der ConfigDB gefunden habe. Idealerweise würde ich das gerne in einen Cron Job auf dem FHEM Server ausführen lassen. Da ich so gut wie keine Kenntnisse in SQL habe
Wie schon beschrieben: Nimm eine SQLITE Datenbank für Deine configDB und Du hast die einfachste Variante einer Datensicherung, die Du Dir vorstllen kannst. Das funktioniert ganz ohne jegliche SQL Kenntnisse, da die gesamte Datenbank aus einer einzigen Datei besteht. Das Backup besteht also darin, diese eine Datei einfach zu kopieren. Das Restore besteht darin, die gesicherte Datei wieder an die Stelle zurückzukopieren, wo die configDB von fhem gesucht wird.
Zitat von: betateilchen am 08 Mai 2014, 22:18:30
Wie schon beschrieben: Nimm eine SQLITE Datenbank für Deine configDB und Du hast die einfachste Variante einer Datensicherung, die Du Dir vorstllen kannst. Das funktioniert ganz ohne jegliche SQL Kenntnisse, da die gesamte Datenbank aus einer einzigen Datei besteht. Das Backup besteht also darin, diese eine Datei einfach zu kopieren. Das Restore besteht darin, die gesicherte Datei wieder an die Stelle zurückzukopieren, wo die configDB von fhem gesucht wird.
Hallo,
obwohl meine MySQL Datenbank läuft, wollte ich doch, bevor ich beginne mit einer SQLite-Datenbank weitermachen.
Leider schaffe ich es nicht, eine leere DB anzulegen.
In der commandref hört es bei mir auf:
Eine leere Datenbank muss angelegt werden, z.B. in sqlite3:
mba:fhem udo$ sqlite3 configDB.db
SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> pragma auto_vacuum=2;
sqlite> .quit
mba:fhem udo$
mba gibt es nicht, weder auf der Konsole noch wenn ich sqlite3 starte.
Und bei Google finde ich nur, wie man Tabellen usw. anlegt, das ist aber nicht relevant.
Danke für einen Tip.
Fehlendes Grundwissen zu Kommandozeilen und Prompts...
mba:fhem udo$
ist der Prompt, den ich sehe, wenn ich (user=udo) auf meinem Rechner (mba) ein Terminal öffne und in den fhem Verzeichnispfad (fhem) wechsle. Das Dollarzeichen steht da, weil ich als normaler User arbeite. Würde ich als root arbeiten, würde dort eine Raute (#) stehen.
Das alles hat nichts mit dem Befehl zu tun, den Du eingeben sollst, sondern sollte ein eindeutiges Signal für Leute, die wissen was sie tun, sein, um zu erkennen, wo das alles ausgeführt werden muss. Es gab nämlich auch schon Leute, die haben stundenlang versucht, Kommandzeilenbefehle des Betriebssystems in der Befehlszeile des fhem Frontends einzugeben...
ABER: Wenn Du schon mysql laufen hast, warum willst Du dann auf sqlite umsteigen?
Zitat von: betateilchen am 14 November 2014, 12:41:59
Fehlendes Grundwissen zu Kommandozeilen und Prompts...
mba:fhem udo$
ist der Prompt, den ich sehe, wenn ich (user=udo) auf meinem Rechner (mba) ein Terminal öffne und in den fhem Verzeichnispfad (fhem) wechsle. Das Dollarzeichen steht da, weil ich als normaler User arbeite. Würde ich als root arbeiten, würde dort eine Raute (#) stehen.
Das alles hat nichts mit dem Befehl zu tun, den Du eingeben sollst, sondern sollte ein eindeutiges Signal für Leute, die wissen was sie tun, sein, um zu erkennen, wo das alles ausgeführt werden muss. Es gab nämlich auch schon Leute, die haben stundenlang versucht, Kommandzeilenbefehle des Betriebssystems in der Befehlszeile des fhem Frontends einzugeben...
Ja, das ist richtig, aber auch ohne die Promt.. klappt es bei mir nicht. Sorry
Zitat von: betateilchen am 14 November 2014, 12:41:59
ABER: Wenn Du schon mysql laufen hast, warum willst Du dann auf sqlite umsteigen?
Mein System ist immer noch "Nackt" und da im Forum die Vorzüge von SQLite hervorgehoben werden, auch in Bezug auf Datensicherung.
Ich dachte somit, gleich mit SQLite beginnen zu können. Nach der Installation von MySQL hatte ich nicht mit soviel Problemen gerechnet. Ich ging davon aus, wenn man sich an die commandref.. hält sollte es nur kleine Probleme geben. Aber auch in der MySQL-Beschreibung habe ich Fehler gefunden.
Einfach eine leere DB anlegen nicht hinzubekommen ist auch wirklich schwach ;-)
Grüße
Hallo,
eventuell kann mir ja doch jemand helfen:
sqlite3 /opt/fhem/configDB.db;
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
root@Banana01:~# sqlite3 /opt/fhem/configDB.db
SQLite version 3.7.13 2012-06-11 02:05:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .database
seq name file
--- --------------- ----------------------------------------------------------
0 main /opt/fhem/configDB.db
sqlite>
.help
.exit
root@Banana01:~# /etc/init.d/fhem stop
Stopping fhem...
root@Banana01:~# cd /opt/fhem
root@Banana01:/opt/fhem# perl fhem.pl configDB.db
Can't locate RTypes.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at fhem.pl line 444.
root@Banana01:/opt/fhem#
insbesondere hier:
root@Banana01:/opt/fhem# perl fhem.pl configDB.db
Can't locate RTypes.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at fhem.pl line 444.
Meine configDB.conf habe ich mal angehangen.
Dankeschön.
Dein jetziges Problem (RTypes) hat nichts mit configDB zu tun.
Zitat von: betateilchen am 14 November 2014, 14:42:35
Dein jetziges Problem (RTypes) hat nichts mit configDB zu tun.
Ok, wusste ich nicht.
Das heist, meine Datenbank ist mir gelungen?
Aber wie beseitige ich das andere Problem? Ich habe das gleiche img (nach Installation von fhem 5.6) genommen, womit ich auch die MySQL Datenbank hinbekommen habe.
Wo könnte der Fehler liegen?
Dankeschön
Du musst Dir angewöhnen SEHR VIEL aufmerksamer zu arbeiten und genau das zu tun, was in der Doku steht. Und nicht das, was DU meinst, was richtig sei.
falsch:
perl fhem.pl configDB.db
richtig:
perl fhem.pl configDB
Dankeschön. Das war es.
Sorry für die Unannehmlichkeiten.
Schönes Wochenende allen hier.
Hallo,
doch noch nicht so einfach.
Nach einem reboot ist wieder alles beim alten, also die fhem.cfg ist wieder da,
Auch kann ich keinen anderen Style aufrufen, das er angezeigt wird, aber das ist das kleinste Übel.
Wie bekomme ich FHEM dazu, einen Reboot zu überstehen?
Dankeschön
Hallo,
so, nach einer Woche intensives Testen klappt alles und ich bin zufrieden.
Nur noch einmal eine Frage:
Ich habe mir auch gleich von Anfang an angewöhnt, die fhem.cfg nicht zu bearbeiten. Ist mir auch gelungen.
Somit ist das Programmieren von FHEM nur über die Weboberfläche ganz easy.
Was ist jetzt eigentlich der Unterschied zur Datenbank? Läuft es stabiler, schneller oder sicherer? Sichern kann ich die configDB ja eigentlich genau so schnell wie die fhem.cfg.
Ich bin mir nicht sicher, ob ich noch "umbaue" da ich doch in der fhem.cfg die Möglichkeit habe, mal reinzuschauen oder was reinzukopieren (sowas "langes" wie TV-Programme).
Und wie gesagt, ich will die fhem.cfg gar nicht mehr von Hand bearbeiten.
Und allen Entwicklern hier ein großes Dankeschön! Ist schon der Wahnsinn, was Ihr auf die Beine gestellt habt. Weiter so! ;)
Grüße und ein schönes Wochenende
ZitatLäuft es stabiler, schneller oder sicherer?
nö,nö, nö was verstehst du unter sicherer?
Also ist es egal, ob Datenbank oder fhem.cfg?
Grüße
Gesendet von meinem KFSOWI mit Tapatalk
Zitat von: NewbieNew am 21 November 2014, 19:19:52
Also ist es egal, ob Datenbank oder fhem.cfg?
Nein, es ist nicht egal. Es sind einfach zwei verschiedene Optionen. Für beide Optionen gibt es Für und Wider. Das wurde aber bereits in aller Tiefe diskutiert...
poste doch mal bitte den kompletten Inhalt deines fhem Startkripts.
Hallo,
ja, gerne.
Meinst Du das im /etc/init.d/fhem?
leider kann ich es erst heute Abend posten, da ich dann erst rankomme. Aber alles was in opt/fhem ist, habe ich sofort hier.
Grüße zum Sonntag
Hallo betateilchen,
hier ist die /etc/init.d/fhem
#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert
### BEGIN INIT INFO
# Provides: fhem.pl
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: FHEM server
### END INIT INFO
set -e
cd /opt/fhem
port=7072
if test "$2" != "noaptmark"; then
apt-mark hold fhem > /dev/null
fi
case "$1" in
'start')
echo "Starting fhem..."
# if you need to start hmland for use with
# Homematic, please start the hmland daemon
# like this (please use correct path and port,
# depending on your installation!)
#
# /opt/hmcfgusb/hmland -d -p 1234 -r 0
#
#
# perl fhem.pl fhem.cfg
#
# if you want to use configDB for configuration,
# use this command to start fhem:
#
perl fhem.pl configDB
#
# and remove/comment the above line including fhem.cfg
RETVAL=$?
;;
'stop')
echo "Stopping fhem..."
# if you want to stop hmland during fhem stop:
# pkill hmland
pkill -U fhem perl
RETVAL=$?
;;
'status')
cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
if [ "$cnt" -eq "0" ] ; then
echo "fhem is not running"
else
echo "fhem is running"
fi
;;
*)
echo "Usage: $0 { start | stop | status }"
RETVAL=1
;;
esac
exit $RETVAL
Danke für die Mühe
Schau mal bitte nach, ob es in /etc/init (Achtung: NICHT init.d!) noch irgendwas gibt, das nach fhem aussieht. Falls ja, bitte löschen.
Hallo,
nein,es ist kein "fhem" in den Dateinamen vorhanden. Also gibts nichts zu löschen.
Grüße
Also Dein Startskript ist in Ordnung, aber Du behauptest trotzdem, Dein fhem würde nach einem Reboot mit fhem.cfg anstatt mit configDB laufen? Langsam wird das Ganze kurios.
Wie hast Du das festgestellt?
Ohhh, ganz große Entschuldigung.
Ich habe mich oben mit dem Post vom 21 November 2014, 16:31:10 warscheinlich etwas unklar ausgedrückt. Die Datenbank läuft seitdem. Nachdem ich das in der /etc/init.d/fhem geändert habe (das sollte m.E. mit in die http://fhem.de/commandref_DE.html#configdb aufgenommen werden). Diesen Tip bekam ich hier im Forum.
Sorry nochmals.
Grüße