Backup/Restore ConfigDB

Begonnen von Klaus Rubik, 08 Mai 2014, 16:52:35

Vorheriges Thema - Nächstes Thema

Klaus Rubik

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
FHEM 6.0 auf RPI4 mit CUL868, AEOTEC, RFXTRX 433
CUL_WS  : S300TH              FHT         : FHT80B, FHT80TF
HMS        : HMS100-TF         FBDECT   : DECT!200, FRITZ!Powerline 546E
FS20       : FS20DI10, FS20ST, FS20WS1, FS20DU-2, FS20 FMS

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Klaus Rubik

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
FHEM 6.0 auf RPI4 mit CUL868, AEOTEC, RFXTRX 433
CUL_WS  : S300TH              FHT         : FHT80B, FHT80TF
HMS        : HMS100-TF         FBDECT   : DECT!200, FRITZ!Powerline 546E
FS20       : FS20DI10, FS20ST, FS20WS1, FS20DU-2, FS20 FMS

marvin78

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...

betateilchen

wie schon gesagt: Es hängt davon ab, welchen Datenbanktyp man verwendet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

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.

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

NewbieNew

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.



betateilchen

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?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

NewbieNew

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

NewbieNew

#9
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.

betateilchen

Dein jetziges Problem (RTypes) hat nichts mit configDB zu tun.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

NewbieNew

#11
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

betateilchen

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

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

NewbieNew

Dankeschön. Das war es.
Sorry für die Unannehmlichkeiten.

Schönes Wochenende allen hier.

NewbieNew

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