Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Frage : Migrate MySQL nach Influxdb

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Frage : Migrate MySQL nach Influxdb

    This topic has been deleted. Only users with topic management privileges can see it.
    • Dutchman
      Dutchman Developer Most Active Administrators last edited by

      Hi,

      Ich habe mir vorgenommen meine Daten von MySQL nach influx DB zu migrieren.

      Hat jemand hier bereits Erfahrung mit und eventuell schon gemacht?.

      Hintergrund ist das influxdb mir eine effizientere Möglichkeit bietet meine Daten zu loggen

      Cheers,

      Dutch

      –-----------------------

      Send from mobile device

      Das schöne ios hat Auto Korrektur zum k****

      Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

      1 Reply Last reply Reply Quote 0
      • apollon77
        apollon77 last edited by

        @Dutchman:

        Hi,

        Ich habe mir vorgenommen meine Daten von MySQL nach influx DB zu migrieren.

        Hat jemand hier bereits Erfahrung mit und eventuell schon gemacht?.

        Hintergrund ist das influxdb mir eine effizientere Möglichkeit bietet meine Daten zu loggen `

        Schau mal unter https://docs.influxdata.com/influxdb/v1 … _download/

        Du musst deine Daten aus der MySQL holen und in dem „line format” speichern. Kleines Skript oder so.

        1 Reply Last reply Reply Quote 0
        • Holger76
          Holger76 last edited by

          Hallo,

          ich will nicht extra einen Thread aufmachen, betrifft aber auch influxDB, dehalb hänge ich mich hier mal dran:

          Nachdem ich nun Proxmox installiert habe, wollte ich die Möglichkeiten mal nutzen und eine separate VM mit InfluxDB erstellt. Ziel war es, ein paar hübchere Grafiken bzw Diagramme zu bekommen (über Granafa). Nachdem ich Granafa installiert habe, habe ich gesehen, dass man das ja auch mit MySQL nutzen kann ? Aber wohl auch nur mit selbst erstellten Server und nicht über den ioB Adapter ?

          Was gibts sonst für Vorteile von InfluxDB gegenüber MySQL. Leider hat die Installation nicht richtig funktioniert (hatte das auf einen Debian9 VM aufgesetzt und eigentlich nach Anleitung installiert). Nun kann ich aber nicht auf den Server zugreifen, irgendwie habe ich das wohl noch nicht korrekt konfiguriert. Was müsste ich denn wohl anpassen, wenn ich so alles Standard gelassen habe, Pfad zb ?

          Wenn ich den influx dienst Starte, kommt keine Meldung, denke also das ist so ok.

          Wenn ich influxd als commando starte, kommt eine Meldung mit permission denied.. also das ganze mit Sudo, da kommt folgender Screen (ohne anschließende Eingabezeile, nur abzubrechen mit STRG+C:
          1566_unbenannt.jpg

          Auf den Server xxx.xxxx.xxxx.xxxx:8086 kann ich dann auch nicht zugreifen, da kommt "404 page not found"

          Fragen über Fragen… leider habe ich bisher nicht viel darüber gefunden

          Danke schon mal und Gruß, Holger

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            Mit dem erreichen, influxdb hat keinen Webserver also nein den Port kannst du im Browser nicht aufrufen nur Daten hinschicken (zB mit dem influxdb Adapter)

            Desweiteren ist halt mysql und influxdb DB eine andere Art Datenbank.

            Influxdb wurde entwickelt um "time best value" optimal mit höhster Effizienz zu speichern MySQL hingegen ist algemein entwickelt als Datenbank.

            Meine Erfahrungen mit influxdb DB und der Grund das ich dabei geblieben bin:

            • effizienter

            • schneller

            • automatisch Werte in Grafiken auf Zeit bis zum Ende ziehen (Wert des letzten Eintrags), das kan MySQL nicht

            Sent from my iPhone using Tapatalk

            1 Reply Last reply Reply Quote 0
            • apollon77
              apollon77 last edited by

              Web Admin bei influxdb auf Port 8086 gibt es nicht mehr.

              Am Ende ist das ein Service und den musst du als Service starten und nicht Manuell. systemctl enable/start influxdb

              Ggf hast du mit dem sudo start rechte kaputt gemacht. Eigentlich läuft das unter User influxdb. Schau mal in /var/lib/influxdb. Und am besten nochmal alles löschen was da drin ist falls irgendwas root gehört.

              Gesendet vom Handy …

              1 Reply Last reply Reply Quote 0
              • Holger76
                Holger76 last edited by

                ich bekomme ja nicht mal einen user angelegt:

                influx -username iobroker -password xxxxxx

                Failed to connect to http://localhost:8086: Get http://localhost:8086/ping: dial tcp [::1]:8086: getsockopt: connection refused

                muss ich das "localhost" in der config abändern wegen der VM, denke aber nicht… ich finde unter http auch nichts, nur den PORT

                Installiert habe ich eigentlich alles unter dem USER, was nicht ohne sudo ging, halt mit sudo

                edit: vielleicht hilft es:

                hb@influxDB:~$ systemctl status influxdb

                ● influxdb.service - InfluxDB is an open-source, distributed, time series database

                Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)

                Active: failed (Result: exit-code) since Thu 2018-10-11 22:43:28 CEST; 7min ago

                Docs: https://docs.influxdata.com/influxdb/

                Process: 1793 ExecStart=/usr/bin/influxd -config /etc/influxdb/influxdb.conf $INFLUXD_OPTS (code=exited, status=1/FAILURE)

                Main PID: 1793 (code=exited, status=1/FAILURE)

                muss der user wirklich influxdb heißen ? ich habe meine initialien benutzt… ggf ein grund

                1 Reply Last reply Reply Quote 0
                • apollon77
                  apollon77 last edited by

                  Nochmal: Der Port 8086 ist eine HTTP API und keine Webseite! Aber wenn Du gar keine Verbindung bekommst ist es komisch. Läuft denn ein influxd prozess(ps auwxx|grep influx) ?

                  ANsonsten frage ich mal frech: https://docs.influxdata.com/influxdb/v1 … tallation/ hast Du gelesen und abgearbeitet?

                  1 Reply Last reply Reply Quote 0
                  • Holger76
                    Holger76 last edited by

                    Danke nochmal für die Tipps…

                    hab alles nochmal frisch aufgesetzt und genau nach der offizuellen Anleitung gearbeitet. Muss irgendwo ein tippfehler oder so drin gewesen sein und wenn man dann nach weiteren Anleitungen im Netz sucht, findet man jede Menge alten Müll und macht alles schlimmer.

                    Nun läuft zumindest influx auch mit neuem User usw.

                    Nun mach ich mich mal an Grafana... das Telegraf ist nicht notwendig oder ?

                    1 Reply Last reply Reply Quote 0
                    • Dutchman
                      Dutchman Developer Most Active Administrators last edited by

                      Telegraf nope

                      Sent from my iPhone using Tapatalk

                      1 Reply Last reply Reply Quote 0
                      • J
                        JensA last edited by

                        Hallo Dutchman,

                        hast du die Daten von MySQL nach Influxdb emigriert bekommen. Wie sieht dein Skript dazu aus?

                        Viele Grüße

                        Jens

                        1 Reply Last reply Reply Quote 0
                        • Dutchman
                          Dutchman Developer Most Active Administrators last edited by

                          Hi Jens,

                          Ja aber ohne Script.

                          SQL Daten exportiert nach Commando seperaten, dabei muss man 2 Tabellen kombinieren um den object Namen zu bekommen.

                          Dan per CSV Import eingespeist in influxdb per Command line

                          Sent from my iPhone using Tapatalk

                          E 1 Reply Last reply Reply Quote 0
                          • J
                            JensA last edited by

                            Hallo Dutchman,

                            danke für die schnelle Antwort!

                            Davon habe ich leider keine Ahnung. Werde dann wohl doch erstmal bei MySQL und Flot bleiben (statt wie angedacht zu influxdb und Grafana zu wechseln).

                            1 Reply Last reply Reply Quote 0
                            • E
                              ehome @Dutchman last edited by

                              @Dutchman
                              könntets du vielleicht den export/import etwas genauer erklären ?

                              Dutchman 1 Reply Last reply Reply Quote 0
                              • Dutchman
                                Dutchman Developer Most Active Administrators @ehome last edited by

                                @ehome sagte in Frage : Migrate MySQL nach Influxdb:

                                @Dutchman
                                könntets du vielleicht den export/import etwas genauer erklären ?

                                influxdb kan man einen import machen mit CSV, die Schwierigkeit : SQL arbeitet mit Tabellen, InfluxDB mit measurements.

                                Du musst also aus den SQL Tabellen die werte extrahieren, in measurements separieren, die richtigen Datensätze zusammenbringen (dabei den timestamp umrechnen) und dan importieren in influxdb.

                                @arteck hattest du nicht etwas dafür oder letztendlich auch gelassen ?

                                Dutch

                                arteck E 2 Replies Last reply Reply Quote 0
                                • arteck
                                  arteck Developer Most Active @Dutchman last edited by

                                  @Dutchman ne ich habs gelassen... war mir nicht wert die Zeit da zu inverstieren..

                                  1 Reply Last reply Reply Quote 0
                                  • E
                                    ehome @Dutchman last edited by

                                    @Dutchman
                                    ah, ok - jetzt habe ich es verstanden.
                                    Hier mal ein Beispiel für die mysql Abfrage:

                                    SELECT 
                                    	(ts_number.ts*1000000)       as 'time',
                                        ts_number.ack    as 'ack',
                                        datapoints.name as 'from',
                                        ts_number.q        as 'q',
                                        ts_number.val     as 'val'
                                    from ts_number 
                                    left join datapoints
                                    on ts_number.id=datapoints.id
                                    where datapoints.name="wrapper.0.Temperatur.temp_ab" order by ts_number.ts desc limit 10;
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • G
                                      gender last edited by gender

                                      Da ich auch vor dem Problem stand, die SQL-Daten in Influxdb zu importieren, möchte ich hier einmal meinen Workarround darstellen (da ich doch einen ganzen Nachmittag rumprobieren musste, bis es endlich geklappt hat).

                                      1. SQL Daten für CSV-Datei-Export abfragen:

                                      SELECT 
                                      (ts_string.ts*1000000)       as 'time',
                                      ts_string.ack    as 'ack',
                                      datapoints.name as 'from',
                                      ts_string.q        as 'q',
                                      ts_string.val     as 'value'
                                      from ts_string 
                                      left join datapoints
                                      on ts_string.id=datapoints.id
                                      where datapoints.name="mqtt.0.Stromzaehler_Gesamt" AND q=0
                                      

                                      Danke an @ehome

                                      2. Ergebnis als "Delimted Text" und mit Feldbegrenzer , exportieren (habe ich mit HeidiSQL gemacht, geht sicher auch mit anderen Programmen)

                                      3. Mithilfe von Python bzw. dem Script "csv_to_line.py" die CSV-Datei nach InfluxDB-CommandLine-Vorgabe in eine txt-Datei importieren.
                                      Also python csv_to_line.py
                                      (kann dauern: Ich habe 2 Millionen Einträge gewandelt - hat ca. 10 Minuten gedauert).

                                      Hier das Python-Script: csv_to_line.py
                                      (hierfür muss pandas in Python installiert sein!!!). In der Datei muss der "Measurement"-Bezeichner sowie der Name eurer CSV-Datei angepasst werden.
                                      Außerdem habe ich das "ack"-Value fest auf true gesetzt. In der SQL-Datenbank ist das eigentlich 1. Problem ist jedoch, dass Influx diese Spalte dann beim Importieren nicht als Boolean ansieht... der Influx-Adapter in Iobroker dieses Field aber nicht als 1 sondern als True einträgt und man sonst keine weiteren Daten über IoBroker in die Datenbank schreiben kann. Das wäre natürlich ungünstig.

                                      4. Unbedingt darauf achten, dass die Textdatei im Unix (LF) - Format ist (ggf. mit bspw. NotePad ändern)

                                      5. In den Kopf der Txt-Datei

                                      # DDL
                                      CREATE DATABASE NameDatabase
                                      
                                      # DML
                                      # CONTEXT-DATABASE: NameDatabase
                                      

                                      schreiben.
                                      Der obere Teil kann weggelassen werden, falls die Daten in eine vorhandene Datenbank importiert werden sollen.

                                      6. In der Console mit dem Befehl

                                      influx -import -path=import.txt
                                      

                                      die Import-Datei importieren.

                                      Wenn alles klappt, zeigt er alle 100000 Einträge eine Erfolgsmeldung an.

                                      Ich weiß nicht, ob es auch einfacher geht (da die anderen das hier nur knapp beschrieben haben), aber so geht es in jedem Fall, wenn auch viele Schritte nötig sind.

                                      S 1 Reply Last reply Reply Quote 0
                                      • S
                                        schittl @gender last edited by schittl

                                        @gender Danke für diese näheren Info's.... Wenn ich deinen Select ausführe über alle Datenpunkte komme ich so auf ca. 800000 Datensätze, davon werden aber nach Aufbereitung nur 400000 importiert... Sollte man das staffeln oder an was kann das liegen? Umlaute o.ä?

                                        2019/12/31 00:29:10 Processed 0 commands
                                        2019/12/31 00:29:10 Processed 425000 inserts
                                        2019/12/31 00:29:10 Failed 428620 inserts
                                        ERROR: 428620 points were not inserted
                                        

                                        Bei 1000000 Datensätze werden immer nur wie folgt importiert. Gibt es einen Parameter um die Batchsize zu umgehen oder welcher anderer Ansatz würde funktionieren? Telegraf?

                                        2019/12/31 15:26:46 Processed 1000000 lines.  Time elapsed: 10.569888124s.  Points per second (PPS): 94608
                                        2019/12/31 15:26:46 Processed 0 commands
                                        2019/12/31 15:26:46 Processed 360000 inserts
                                        2019/12/31 15:26:46 Failed 640000 inserts
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • G
                                          gender last edited by

                                          Also ich habe wie beschrieben ca. 2 Millionen Datensätze in einem Rutsch importieren können. Da gab es keine Fehlermeldung... und alle Hunderttausend Datensätze immer eine Konsolenausgabe. Hat ca. 2 1/2 Minuten gedauert.
                                          Ob es an Umlauten liegt, kann ich dir nicht sagen. Ich hatte auf jeden Fall keine in meinen Datensätzen drin.

                                          Kriegst du in der Konsole keine Fehlermeldung für einzelne Datensätze? Das war bei mir jedenfalls so, sodass ich genauer gucken konnte, wenn er etwas nicht importiert hat.

                                          S 1 Reply Last reply Reply Quote 0
                                          • S
                                            schittl @gender last edited by schittl

                                            @gender In der ini von influx bzw. von der Doku dazu hatte ich nur was gelesen das man die Files splitten sollte bei 10000. Vielleicht liegt es auch an der neuen Version 1.7

                                            siehe hier

                                            „If your data file has more than 5,000 points, it may be necessary to split that file into several files in order to write your data in batches to InfluxDB. We recommend writing points in batches of 5,000 to 10,000 points. Smaller batches, and more HTTP requests, will result in sub-optimal performance. By default, the HTTP request times out after five seconds. InfluxDB will still attempt to write the points after that time out but there will be no confirmation that they were successfully written.“

                                            Fehlermeldung ist folgende:

                                            2020/01/01 17:00:44 error writing batch:  {"error":"partial write: points beyond retention policy dropped=5000"}
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            648
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            31
                                            151
                                            18242
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo