ich möchte hier ein kurzes How-To geben für alle, die mit ihrer externen Datenbank auf Influx 3 umsteigen wollen. Ich habe das gerade erfolgreich gemacht. Der Vorteil - dadurch das Influx 3 mit InfluxQl kompatibel ist, muss weder an der Solaranzeige noch in Grafana groß was geändert werden.
Ich nutze hierfür Influxdb 3.9.2 - Enterprise - mit Home Licence. Da müst ihr euch keine Gedanken machen was Kosten angeht und es ist immer noch schneller und platzsparender als Influx 1.
So bin ich vorgegangen:
Zunächst habe ich mit Docker einen schnellen Container für Influx 3.9 gemacht und gestartet um die Lizenz zu holen - dies hat bei mir mit Portainer nicht funktioniert - vor allem da ich das über ein NAS und Synology mache. Hier muss man kurz starten und dann auswählen, ob man eine Trial Lizenz nutzen möchte oder die Home-Version. Diese ist von der Leistung beschnitten, aber man hat eine Lifetime Lizenz. Die Lizenz kann man sich dann aus dem Influx Odner den man gemountet hat einfach raus kopieren und am besten auch den Schlüssel sichern.
Anschließend habe ich das ganze als Stack bei Portainer erstellt, weil es einfacher in Zukunft ist.
Code: Alles auswählen
services:
influxdb3-enterprise:
image: influxdb:3.9.2-enterprise
ports:
- 8181:8181
command:
- influxdb3
- serve
- --node-id=node0
- --cluster-id=cluster0
- --object-store=file
- --data-dir=/var/lib/influxdb3/data
- --plugin-dir=/var/lib/influxdb3/plugins # Optional: only needed for processing engine plugins
environment:
- INFLUXDB3_ENTERPRISE_LICENSE_TYPE=home
- INFLUXDB3_ENTERPRISE_LICENSE_EMAIL=deine@email
networks:
macvlan:
ipv4_address: 192.168.xxx.xxx
volumes:
- type: bind
# Path to store data on your host system
source: /xxx/docker/influxdb3/data
# Path to store data in the container
target: /var/lib/influxdb3/data
- type: bind
# Path to store plugins on your host system
source: /xxx/docker/influxdb3/plugins
# Path to store plugins in the container
target: /var/lib/influxdb3/plugins
networks:
macvlan:
external: trueCode: Alles auswählen
influxdb3 create token --adminDann sollte Influx schon laufen wenn alles passt. Bei der Solaranzeige und Grafana müsst ihr dann die Datenquelle nur auf die IP+Port der Influx 3 ändern - oder neu erstellen - und bei Username und Passwort eure Token Daten angeben. Das wird in der Regel admin und das Token sein. Aber ihr könnt natürlich auch andere Token erstellen.
Datenübertragung:
Bisher hatte mich der Datenverlust davon abgehalten, aber letztes Wochenende habe ich mich dran gesetzt und tatsächlich alle Daten aus der Influx 1.x in die neue DB übertragen. Hier kann euch KI gut helfen!
Kleine Vorbemerkung - da ich Linux nutze, beschreibe ich wie ich es mit Linux gemacht habe. Wenn ihr Windows nutzt könnt ihr KI zum adapten nutzen.
So bin ich vorgegangen:
1. Daten aus Influx 1 exportieren:
Im Container:
influx_inspect export \
-datadir "/var/lib/influxdb/data" \
-waldir "/var/lib/influxdb/wal" \
-out "/var/lib/influxdb/data/EureDatenbank_export.lp" \
-database "EureDatenbank"
Influx erstellt nun eine Datei in eurem Influxdb/data Ordner die EureDatenbank_export.lp ist. Dies habe ich für jede meiner 5 Datenbanken gemacht. Die Dateien waren natürlich mit ein paar GB inzwischen riesig.
2. Daten vorbereiten:
Für eine einzelne Datei sähe die Übertragung dann so aus:
Code: Alles auswählen
curl --request POST "http://192.168.xxx.xxx:8181/api/v2/write?bucket=EureDatenbank&precision=ns" \
--header "Authorization: Token EUER_TOKEN" \
--data-binary @EureDatenbank_export.lpDann habe ich die Exporte aufgeteilt - hier habe ich einfach den Influx Ordner auf dem NAS in Linux gemountet und dann per Rechtklick "in Terminal öffnen" ausgewählt und dann folgende Befehle verwendet:
Code: Alles auswählen
split -l 20000 EureDatenbank_export.lp EureDatenbank_chunk_Dann müsst ihr noch beachten, dass beim export die erste Zeile nicht nur zahlen sind sondern auch für Influx3 unleserliche Werte, daher würde Influx die erste Datei nicht importieren sondern einen Fehler melden. Daher habe ich das aus der ersten Datei jeweils bereinigen müssen:
Code: Alles auswählen
grep -v '^#' EureDatenbank_chunk_aa.lp | grep -v '^CREATE' | grep -v '^$' > EureDatenbank_chunk_aa.lp3. Nun ist alles bereit für den Import:
Code: Alles auswählen
for file in EureDatenbank_chunk_*; do
echo "Sende Datei: $file ..."
curl --request POST "http://192.168.xxx.xxx:8181/api/v2/write?bucket=EureDatenbank&precision=ns" \
--header "Authorization: Token EUER_TOKEN" \
--data-binary @"$file"
sleep 10
doneDas positive: Falls was schiefgeht, könnt ihr einfach nochmal importieren - Influx 3 speichert keine Daten doppelt ab.
Falls ihr beim Export zeitlich begrenzt etwas exportieren wollt aus der Influx1:
Code: Alles auswählen
influx_inspect export \
-datadir "/var/lib/influxdb/data" \
-waldir "/var/lib/influxdb/wal" \
-out "/var/lib/influxdb/data/EureDatenbank.lp" \
-database "EureDatenbank" \
-start "2023-12-01T22:00:00Z" \
-end "2023-12-31T21:59:59Z"