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 Offline
    L Offline
    Laser
    schrieb am zuletzt editiert von
    #29

    OK. Das ist richtig. Über backitup bin ich nur drauf gekommen, weil die Datenbank so riesig war und backitup streikte. Wo ist es denn jetzt?

    HomoranH 1 Antwort Letzte Antwort
    0
    • L Laser

      OK. Das ist richtig. Über backitup bin ich nur drauf gekommen, weil die Datenbank so riesig war und backitup streikte. Wo ist es denn jetzt?

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #30

      @Laser sagte in Pflege der InfluxDB:

      Wo ist es denn jetzt?

      hier

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      1
      • 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

                                  397

                                  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