Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. InfluxDB
  5. Pflege der InfluxDB

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    986

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    694

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Pflege der InfluxDB

Geplant Angeheftet Gesperrt Verschoben InfluxDB
44 Beiträge 7 Kommentatoren 170 Aufrufe 6 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde aufgespalten von backitup Speicherort Homoran
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • L Laser

    Mein NAS ist ein Eigenbau mit Banana Pi. Und openmediavault. Da kann ich nur Version3 auswählen. Keine Unterversion. Wenn das Backup fertig ist, stelle ich im Backitup auf 3.1.1. Möchte jetzt nicht eingreifen. Die Datenbank ist wirklich riesig. Und wächst unaufhaltsam. Vermutlich speichere ich immer noch unnötig viele Daten. Ändern- da habe ich Bedenken, daß Alles auf einmal weg ist.

    fuzzy1955F Online
    fuzzy1955F Online
    fuzzy1955
    schrieb am zuletzt editiert von fuzzy1955
    #31

    @Laser sagte in Pflege der InfluxDB:

    Ändern- da habe ich Bedenken, daß Alles auf einmal weg ist

    Hi,

    die InfluxDB kann man doch auch mit SQL-Befehlen bedienen, soweit ich aus der Doku sehe. Ich verwende als langjähriger SQL-Datenbank-Entwickler lieber die mysql, aber die Befehlsstruktur ist sehr ähnlich:

    mysql:
    SELECT * FROM iobroker.ts_number WHERE ts <= xxxxxxxx;
    
    Zum Löschen alter Daten **(VORSICHT, DATENBANK VORHER UNBEDINGT SICHERN!!)**
    DELETE FROM iobroker.ts_number WHERE ts <= xxxxxxxx;
    
    InfluxDB:
    SELECT * FROM "absolutismus" WHERE time = '2016-07-31T20:07:00Z'
    

    Der IOB sammelt die Daten [Edit Begin] aller Datenpunkte, bei denen die DB-Speicherung aktiviert ist, [Edit end] in der Datenbank-Tabelle "ts_number" und diese wird schnell sehr groß, wenn man im Sekundentakt speichert. Mein Backup zur mysql-DB hat jetzt nach einem Jahr etwa 4 MB.

    Die 2 wichtigsten Tabellen sind:
    MySQL.jpg

    In der Tabelle "datapoints" legt der IOB die Datenpunkte bei denen die DB-Speicherung aktiviert ist, als Referenz zur Tabelle "ts_Number" an:
    MySQL2.jpg

    Und damit kann man die Datenmengen schon gut im Zaum halten ;-) Vielleicht hilft euch das etwas. Fragen generell zu SQL kann ich gern beantworten.

    Gruß, Fuzzy

    Raspberry PI5 mit Linux Debian 13, IoBroker v7.7.19, VIS-2, MariaDB (MySQL)
    Shellies: 1G4, 1MiniG3, PlusI4DC, PlusPlugS, Pro0110PM, ProSmoke. Modbus: Waveshare Relay 8 Channels, Waveshare RS485-TO-ETH.
    PV: 10 kWp Module, 2 x Deye WR SUN-10K, 2 x 10 kWh MeritSun LiFe Speicher, KEBA P30 Wallbox, Fronius Wattpilot home 11

    fuzzy1955F 1 Antwort Letzte Antwort
    0
    • L Offline
      L Offline
      Laser
      schrieb am zuletzt editiert von
      #32

      Das wäre wieder eine neue Baustelle. Die alte habe ich noch nicht im Griff!

      fuzzy1955F 1 Antwort Letzte Antwort
      0
      • L Laser

        Das wäre wieder eine neue Baustelle. Die alte habe ich noch nicht im Griff!

        fuzzy1955F Online
        fuzzy1955F Online
        fuzzy1955
        schrieb am zuletzt editiert von
        #33

        @Laser sagte in Pflege der InfluxDB:

        Das wäre wieder eine neue Baustelle

        Umstellen würde ich auch nicht. Aber wenn die Ähnlichkeiten zwischen InfluxDB und MYSQL sehr ähnlich sind, könntest du das Knowhow von mysql nutzen. Ich werde mal auf meinem Testsystem die InfluxDB ansehen.

        Raspberry PI5 mit Linux Debian 13, IoBroker v7.7.19, VIS-2, MariaDB (MySQL)
        Shellies: 1G4, 1MiniG3, PlusI4DC, PlusPlugS, Pro0110PM, ProSmoke. Modbus: Waveshare Relay 8 Channels, Waveshare RS485-TO-ETH.
        PV: 10 kWp Module, 2 x Deye WR SUN-10K, 2 x 10 kWh MeritSun LiFe Speicher, KEBA P30 Wallbox, Fronius Wattpilot home 11

        1 Antwort Letzte Antwort
        0
        • MartinPM Online
          MartinPM Online
          MartinP
          schrieb am zuletzt editiert von MartinP
          #34

          Ich habe diese Baustelle auch, aber das Anwachsen der Datenbank ist bei mir aufgrund dessen beschränkt, dass mein iobroker bucket in der influx Datenbank eine Retain-Zeit von einem Jahr hat.
          b89de578-52e6-4394-ae1b-9ebd09bece81-image.png
          Wenn man Daten für ein Jahr aufgehäuft hat, und keine neuen Datenreihen hinzugekommen sind, sollte DIESES Bucket nicht mehr größer werden, weil hinten so viele Daten herausfallen, wie vorne neu hinzukommen...

          Hatte mir eigentlich vorgenommen, weitere "Langzeit" Buckets anzulegen, in die gewisse Datenreihen durch Agenten aus dem Jahres-Bucket vor dem Löschen transferiert werden.

          Nach drei Jahren interessiert es nicht mehr wie die Momentan-Leistungsaufnahme am Stromzähler am 15.2.2023 um 16:30 war ... Da will man vielleicht noch wissen, wie viel Strom im Februar 2023 verbraucht worden ist ....

          Bin aber bisher nicht dazu gekommen ...

          Seit Dezember ist meine alte Gasheizung durch eine Wärmepumpe ersetzt, und jetzt wird es eigentlich dringend, man will ja vergleichen, was die Energieverbräuche angeht ... und wenn die Gas-Messreihen langsam weggefressen werden ....

          https://docs.influxdata.com/influxdb/v2/process-data/common-tasks/downsample-data/

          Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
          Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
          Linux pve 6.8.12-16-pve
          6 GByte RAM für den Container
          Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
          Remote-Access über Wireguard der Fritzbox

          1 Antwort Letzte Antwort
          0
          • L Offline
            L Offline
            Laser
            schrieb am zuletzt editiert von
            #35

            Ich habe 2 Jahre eingestellt. Wenn das handelbar ist, reicht mir das. Es sind immer noch viel zu viele Werte zu oft geloggt.

            1 Antwort Letzte Antwort
            0
            • L Offline
              L Offline
              Laser
              schrieb am zuletzt editiert von Laser
              #36

              Fehler12234

              1 Antwort Letzte Antwort
              0
              • fuzzy1955F fuzzy1955

                @Laser sagte in Pflege der InfluxDB:

                Ändern- da habe ich Bedenken, daß Alles auf einmal weg ist

                Hi,

                die InfluxDB kann man doch auch mit SQL-Befehlen bedienen, soweit ich aus der Doku sehe. Ich verwende als langjähriger SQL-Datenbank-Entwickler lieber die mysql, aber die Befehlsstruktur ist sehr ähnlich:

                mysql:
                SELECT * FROM iobroker.ts_number WHERE ts <= xxxxxxxx;
                
                Zum Löschen alter Daten **(VORSICHT, DATENBANK VORHER UNBEDINGT SICHERN!!)**
                DELETE FROM iobroker.ts_number WHERE ts <= xxxxxxxx;
                
                InfluxDB:
                SELECT * FROM "absolutismus" WHERE time = '2016-07-31T20:07:00Z'
                

                Der IOB sammelt die Daten [Edit Begin] aller Datenpunkte, bei denen die DB-Speicherung aktiviert ist, [Edit end] in der Datenbank-Tabelle "ts_number" und diese wird schnell sehr groß, wenn man im Sekundentakt speichert. Mein Backup zur mysql-DB hat jetzt nach einem Jahr etwa 4 MB.

                Die 2 wichtigsten Tabellen sind:
                MySQL.jpg

                In der Tabelle "datapoints" legt der IOB die Datenpunkte bei denen die DB-Speicherung aktiviert ist, als Referenz zur Tabelle "ts_Number" an:
                MySQL2.jpg

                Und damit kann man die Datenmengen schon gut im Zaum halten ;-) Vielleicht hilft euch das etwas. Fragen generell zu SQL kann ich gern beantworten.

                Gruß, Fuzzy

                fuzzy1955F Online
                fuzzy1955F Online
                fuzzy1955
                schrieb am zuletzt editiert von fuzzy1955
                #37

                sagte in Pflege der InfluxDB:

                Und damit kann man die Datenmengen schon gut im Zaum halten

                Weitere Tipps zur Vermeidung der Datenflut:

                Erstellen einer neuen Datenbanktabelle "statistik".
                MySQL3.jpg

                 CREATE TABLE iobroker.statistik(  
                	id INTEGER NOT NULL AUTO_INCREMENT,
                	name TEXT NOT NULL,
                	date DATETIME NOT NULL,
                	val INT NOT NULL,
                PRIMARY KEY (id,date)) ENGINE = InnoDB;
                
                CREATE INDEX IX_statistik01 ON iobroker.statistik(name);
                

                [Edit] Erstellen eines JavaScripts "Jahresabschluss" (läuft nur einmal im Jahr am 2.1.):

                const idStatistikdaten = 'alias.0.Diagrammdaten.Statistikdaten';
                
                let dtHeute = new Date(Date.now());
                let intVJahr = dtHeute.getFullYear() - 1;
                let intVVJahr = dtHeute.getFullYear() - 2;
                let strSQL;
                let IntAnzDS = 0;
                
                function sendToPromise(iSQL) { 
                    return new Promise((resolve, reject) => { 
                        sendTo('sql.0', 'query', iSQL, function (result) {
                            try {
                                IntAnzDS = JSON.stringify(result.result);
                                IntAnzDS = JSON.stringify(result.result);
                                IntAnzDS = IntAnzDS.replace('[{"AnzahlDS":', '');
                                IntAnzDS = Number(IntAnzDS.replace('}]', ''));
                                resolve(IntAnzDS); 
                            } catch {
                                console.error(result.error);
                            }
                        });
                    }); 
                } 
                
                //------------- Prüfen, ob Vorjahresdaten in der Statistik bereits vorhanden sind -> Abbruch --------------------------------
                (async () => { 
                    try {
                        strSQL = "SELECT COUNT(id) as AnzahlDS FROM iobroker.statistik WHERE DATE_FORMAT(date, '%Y') = " + intVJahr + ";";
                        const res = await sendToPromise(strSQL); 
                        //const count = Number(res?.result?.[0]?.AnzahlDS ?? res?.rows?.[0]?.AnzahlDS ?? 0);
                        //console.log('AnzahlDS:'+ IntAnzDS); 
                        await DatenbankAktualisieren(IntAnzDS); 
                    } 
                    catch (err) {
                        console.error('Fehler:', err); 
                    } 
                })();
                
                
                function DatenbankAktualisieren (iCount) {
                
                    if (iCount == 0) {
                
                        //------------- JahresMonatsdaten in die Tabelle iobroker.statistik verdichten --------------------------------
                
                        strSQL = "INSERT INTO iobroker.statistik (id, name, date, val) " +
                            "SELECT id, name, DATE_FORMAT(tsDate, '%Y-%m-01 00:00:00') as Datum, CONVERT(SUM(val), INT) as val " +
                            "FROM iobroker.vw_number " +
                            "WHERE DATE_FORMAT(tsDate, '%Y') = " + intVJahr + " " +
                            "GROUP BY id, name, DATE_FORMAT(tsDate, '%Y-%m') " +
                            "ORDER  BY id, name, DATE_FORMAT(tsDate, '%Y-%m');";
                
                        sendTo('sql.0', 'query', strSQL, function (result) {
                            if (result.error) {
                                console.error(result.error);
                            } else {
                                setState (idStatistikdaten,JSON.stringify(result.result));
                            }
                        });
                
                        //------------- alte JahresMonatsdaten löschen --------------------------------
                
                        strSQL = "DELETE FROM iobroker.ts_number WHERE SUBSTRING(from_unixtime(SUBSTRING(ts, 1, 10)),1,4) = " + intVVJahr + ";";
                        sendTo('sql.0', 'query', strSQL, function (result) {
                            if (result.error) {
                                console.error(result.error);
                            } else {
                                console.log("Die Daten des Jahres " + intVVJahr + " wurden gelöscht.");
                            }
                        });
                
                        console.log("Die Daten von " + intVJahr + " wurden in  die Tabelle statistik verdichtet angefügt (YYYY-MM-01)");
                        
                    } else {
                         console.log("Das Jahr " + intVJahr + " wurde bereits abgeschlossen ");
                    }
                }
                
                

                [Edit] Mit der Tabelle "statistiken" lassen sich nahezu beliebig viele Vorjahre auswerten oder in Diagrammen darstellen. Natürlich kann man die Abfragebedingungen erweitern, so dass nur bestimmte Datenpunkte in die Statistiktabelle laufen (z.B. WHERE id in (1,25,67,123,555 ...).

                Fragen zu SQL-Datenbanken kann ich gern beantworten.

                Gruß, Fuzzy

                Raspberry PI5 mit Linux Debian 13, IoBroker v7.7.19, VIS-2, MariaDB (MySQL)
                Shellies: 1G4, 1MiniG3, PlusI4DC, PlusPlugS, Pro0110PM, ProSmoke. Modbus: Waveshare Relay 8 Channels, Waveshare RS485-TO-ETH.
                PV: 10 kWp Module, 2 x Deye WR SUN-10K, 2 x 10 kWh MeritSun LiFe Speicher, KEBA P30 Wallbox, Fronius Wattpilot home 11

                1 Antwort Letzte Antwort
                0
                • L Offline
                  L Offline
                  Laser
                  schrieb am zuletzt editiert von Laser
                  #38

                  Ich habe jetzt alle unnötig vom Scraper generierten Measurements einzeln gelöscht. Viel Arbeit. Jetzt bin ich bei etwa 9GB Datenbankbackup angelangt. Damit scheint das Backup klar zu kommen.

                  1 Antwort Letzte Antwort
                  0
                  • B Online
                    B Online
                    bloop
                    schrieb am zuletzt editiert von
                    #39

                    Ich habe vor einiger Zeit ein Skript zum Löschen Alter InfuxDB Measurements geschrieben. Dieses kann Datenpunkte die nicht mehr aktualisiert werden recht einfach löschen. Eventuell hilft euch dies weiter. 😜

                    https://forum.iobroker.net/topic/80965/influxdb-alten-datenmüll-löschen

                    1 Antwort Letzte Antwort
                    0
                    • L Offline
                      L Offline
                      Laser
                      schrieb am zuletzt editiert von Laser
                      #40

                      Da müssen aber erst mal die richtigen Measurements im Script stehen. Gelöscht wird nur, wenn der Text absolut übereinstimmt.

                      B 1 Antwort Letzte Antwort
                      0
                      • L Laser

                        Da müssen aber erst mal die richtigen Measurements im Script stehen. Gelöscht wird nur, wenn der Text absolut übereinstimmt.

                        B Online
                        B Online
                        bloop
                        schrieb am zuletzt editiert von
                        #41

                        @Laser
                        Das Skript analysiert deine Datenbank auf Measurements welche älter als x nicht mehr beschrieben wurden. (Kannst du definieren)
                        Und fragt dann welche Measurements gelöscht werden sollen.

                        1 Antwort Letzte Antwort
                        0
                        • L Offline
                          L Offline
                          Laser
                          schrieb am zuletzt editiert von Laser
                          #42

                          Geht das dann schneller als die manuelle Auswahl mit drag und drop in den Editor und dann auf die Konsole kopiert? Das Bereinigen hat bei mir etwa 2h gedauert.

                          B 1 Antwort Letzte Antwort
                          0
                          • L Laser

                            Geht das dann schneller als die manuelle Auswahl mit drag und drop in den Editor und dann auf die Konsole kopiert? Das Bereinigen hat bei mir etwa 2h gedauert.

                            B Online
                            B Online
                            bloop
                            schrieb am zuletzt editiert von
                            #43

                            @Laser
                            Skript pullen, konfigurieren, ausführbar machen, starten. ca. 5min. Das ausführen dauert wenige Sekunden. 🤷‍♂️
                            Ob es sich für dich rentiert musst du selbst einschätzen.

                            1 Antwort Letzte Antwort
                            0
                            • L Offline
                              L Offline
                              Laser
                              schrieb am zuletzt editiert von Laser
                              #44

                              Das glaube ich noch nicht. Ein einzelner Löschbefehl dauerte teilweise Minuten. Teilweise Sekunden.

                              1 Antwort Letzte Antwort
                              0
                              Antworten
                              • In einem neuen Thema antworten
                              Anmelden zum Antworten
                              • Älteste zuerst
                              • Neuste zuerst
                              • Meiste Stimmen


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              398

                              Online

                              32.6k

                              Benutzer

                              82.0k

                              Themen

                              1.3m

                              Beiträge
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Anmelden

                              • Du hast noch kein Konto? Registrieren

                              • Anmelden oder registrieren, um zu suchen
                              • Erster Beitrag
                                Letzter Beitrag
                              0
                              • Home
                              • Aktuell
                              • Tags
                              • Ungelesen 0
                              • Kategorien
                              • Unreplied
                              • Beliebt
                              • GitHub
                              • Docu
                              • Hilfe