MySQL DB mit cronjob updaten
-
Ich habe das MediathekView Plugin in LibreElec laufen. Es benutzt eine MySQL DB (8.0) auf einem Ubuntu-Server.
Das funktioniert eigentlich gut, aber die Performance beim Update der DB (und beim Download von Filmen) könnte besser sein, vornehm gesagt.
Der Grund dafür ist wohl mein Setup:- Die mediathekview DB liegt auf dem Server, der über Ethernet verbunden ist.
- LibreElec läuft auf einem Pi3+ der über Wlan verbunden ist.
- Die Medienverzeichnisse, auch das für die Mediathek-Downloads, liegen auch auf dem Server. Dafür hat der Server eine eigene Partition, die auf dem Pi über nbd (network block device eingehängt ist. Das funktioniert gut.
Die Download-Performance ist eigentlich erträglich. Der Flaschenhals ist der Update der DB: Kodi verbindet sich mit dem Mediathekview-Server (Wlan), holt die Daten und schreibt sie in die DB (wieder Wlan).
Ich sehe zwei Lösungen des Problems;- Die Updates auf dem Pi kann man deaktivieren. Dann soll der Server die DB-Updates regelmäßig machen, über einen cronjob aktiviert. Geht das, und wenn ja, wie? Der Server ist headless und soll es auch bleiben.
- Ich besorge mir einen Switch und spendiere so dem Pi eine Eth-Verbindung statt des Wlans - ist wahrscheinlich einfacher und stabiler, kostet aber nochmal Strom für den Switch.
Was meint ihr?
-
Schau mal in das README unter “Standalone Datenbank”. Dort findest du den Aufruf des Scripts (./mvupdate mysql -H … -P … -u … -p …) welches dann als Cron eingebunden werden kann. Im Client (Pi3) dann natürlich das Update abschalten.
Im Readme gibt es auch noch Erklärungen für Docker, wenn das für dich besser passt. -
Schau mal in das README unter “Standalone Datenbank”. Dort findest du den Aufruf des Scripts (./mvupdate mysql -H … -P … -u … -p …) welches dann als Cron eingebunden werden kann. Im Client (Pi3) dann natürlich das Update abschalten.
Im Readme gibt es auch noch Erklärungen für Docker, wenn das für dich besser passt.@codingPF
Vielen Dank, das war sehr hilfreich!Ich hatte die README schon gelesen, aber wohl nicht genau genug. Den Part, dass man das ganze Plugin-Verzeichnis auf den Server kopieren muss und dann ja mit installiertem Python die Update-Prozedur ausführen kann, habe ich glatt missverstanden und übergangen (das sah so nach Kodi-Plugin aus).
Merkwürdig: ein voller Update hat super funktioniert, nun bekomme ich bei jedem Aufruf die Meldung
2024-02-13 16:39:11.974334 ERROR [mvupdate3-0.0]: Unable to find version information: ParseError not well-formed (invalid token): line 1, column 1Der Updater scheint aber zu tun, was er soll.
Folgendes ist mir noch aufgefallen:
Gibt man den Parameter -H localhost an, gibt es eine Exception. Ohne -H funktioniert es für localhost.Für Nachahmer:
mvupdate3 muss ja im Pluginverzeichnis aufgerufen werden, sonst geht’s nicht. Also schiebe ich den ganzen Inhalt des Pluginverzeichnissses nach ~/.mvupdate und mache folgende Prozedur:#!/bin/bash cd /home/mylogin/.mvupdate ./mvupdate3 mysql $1 -u myuser -p mypass 2> /home/mylogin/.mvupdate/upd.logDie crontab schaut dann so aus:
0 4 * * * /home/mylogin/.mvupdate/mvupdate -F */30 9-23 * * * /home/mylogin/.mvupdate/mvupdate -fAlso wird alle 30 Minuten zwischen 8:00 und 24:00 ein kleiner Update und um 04:00 ein voller Update gemacht.
So läuft das erst mal perfekt und ich spare mir weiter den Switch. -
@codingPF
Vielen Dank, das war sehr hilfreich!Ich hatte die README schon gelesen, aber wohl nicht genau genug. Den Part, dass man das ganze Plugin-Verzeichnis auf den Server kopieren muss und dann ja mit installiertem Python die Update-Prozedur ausführen kann, habe ich glatt missverstanden und übergangen (das sah so nach Kodi-Plugin aus).
Merkwürdig: ein voller Update hat super funktioniert, nun bekomme ich bei jedem Aufruf die Meldung
2024-02-13 16:39:11.974334 ERROR [mvupdate3-0.0]: Unable to find version information: ParseError not well-formed (invalid token): line 1, column 1Der Updater scheint aber zu tun, was er soll.
Folgendes ist mir noch aufgefallen:
Gibt man den Parameter -H localhost an, gibt es eine Exception. Ohne -H funktioniert es für localhost.Für Nachahmer:
mvupdate3 muss ja im Pluginverzeichnis aufgerufen werden, sonst geht’s nicht. Also schiebe ich den ganzen Inhalt des Pluginverzeichnissses nach ~/.mvupdate und mache folgende Prozedur:#!/bin/bash cd /home/mylogin/.mvupdate ./mvupdate3 mysql $1 -u myuser -p mypass 2> /home/mylogin/.mvupdate/upd.logDie crontab schaut dann so aus:
0 4 * * * /home/mylogin/.mvupdate/mvupdate -F */30 9-23 * * * /home/mylogin/.mvupdate/mvupdate -fAlso wird alle 30 Minuten zwischen 8:00 und 24:00 ein kleiner Update und um 04:00 ein voller Update gemacht.
So läuft das erst mal perfekt und ich spare mir weiter den Switch.Deine Probleme schau ich mir mal an - ich benutze das Feature selbst nicht. Wenn du weitere findest, dann mach bitte ein GIT Issue auf - dort ist es besser aufgehoben.
Zu deinem Setup:
Die Filmliste wird nur ein Mal pro Stunde erstellt. Ein 30 min Intervall somit nicht nötig/sinnvoll.
Du musst/solltest auch nicht mit -f -F arbeiten. Wenn du die Parameter weg nimmst, sollte er jede Stunde Updates ziehen und morgens um 5 ein komplettes Update machen. Prüfen/Aufrufen kannst du dann auch in kürzeren Intervallen. Also einfach mal Parameter (-f / -F) löschen und schauen was passiert. Mit -v (-v -v -v) gibs auch logs… -
UPDATE
Prozedur mvupdate
#!/bin/bash cd $HOME/.mvupdate ./mvupdate3 mysql [-v -v] -u myuser -p mypass [>>upd.log 2>&1]Die Debug-Ausgabe und das Schreiben einer Logdatei kann man sich sparen, wenn alles läuft.
Die Prozedur muss ausfphrbar sein.
Die crontab schaut so aus:0 4 * * * $HOME/.mvupdate/mvupdate 0 9-23 * * * $HOME/.mvupdate/mvupdateAlso wird jede zwischen 9:00 und 23:00 ein kleiner Update und um 04:00 ein voller Update gemacht.
Falls die Updates um eine Stunde nach vorn verschoben sind, dann hat cron UTC als Zeitzone. Das kann man wie folgt ändern:
Trage in die Datei /etc/default/cron folgende Zeile ein:TZ="Europe/Berlin"und starte cron neu.
-
Ich habe das MediathekView Plugin in LibreElec laufen. Es benutzt eine MySQL DB (8.0) auf einem Ubuntu-Server.
Das funktioniert eigentlich gut, aber die Performance beim Update der DB (und beim Download von Filmen) könnte besser sein, vornehm gesagt.
Der Grund dafür ist wohl mein Setup:- Die mediathekview DB liegt auf dem Server, der über Ethernet verbunden ist.
- LibreElec läuft auf einem Pi3+ der über Wlan verbunden ist.
- Die Medienverzeichnisse, auch das für die Mediathek-Downloads, liegen auch auf dem Server. Dafür hat der Server eine eigene Partition, die auf dem Pi über nbd (network block device eingehängt ist. Das funktioniert gut.
Die Download-Performance ist eigentlich erträglich. Der Flaschenhals ist der Update der DB: Kodi verbindet sich mit dem Mediathekview-Server (Wlan), holt die Daten und schreibt sie in die DB (wieder Wlan).
Ich sehe zwei Lösungen des Problems;- Die Updates auf dem Pi kann man deaktivieren. Dann soll der Server die DB-Updates regelmäßig machen, über einen cronjob aktiviert. Geht das, und wenn ja, wie? Der Server ist headless und soll es auch bleiben.
- Ich besorge mir einen Switch und spendiere so dem Pi eine Eth-Verbindung statt des Wlans - ist wahrscheinlich einfacher und stabiler, kostet aber nochmal Strom für den Switch.
Was meint ihr?
Kodi verbindet sich […]
Jetzt müsste einfach noch ein Verantwortlicher den Thread in die entsprechende Kategorie des Forums verschieben.
Auch dieser Thread müsste noch in die richtige Kategorie verschoben werden… -
I iks-jott verschob dieses Thema von Fragen, Hilfe, Kritik am
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden