Datenbank Komprimieren und Bereinigen per Script

Das Langzeitarchiv für HomeMatic

Moderator: Co-Administratoren

Antworten
ivo-int
Beiträge: 300
Registriert: 13.04.2020, 08:55
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 37 Mal
Danksagung erhalten: 16 Mal

Datenbank Komprimieren und Bereinigen per Script

Beitrag von ivo-int » 19.09.2022, 18:54

Hallo zusammen

Meine Frage richtet sich an die Script Spezialisten von euch. Ich habe zu geringe Kenntnisse um das selbst hinzukriegen.

Ist es grundsätzlich möglich die ganze Datenbank-Komprimierung ebenfalls in einem Script zu verpacken?

Die Schwierigkeit ist ja dass zuerst CCU-Historian gestoppt werden muss und danach recalc und compact durchgeführt werden muss. Am Ende wird Historian wieder gestartet.

Jetzt weiss ich aus eigener Erfahrung dass es eine Weile dauert bis Historian gestoppt ist. Erst danach kann der nächste Schritt ausgeführt werden. Kann man das überprüfen ob der nächste Schritt ausgeführt werden kann?

Es ist grundsätzlich Sinnvoll danach die Datenbank gleich zu Bereinigen.

Gruss Ivo
_______________________________________________________________________________________________________
Raspberrymatic auf einem Raspi 4 4GB (HB-RF-USB-2) mit 2 LAN Gateways,
42 RF Geräte, 4 IP Geräte und 21 Cuxd Geräte, 24 RF Eigenbau Geräte
hm_pdetect, E-Mail, XML-API, JB HB Devices, HB-TM-Devices-AddOn, CUx-Daemon, CCU-Historian auf einem separaten Raspi

Mathias
Beiträge: 1779
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 258 Mal
Kontaktdaten:

Re: Datenbank Komprimieren und Bereinigen per Script

Beitrag von Mathias » 20.09.2022, 23:49

ivo-int hat geschrieben:
19.09.2022, 18:54
Ist es grundsätzlich möglich die ganze Datenbank-Komprimierung ebenfalls in einem Script zu verpacken?
Das müsste ich mir mal anschauen. Das wäre natürlich eine tolle Funktion.
ivo-int hat geschrieben:
19.09.2022, 18:54
Jetzt weiss ich aus eigener Erfahrung dass es eine Weile dauert bis Historian gestoppt ist. Erst danach kann der nächste Schritt ausgeführt werden. Kann man das überprüfen ob der nächste Schritt ausgeführt werden kann?
Du kannst überprüfen, ob der CCU-Historian-Prozess verschwunden ist. Das Start/Stop-Skript von dem CCU-AddOn macht dies bereits.
ivo-int hat geschrieben:
19.09.2022, 18:54
Es ist grundsätzlich Sinnvoll danach die Datenbank gleich zu Bereinigen.
Du meinst vielleicht die Kommandozeilenoption -compact? Die Verkleinerung der Datenbankdatei wird per Skript leider nicht möglich sein, da dazu die Datenbank komplett abgechaltet werden muss. Dann können Werte sowieso nicht mehr archiviert oder Trends dargestellt werden.

ivo-int
Beiträge: 300
Registriert: 13.04.2020, 08:55
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 37 Mal
Danksagung erhalten: 16 Mal

Re: Datenbank Komprimieren und Bereinigen per Script

Beitrag von ivo-int » 21.09.2022, 18:03

Hallo Mathias

Danke für deine Rückmeldung.
Du meinst vielleicht die Kommandozeilenoption -compact? Die Verkleinerung der Datenbankdatei wird per Skript leider nicht möglich sein, da dazu die Datenbank komplett abgechaltet werden muss.
Ja genau das meine ich. In der Zwischenzeit habe ich ein kleines Script erstellt.

Code: Alles auswählen

#!/bin/sh
# CCU-Historian stoppen
sudo bash /etc/init.d/ccu-historian stop

# Warten bis CCU-Historian gestoppt ist
sleep 15s # 15 Sekunden abwarten

# Datenbank Komprimieren, Kompaktieren und CCU-Historian starten
(sudo java -jar /opt/ccu-historian/ccu-historian.jar -config /opt/ccu-historian/ccu-historian.config -recalc) && (sudo java -jar /opt/ccu-historian/ccu-historian.jar -config /opt/ccu-historian/ccu-historian.config -compact) && (sudo bash /etc/init.d/ccu-historian start)

exit 0
Das habe ich dann auch ausgeführt. Ich habe aber den Eindruck dass das mit "sleep 15s" nicht optimal ist. Bis jetzt habe ich noch nicht herausgefunden, wie ich die Überprüfung ob Historian gestoppt ist durchführen soll.

Der untere Teil mit Komprimieren und verkleinern hat meiner Meinung nach funktioniert. Die Ausführung per Cron-Job kenne ich und werde das Script einfach einmal pro Woche Starten.

Eine Steigerung wäre jetzt noch ein Eintrag in der Log Datei. Aber diese Kenntnisse besitze ich noch nicht.

Mein erster Schritt wäre jetzt das sleep mit einer IF Anweisung zu eliminieren. Hast du hier einen Tipp?

Sehr gerne nehme ich auch andere Meinungen und Vorschläge an.

Gruss Ivo
_______________________________________________________________________________________________________
Raspberrymatic auf einem Raspi 4 4GB (HB-RF-USB-2) mit 2 LAN Gateways,
42 RF Geräte, 4 IP Geräte und 21 Cuxd Geräte, 24 RF Eigenbau Geräte
hm_pdetect, E-Mail, XML-API, JB HB Devices, HB-TM-Devices-AddOn, CUx-Daemon, CCU-Historian auf einem separaten Raspi

Mathias
Beiträge: 1779
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 258 Mal
Kontaktdaten:

Re: Datenbank Komprimieren und Bereinigen per Script

Beitrag von Mathias » 21.09.2022, 21:47

Hallo Ivo,
also der Befehl ccu-historian stop aus der Add-On Distribution (siehe hier) sollte automatisch solange wie nötig warten. Dein Start/Stop-Skript kenne ich jetzt nicht. Falls Dein Start/Stop-Skript nicht wartet, würde ich den sleep auf 2 Minuten setzen.

Eintrräge in die Log-Datei können hiermit erstellt werden:

Code: Alles auswählen

logger -t ccu-historian -p user.debug "Stopping"

ivo-int
Beiträge: 300
Registriert: 13.04.2020, 08:55
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 37 Mal
Danksagung erhalten: 16 Mal

Re: Datenbank Komprimieren und Bereinigen per Script

Beitrag von ivo-int » 22.09.2022, 13:45

Hallo Mathias

Danke für deine Antwort.
intrräge in die Log-Datei können hiermit erstellt werden:

logger -t ccu-historian -p user.debug "Stopping"
Ehrlich gesagt, ich kann dir nicht einmal mehr mitteilen von wo dieses Start/Stop Script von CCU-Historian stammt. :shock:
Meins sieht so aus:

Code: Alles auswählen

#!/bin/bash
### BEGIN INIT INFO
# Provides:          ccu-historian
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop::    $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts ccu-historian
# Description:       starts ccu-historian
### END INIT INFO
(( EUID )) && echo .You need to have root priviliges.. && exit 1
PIDF=/opt/ccu-historian/ccu-historian.pid
CONFF=/opt/ccu-historian/ccu-historian.config
JAVACMD=/usr/bin/java
CCUCMD=/opt/ccu-historian/ccu-historian.jar
RETVAL=0

start() {
            echo -n "Starting ccu-historian"
            start-stop-daemon --start --pidfile $PIDF --make-pidfile --background  --exec $JAVACMD -- -jar $CCUCMD -config $CONFF
            RETVAL=$?
}

stop() {
            echo -n "Stopping ccu-historian"
            start-stop-daemon --quiet --stop --pidfile $PIDF
            RETVAL=$?
}
case "$1" in
    start)
      start
  ;;
    stop)
      stop
  ;;
    restart)
      stop
      start
  ;;
    *)
      echo "Usage: ccu-historian {start|stop|restart}"
      exit 1
  ;;
esac
exit $RETVAL
Im Prinzip funktioniert es auch mit Sleep. Ich werde aber einmal versuchen deinen Teil des Stops für mich zu übernehmen.

Gruss Ivo
_______________________________________________________________________________________________________
Raspberrymatic auf einem Raspi 4 4GB (HB-RF-USB-2) mit 2 LAN Gateways,
42 RF Geräte, 4 IP Geräte und 21 Cuxd Geräte, 24 RF Eigenbau Geräte
hm_pdetect, E-Mail, XML-API, JB HB Devices, HB-TM-Devices-AddOn, CUx-Daemon, CCU-Historian auf einem separaten Raspi

Antworten

Zurück zu „CCU-Historian“