[ConfigDB] Wechsel von MySQL nach PostgreSQL?

Begonnen von Morgennebel, 08 August 2019, 20:24:19

Vorheriges Thema - Nächstes Thema

Morgennebel

Moin Moin,


was ist denn der geschickteste Weg, bei einem laufenden FHEM die ConfigDB und LogDB von MySQL zu PostgreSQL zu wechseln?

Ich kann mit

configdb fileexport all

die in der ConfigDB gespeicherten Konfigurationen sichern und neu einlesen - aber was ist der Weg für die "fhem.cfg"?

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

CoolTux

Datenbankmigration von mysql zu postgresql


  • pgloader installieren
apt-get install pgloader

  • mit ploader die DB auf den postgresql Server migrieren
pgloader mysql://fhem:MYSQLPASSWORT@localhost/configDB postgresql://postgres:POSTGRESQLPASSWORT@10.6.6.31/testConfigDB
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

onkel-tobi

Hi zusammen,

da ich gerade auch auf configDB umstellen möchte:
Welche Vorteile bietet mir PostgreSQL in Verbindung mit FHEM?
Oder welche Gründe sprechen bei euch für die Migration?

Danke & Gruß,
Tobias

betateilchen

Wenn man Vergleiche zwischen MySQL und PostgreSQL betrachtet und z.B. folgendes Ergebnis liest:

Zitat
Quelle: http://ledgersmbdev.blogspot.com/2012/09/or-modelling-interlude-postgresql-vs.html

MySQL is designed with the idea that applications provide logic and the database provides dumb storage of the application's state.
[...]
PostgreSQL, on the other hand, is designed with the idea that the database itself is a modelling tool, and that the applications interact with it over an API defined in SQL.

wird man feststellen, dass es für die Anwendung innerhalb FHEM für die configDB eigentlich egal ist, für welches der beiden Modelle man sich entscheidet.
Die "Logik" ist komplett in FHEM abgebildet. Die technischen Möglichkeiten, die von der Datenbank selbst bereitgestellt werden, werden nicht genutzt.

Warum das so ist? Weil in FHEM die Flexibilität gegeben werden sollte, sich einfach zwischen sqlite, mysql und postgresql zu entscheiden. Der eine oder andere Anwender hat ja vielleicht ohnehin schon einen SQL Server laufen, den er gerne auch für FHEM nutzen möchte.

Hätte man nun explizit für die einzelnen Datenbanktypen entwickelt, hätte man sowohl DbLog als auch configDB quasi dreimal unterschiedlich programmieren müssen. Und es gibt auch so schon genug Fallunterscheidungen im Code dieser Module, die aufgrund unterschiedlicher Syntax der Datenbanken notwendig sind.

Mein Fazit: Such Dir das Datenbankmodell aus, das Dir persönlich am besten gefällt. Für viele Anwender ist sogar sqlite3 eine völlig ausreichende Lösung.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Morgennebel

Zitat von: onkel-tobi am 25 August 2019, 18:53:01
Welche Vorteile bietet mir PostgreSQL in Verbindung mit FHEM?

Ich hatte ConfigDB und LogDB etwa 1 Jahr mit MariaDB (MySQL-Fork) mit FHEM und NextCloud am laufen. Recht problemlos.

Dann kam ein Update für Nextcloud. Mit dem Update kamen empfohlene /etc/mysql/*-Einstellungen. Das sind bei mir 5 Dateien,
für Server und Client und und und, die ich nach Anleitung konfiguriert habe - schwupps, NextCloud startete nicht mehr. Hat mich
vier Stunden gekostet und mehrfaches Neuaufsetzen von Nextcloud - und lag nur an den MariaSQL-Konfigurationsdateien.

Dann hat MariaSQL "Probleme" mit UTF8 (der DB-Typ muß UTF8MB4 sein, siehe https://mathiasbynens.be/notes/mysql-utf8mb4).
MariaSQL kopiert die DB beim verkleinern (set DBLOG reduceLogN XXX) nach /tmp - da muß also genügend viel Platz vorhanden
sein. Ist mir auch auf die Füsse gefallen und führte zu doofen Workarounds mit temporären USB-Sticks als /tmp.

Testweise auf PostgreSQL gewechselt. Alles lief auf Anhieb. Mit PGTune (https://pgtune.leopard.in.ua/#/) innerhalb von 1 Minute
eine bessere Konfig erzeugt, eingespielt, lief. Keine Probleme.
PostgreSQL User-Schema ist anders (Unix-User sollte identisch zum Postgres-User sein), was beim testen zu Verwirrung führte.

Du kannst mich gerne einen DAU nennen - aber ich habe mit PostgreSQL weniger Probleme und finde die Konfiguration sinnvoll
einfacher, als MariaDB...

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

onkel-tobi

Hm. Ich hatte in der Zwischenzeit jetzt tatsächlich MariaSQL genommen, da ich es eh auf meiner synology habe. Standardmäßg ist da utf_general_ci eingestellt. Ist das nun ein Problem?

Gruß,
Tobi


Gesendet von iPad mit Tapatalk