FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Klaus Rubik am 08 Mai 2014, 16:52:35

Titel: Backup/Restore ConfigDB
Beitrag von: Klaus Rubik am 08 Mai 2014, 16:52:35
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
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: betateilchen am 08 Mai 2014, 20:03:24
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.
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: Klaus Rubik am 08 Mai 2014, 20:24:29
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
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: marvin78 am 08 Mai 2014, 20:28:03
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...
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: betateilchen am 08 Mai 2014, 20:34:31
wie schon gesagt: Es hängt davon ab, welchen Datenbanktyp man verwendet.
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: betateilchen am 08 Mai 2014, 22:18:30
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.

Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 14 November 2014, 12:16:56
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.


Titel: Antw:Backup/Restore ConfigDB
Beitrag 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...

ABER: Wenn Du schon mysql laufen hast, warum willst Du dann auf sqlite umsteigen?
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 14 November 2014, 13:45:24
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
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 14 November 2014, 14:28:06
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.
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: betateilchen am 14 November 2014, 14:42:35
Dein jetziges Problem (RTypes) hat nichts mit configDB zu tun.
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 14 November 2014, 14:46:31
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
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: betateilchen am 14 November 2014, 15:14:50
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

Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 14 November 2014, 15:44:41
Dankeschön. Das war es.
Sorry für die Unannehmlichkeiten.

Schönes Wochenende allen hier.
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 14 November 2014, 16:17:59
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
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 21 November 2014, 16:31:10
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
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: LuckyDay am 21 November 2014, 18:31:49
ZitatLäuft es stabiler, schneller oder sicherer?
nö,nö, nö was verstehst du unter sicherer?
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 21 November 2014, 19:19:52
Also ist es egal, ob Datenbank oder fhem.cfg?

Grüße

Gesendet von meinem KFSOWI mit Tapatalk

Titel: Antw:Backup/Restore ConfigDB
Beitrag von: tpm88 am 21 November 2014, 19:26:17
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...

Titel: Antw:Backup/Restore ConfigDB
Beitrag von: betateilchen am 22 November 2014, 18:00:36
poste doch mal bitte den kompletten Inhalt deines fhem Startkripts.
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 23 November 2014, 12:02:30
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
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 24 November 2014, 10:47:29
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
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: betateilchen am 24 November 2014, 12:36:01
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.
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 24 November 2014, 12:42:46
Hallo,
nein,es ist kein "fhem" in den Dateinamen vorhanden. Also gibts nichts zu löschen.

Grüße
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: betateilchen am 24 November 2014, 13:15:13
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?
Titel: Antw:Backup/Restore ConfigDB
Beitrag von: NewbieNew am 24 November 2014, 13:29:03
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