Base Domoticz énorme - Nettoyage

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Base Domoticz énorme - Nettoyage

Message par Chrominator »

Je me suis rendu compte récemment que ma base était très grosse : 270 Mo.
Et la fonction permettant de la sauvegarder ne fonctionnait plus :

Code : Tout sélectionner

curl -s http://localhost:8080/backupdatabase.php --output domoticz.db.backup
Ça générait un fichier vide et c'est tout. Idem à partir des paramètres dans la page de l'interface web.

J'ai fouillé dedans avec DB Browser for SQLite après l'avoir téléchargée sur mon pc Windows.

J'ai trouvé près de 3 millions d'enregistrements dans la table LightingLog !

Capture.PNG
Capture.PNG (21.47 Kio) Consulté 4957 fois
Ça semble enregistrer les actions On/Off sur les interrupteurs, mais aussi les titres qui passent sur les Kodi, ou sur Logitech Media Server, etc...
Bref, tout l'historique depuis Novembre 2019. Aucun intérêt.
Surtout que le paramètre qui va bien pour purger ça dans Domoticz est toujours fixé à 15 jours.

Screenshot_2020-05-08 Domoticz.png
Screenshot_2020-05-08 Domoticz.png (5.68 Kio) Consulté 4957 fois
Pour nettoyer, j'ai essayé de laisser 15 jours d'historique en exécutant la syntaxe suivante :

Code : Tout sélectionner

delete from LightingLog where date < '2020-05-01';
Malheureusement j'ai eu un message d'erreur :

Code : Tout sélectionner

Result: database disk image is malformed
Dommage.
C'est peut-être pour ça que Domoticz n'arrivait pas à la purger non plus.

Alors j'ai procédé par séquences.
Je me suis servi de la colonne nValue qui avait l'air de ne pas prendre trop de valeurs.

En passant le sql suivant en faisant varier nValue de 0 à 9, j'ai pu supprimer tous les enregistrements.

Code : Tout sélectionner

delete from LightingLog where nValue=0;
Ensuite j'ai compacté la base de données (Outils/Compacter la base de données) et là elle a vraiment maigri ! 9 Mo seulement.

Je l'ai replacée dans le répertoire Domoticz d'où elle venait après avoir arrêté Domoticz et je l'ai redémarré.
C'est reparti.
La sauvegarde de la base refonctionne, nickel.
Enfin presque.

Il y avait cette petite erreur persistante dans le log qui m'inquiétait pour l'avenir.

Code : Tout sélectionner

 2020-05-08 05:46:17.709 Error: CheckAuthToken(1d6e3e4d78db2c3a28915a6ce1bf9188_YWFlNjU0MWQtNDljNi00NTNkLWJiYzEtZGVmODliYzM0MzZi) : session id not found
Ça semblait lié au navigateur.
J'ai supprimé les cookies et vidé le cache ; plus d'erreur.

Tout fonctionne normalement depuis.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Septain21
Messages : 15
Inscription : 26 avr. 2020, 21:19

Re: Base Domoticz énorme - Nettoyage

Message par Septain21 »

Salut

Merci de ton retour ca peut aider en effet vue les changements d'état journalier de certains appareils qui engorgent la base sans intérêt
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Base Domoticz énorme - Nettoyage

Message par Chrominator »

Bon comme ça continue à grossir et que je ne vais pas passer mon temps à purger la base à la main, j'ai automatisé la cure d'amaigrissement :
  1. Installer sqlite3 pour pouvoir modifier la database :

    Code : Tout sélectionner

    sudo apt install sqlite3
  2. Script de lancement de la cure que j'appelle ~/domoticz/scripts/compressdb.sh

    Code : Tout sélectionner

    #!/bin/bash
    SERVICE=/usr/sbin/service
    SQLITE3=/usr/bin/sqlite3
    cd /home/pi/domoticz
    $SERVICE monit stop
    if [ $? == 0 ]; then
      $SERVICE domoticz.sh stop
      if [ $? == 0 ]; then
        if [ -f "/home/pi/domoticz/domoticz.new.db" ]; then
          rm /home/pi/domoticz/domoticz.new.db
        fi
        cat /home/pi/domoticz/scripts/compressdb.sql | $SQLITE3
        cp /home/pi/domoticz/domoticz.new.db /home/pi/domoticz/domoticz.db
        chown pi.pi /home/pi/domoticz/domoticz.db
        $SERVICE domoticz.sh start
        $SERVICE monit start
      fi
    fi
    
    ne pas oublier de rendre le script exécutable

    Code : Tout sélectionner

    chmod +x ~/domoticz/scripts/compressdb.sh
  3. Script sql qui va supprimer ces logs inutiles en laissant quand même le mois en cours et le mois précédent puis compacter la base: /home/pi/domoticz/scripts/compressdb.sql

    Code : Tout sélectionner

    .open /home/pi/domoticz/domoticz.db
    delete from LightingLog where date <= date('now','start of month','-1 month','-1 day');
    .clone domoticz.new.db
    .quit
  4. Entrée dans la crontab de root pour exécuter tout ça une fois par mois

    Code : Tout sélectionner

    sudo crontab -e

    Code : Tout sélectionner

    0 5 1 * *       /home/pi/domoticz/scripts/compressdb.sh
Voilà, maintenant ça va maigrir tout seul.

Si vous n'utilisez pas monit, mettez en commentaire les lignes 5, 6, 18 dans ~/domoticz/scripts/compressdb.sh.
(faire précéder la ligne d'un #).
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
juju-77
Messages : 1
Inscription : 08 nov. 2015, 17:28

Re: Base Domoticz énorme - Nettoyage

Message par juju-77 »

Merci Chrominator pour ton poste ;)

Cela m'a bien aidé car en la purgeant, l'accès est de nouveau rapide.
Par contre, c'est depuis la MAJ 2020.1 que cela se produit, ils ont insérés un champs user genre quel utilisateur fait l'ajout dans la base (dans mon cas un script LUA EventSystem//home/pi/domoticz/scripts/lua/script_device_chauffage_salon_fenetre.lua) ce qui fait que la base a explosé.
17mo = 40mo en 7mois ... ca reste des valeurs très faible, pourtant la base semble cohérente et bien indexé d'après le logiciel "DB Browser".

A voir si c'est pas un autre élément dans la base, je continue mes recherches.
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Base Domoticz énorme - Nettoyage

Message par Chrominator »

Content de t'avoir aidé ! :)
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Répondre