NEWS
Proxmox / Influxdb V1 zu V2... wie?
-
@sborg sagte in Proxmox / Influxdb V1 zu V2... wie?:
wenn du mit einer InfluxDB arbeitest.
hab gerade InfluxDB V2 installiert.
also auch Zweigleisig.Dann mach in ioB eine 2. Influx-Instanz, die ich für V2 verwende. Und dann zieh ich um?
Beide Instanzen trotzdem derweil stoppen? -
@negalein sagte in Proxmox / Influxdb V1 zu V2... wie?:
Und dann zieh ich um?
Damit würde ich aktuell noch warten, außer du willst Skript und Statistik von Hand ändern. Die können ja mit Influx V2 so noch nichts anfangen. Du kannst aber bedenkenlos beide parallel laufen lassen. Es macht auch überhaupt nichts aus wenn du Werte von der V1 in die V2 umziehst die dort schon existieren. Da sie den selben Zeitstempel haben werden sie einfach mit dem selben Inhalt überschrieben.
Oder du ziehst halt um, belässt Wetter so in der V1 und loggst das aber jetzt schon in die V2. Dann stellst du noch die restlichen Werte was du sonst noch loggst auf die V2 um. Kommt dann meine V3 brauchst du nur in der *.conf den Influx-Zugang ändern und kannst die V1 abschalten.
Anhalten brauchst du nichts. Das kann alles im laufenden Betrieb geschehen. Wenn du direkt beides loggst verlierst du nicht mal paar Datensätze (siehe paar Zeilen weiter oben). -
@sborg sagte in Proxmox / Influxdb V1 zu V2... wie?:
Oder du ziehst halt um, belässt Wetter so in der V1 und loggst das aber jetzt schon in die V2. Dann stellst du noch die restlichen Werte was du sonst noch loggst auf die V2 um. Kommt dann meine V3 brauchst du nur in der *.conf den Influx-Zugang ändern und kannst die V1 abschalten.
so werde ich es machen.
Steh aber gerade komplett an.
Influx 1 ist auf Host A
Influx 2 ist auf Host BDiese Anleitung ist für ein Upgrade auf 1 Host.
Ich finde nichts, wie ich die Daten von A nach B bringe und sie dann in Influx 2 übernommen werden.
-
@sborg said in Proxmox / Influxdb V1 zu V2... wie?:
Bevor ich dann wieder die Syntax selbst vergesse, man kann auch den Zeitraum bei der Abfrage eingrenzen. ZB. auf die letzten 7 Tage 'SELECT * FROM "javascript.0.Wetterstation.Aussentemperatur" WHERE time>=now()-7d'
Man kann also ohne Datenverlust umziehen oder migrieren (was ich wg. ev. Altlasten bei mir nicht tun werde = tabula rasa)@sborg Mit welchen Flags hast du exportiert?
ich habe mal testweise den schon genannten
influx -username dbuser -password xxyyzz123 -database iobroker -host localhost -execute 'SELECT * FROM "0_userdata.0.Wetterstation.Aussentemperatur"' -format csv -precision='rfc3339'> ./temperatur.csv
benutzt
und musste dann wegen Fehlermeldung bei importieren über das WebIF, den Umweg über die Console machen, wo ich die Spalten definieren musste, weil er mit dem Export-Headername,time,ack,from,q,value
nix anfangen konnte
influx write -b iobroker -f ./temperatur.csv --skipHeader=1 --header="name|measurement,time|dateTime:RFC3339,ack|boolean,from|string,q|double,value|double"
Ist auch für dich @Negalein
Auf Console Host 1 exportieren:influx -username dbuser -password xxyyzz123 -database iobroker -host localhost -execute 'SELECT * FROM "0_userdata.0.Wetterstation.Aussentemperatur"' -format csv -precision='rfc3339'> ./temperatur.csv
File von Host 1auf Host 2
Dann importieren:
influx write -b iobroker -f ./temperatur.csv --skipHeader=1 --header="name|measurement,time|dateTime:RFC3339,ack|boolean,from|string,q|double,value|double"
(Hier für die Aussentemperatur)
Aber er meckerte bei mir rum, weil er die Spalten
name,time,ack,from,q,value 0_userdata.0.Wetterstation.Aussentemperatur,2022-01-31T00:00:29.043Z,false,system.adapter.simple-api.0,0,-1.88
nicht richtig erkennt (er kann mit name nix anfangen), deswegen den Zusatz
--header="name|measurement,time|dateTime:RFC3339,ack|boolean,from|string,q|double,value|double"
um zu definieren, was was in welchem Format (z.B. ack|bool) ist.
-
Ich bin ja bekennender "Faullist"
Auf Quellhost im Verzeichnis stehend was auch der Zielhost lesen kann:
- Datei export.csv mit folgendem Inhalt angelegt
#datatype measurement,dateTime:RFC3339,boolean,string,double,double
- danach jeweils ausgeführt [xxx] jeweils passend ersetzt; ohne die []:
influx -database [DB-Name] -username [name] -password [passwort] -execute 'SELECT * FROM "javascript.0.Wetterstation.Aussentemperatur"' -format csv -precision='rfc3339' >> export.csv influx -database [DB-Name] -username [name] -password [passwort] -execute 'SELECT * FROM "javascript.0.Wetterstation.Wind_max"' -format csv -precision='rfc3339' >> export.csv influx -database [DB-Name] -username [name] -password [passwort] -execute 'SELECT * FROM "javascript.0.Wetterstation.Regen_Tag"' -format csv -precision='rfc3339' >> export.csv
Ergebnis für 4 Jahre Daten: ca. 200MB - Datei
Dauer bis hierhin < 1 Minute
Zielhost, im Verzeichnis stehend wo der Export statt fand
influx write -b [bucketname] -f export.csv
Das hat nun etwa 3-4 Minuten gedauert und 3 Fehlerhafte Datensätze zu Tage gebracht --> Fertig
- Datei export.csv mit folgendem Inhalt angelegt
-
@sborg said in Proxmox / Influxdb V1 zu V2... wie?:
Ich bin ja bekennender "Faullist"
warum nutzt du dann
SELECT FROM <measurement_name>,<measurement_name>
nicht ? -
https://joshuamarvel.com/upgrade-influxdb-1-8-to-2-x-on-ubuntu-20-04/
Wer traut sich drüber?
Das müsste doch auch funktionieren, wenn man die Influx in einem Container laufen hat, oder? -
@massiveattack sagte in Proxmox / Influxdb V1 zu V2... wie?:
https://joshuamarvel.com/upgrade-influxdb-1-8-to-2-x-on-ubuntu-20-04/
Wer traut sich drüber?
Das müsste doch auch funktionieren, wenn man die Influx in einem Container laufen hat, oder?Teste ich die Tage mal.
Vorher Backup vom Container und es kann nichts passieren….. theoretisch
-
@massiveattack
Geht aber nicht, wenn influxv1 auf host1 und auf host2 die influxv2 läuft -
@sborg said in Proxmox / Influxdb V1 zu V2... wie?:
Das hat nun etwa 3-4 Minuten gedauert und 3 Fehlerhafte Datensätze zu Tage gebracht --> Fertig
Die Fehler kommen wahrscheinlich davon, dass er wenn du einen neuen Datensatz anhängst, er wieder den
name,time,ack,from,q,value
als Header reinschiebt.Kann man mit einem eingeschobenen "| grep javascript.0" hier z.B. ausfiltern
influx -database [DB-Name] -username [name] -password [passwort] -execute 'SELECT * FROM "javascript.0.Wetterstation.Aussentemperatur"' -format csv -precision='rfc3339' | grep javascript.0 >> export.csv
Als Hinweis für alle:
Wenn ihr die influx auf tls/https laufen lasst, dann muss zum influx-write
--host https://localhost:8086 --skip-verify
hinzugefügt werden (der skip nur wenn das Zertifikat selbstsigniert ist). Port natürlich anpassen... Wichtig isthttps
sonst wird nur
data: read tcp 127.0.0.1:47644->127.0.0.1:8086: read: connection reset by peer
gemeldet! -
@boronsbruder sagte in Proxmox / Influxdb V1 zu V2... wie?:
@massiveattack
Geht aber nicht, wenn influxv1 auf host1 und auf host2 die influxv2 läuftLogisch
Wenn das upgrade aber so relativ easy durchgeht, kann ich gut damit leben -
@boronsbruder sagte in Proxmox / Influxdb V1 zu V2... wie?:
@sborg said in Proxmox / Influxdb V1 zu V2... wie?:
Ich bin ja bekennender "Faullist"
warum nutzt du dann
SELECT FROM <measurement_name>,<measurement_name>
nicht ?Ich komme noch aus der 16kb RAM Hauptspeicher und Diskettenära, da mussten die meisten Operationen mangels Speicher aufgeteilt werden. Das hat sich bis heute teilweise gehalten, obwohl es dank schneller Hardware und massig RAM nicht mehr nötig ist. Aber dank Linux einmal "Cursor hoch" + Wind_max/Regen_Tag müsste ich sowieso immer eintippen
@boronsbruder sagte in Proxmox / Influxdb V1 zu V2... wie?:
Kann man mit einem eingeschobenen "| grep javascript.0" hier z.B. ausfiltern
Guter Ansatz, funktioniert so aber auch nicht, außer du lässt es beim 1. Aufruf weg. Einmal wollen/müssen wir es ja haben
Die "Killervariante" für die Doku (Danke für den https-Hinweis, nehme ich dann mit auf):
echo '#datatype measurement,dateTime:RFC3339,boolean,string,double,double' > export.csv && influx -database [DB-name] -username [username] -password [passwort] -execute 'SELECT * FROM "javascript.0.Wetterstation.Aussentemperatur","javascript.0.Wetterstation.Regen_Tag","javascript.0.Wetterstation.Wind_max"' -format csv -precision='rfc3339' >> export.csv
-
ich steh komplett an.
Check es nicht, wie ich die Daten 1:1 von Host A nach Host B bekomme.
Und sie dann in Influx 2 einspiele! -
- auf Host 1:
Exportieren: hier z.B die Datenpunkte
- javascript.0.Wetterstation.Aussentemperatur
- javascript.0.Wetterstation.Regen_Tag
- javascript.0.Wetterstation.Wind_max
Mit folgendem Kommando
echo '#datatype measurement,dateTime:RFC3339,boolean,string,double,double' > export.csv && influx -database [DB-name] -username [username] -password [passwort] -execute 'SELECT * FROM "javascript.0.Wetterstation.Aussentemperatur","javascript.0.Wetterstation.Regen_Tag","javascript.0.Wetterstation.Wind_max"' -format csv -precision='rfc3339' >> export.csv
- Die export.csv rüber auf Host2 kopieren
- Auf Host 2 mit
influx write -b [DATENBANKNAME] -f ./export.csv
(Datenbank ist in v2 = bucket) importieren
- auf Host 1:
-
@sborg said in Proxmox / Influxdb V1 zu V2... wie?:
Guter Ansatz, funktioniert so aber auch nicht, außer du lässt es beim 1. Aufruf weg. Einmal wollen/müssen wir es ja haben
@Sborg
Nein. wollen wir nicht, da wir die export.csv mit dem Header vorbereitenOhne grep:
#datatype measurement,dateTime:RFC3339,boolean,string,double,double name,time,ack,from,q,value 0_userdata.0.Wetterstation.DP100.1.Bodenfeuchtigkeit,2022-12-31T12:11:44.427Z,true,system.adapter.simple-api.0,0,15
Also, bei mir halt...
-
@boronsbruder da gehts ja nicht nur um die wetterstation, sondern um alle.
hab auch gerade getestet mit influxdb-studio. kann mich damit nicht einloggen.
einen seltsamen alias eintrag in der DB (bucket), den ich nie angelegt habe. erst heute in der früh influx2 installiert.
-
@boronsbruder So wäre es ja auch richtig. Wenn du aber den grep bei allen drei Aufrufen tätigst, wird es Zeile #2 nie geben
Zeile #1 erzeugen wir ja per Hand, #3 + folgende dann der Export-Befehl.
Aufruf #1 müsste also ohne grep erfolgen, #2 und #3 dann mit.
-
@boronsbruder sagte in Proxmox / Influxdb V1 zu V2... wie?:
Exportieren: hier z.B die Datenpunkte
Danke
Also für jeden DP eine eigene .csv?Das ist ja eine Arbeit für mehrere Tage.
Gibt es keine Möglichkeit, die komplette DB zu exportieren und in V2 wieder zu importieren? -
@negalein Sollte das nicht hiermit einfacher gehen:
https://docs.influxdata.com/influxdb/v2.6/upgrade/v1-to-v2/manual-upgrade/#migrate-time-series-data
-
@sborg
ja, die brauchen wir ja auch nicht, da wir ihm
ja mit dem Header mitgeben, dass der- 1.Wert das meassurement
- der 2.Wert, die Zeit ist,
- usw.
Die Zeilen bestehen immer aus der gleichen Anzahl von komma-getrennten Werten