NEWS
Influxdb: löschen von Duplikaten
-
Hi!
Ich hatte eine einmonatige Aufzeichnungslücke in meiner Influxdb, die jedoch von einen anderem System geloggt wurde. D.h. die Werte waren in einer anderen Influxdb vorhanden.
D.h. in meinem Fall habe ich zwei Datenbanken:
Influxdb-1: Alle Werte außer 17.05. bis 31.05.influxdb-2: Alle Werte bis 31.05.
Ich möchte nun aus influxdb-2 alle werte zwischen 17.05 und 31.05 in die influxdb-1 bekommen, damit diese wieder komplett ist.
Jetzt habe ich ein Restore gemacht nach dieser Anleitung.
https://docs.influxdata.com/influxdb/v1.7/administration/backup_and_restore/D.h. ich habe zunächst aus dem Backup der influxdb-2 per
influxd restore -portable -db iobroker -newdb iobroker_bak /home/pi/backup
alles in eine neue Datenbank "iobroker_bak" eingelesen.
Dann per Select..Into alles in die alte Iobroker aus der influxdb-1 kopiert.
Jetzt ist diese doppelt so groß, wahrscheinlich alles voller Duplikate.
Frage: Kann man diese wieder löschen, oder wie hätte ich einen einzelnen Zeitbereich zurücklesen können?
Wäre eine Lösung, zunächt nur den gewünschten Zeitbereich aus der zweiten Datenbank selektiv zu "backupen", um dann beim Restore (bei dem keine Zeitangabe möglich ist) nur diesen Ausschnitt zurückzubekommen?
Danke für Hinweise!
-
@runningthewutz sagte in Influxdb: löschen von Duplikaten:
Danke für Hinweise!
Moin,
Du solltest uns erst einmal sagen, welche
influxDB
Du einsetzt?influxDB V2.x
influxDB V1.8
Dann kommt es darauf an, wie in den einzelnen
influxDB
Datenbanken/Buckets die Daten gespeichert wurden, also wie ein kompletter Datensatz aussieht und/oder aus welchen Elementen https://docs.influxdata.com/influxdb/v2.7/reference/key-concepts/data-elements/.
Da Du gesagt hast, dass zwei unterschiedliche Systeme die Daten erfasst haben, können diese Datensätze ja auch unterschiedlich aussehen.Wenn die Datensätze vom Format gleich sind, interpretiert
influxDB
Datensätze mit gleichem Timestamp als Update und nicht als neuen Datensatz.
Wenn wie Du sagst, die Datenbank/Buckt jetzt viel größer ist, dann sind da noch andere Daten enthalten oder die Daten haben wie gesagt ein anderes Format und wurden zusätzlich hineingeschrieben.Das sind aber nur Vermutungen.
VG
Bernd -
@dp20eic
Es ist eine V1.x Datenbank.
Ich habe jetzt den alten Stand mit der zeitlichen Lücke wiederhergestellt. Das Backup davon wird per iobroker mit dem Backit-Up Adapter täglich gesichert.
Die alte Datenbank stammte aus einer früheren, zerschossenen IObroker-Installation. Hier lief jedoch noch Influxdb. Ich konnte dann mit dem Backitup-Adapter nicht mehr sichern, aber von der influx-shell ging das dann noch... Evlt. ist das dann ein anderes Format? Mit geringfügig anderen Timestamps?
Ich kann jetzt das Ganze nochmal probieren und zunächst wieder von der alten iobroker-installation wieder von Hand die Daten sichern. Diesmal dann aber nur selektiv das fehlende Zeitfenster. Und dann in die neue DB des neuafgesetzten iobroker systems zurück-einspielen. Das Ganze ist aber mit etwas Aufwand verbunden, da ich dann die zerschossene Installation von einem anderen Stick wieder booten musse, etcpp.
Evtl. lebe ich einfach mit der Datenlücke....Trotzdem Danke!
Du meinst aber, dass Duplikate eigentlich überschrieben werden müssten, also gar nicht erneut aufgenommen werden, richtig?
So hatte ich mir das auch vorgestellt.Aber dann müsste der Platzzuwachs tatsächlich eine andere Ursache haben und evtl. noch irgendeine Geister-DB rumschwirren. Ich habe ja zunächst eine weitere erstellt (iobroker_bak) und in diese zurückgelesen. Anschließend dann kopiert und die iobroker_bak per drop database gelöscht.
Ist auch per "show databases" nicht mehr vorhanden... Ich gehe davon aus, dass dann auch kein Platz mehr belegt wird. -
@runningthewutz sagte in Influxdb: löschen von Duplikaten:
Es ist eine V1.x Datenbank.
Moin,
wenn es die Möglichkeit bei Dir gibt, kannst Du mittels eines Toolsvon außen auf die
influxDB
zugreifen, um zu schauen, was da für Daten drin sind und evtl. damit auch den Bereich zu exportieren, glaube mit dem DBStudio geht das.@runningthewutz sagte in Influxdb: löschen von Duplikaten:
Du meinst aber, dass Duplikate eigentlich überschrieben werden müssten, also gar nicht erneut aufgenommen werden, richtig?
So hatte ich mir das auch vorgestellt.Ja, so sollte es sein, wenn die Daten gleich sind, dann wird da nichts noch mal eingetragen, max. wird die Zeile mit dem gleichlautenden Datensatz überschrieben, weichen die Datensätze ab, dann gibt es einen neuen Eintrag.
@runningthewutz sagte in Influxdb: löschen von Duplikaten:
Die alte Datenbank stammte aus einer früheren, zerschossenen IObroker-Installation. Hier lief jedoch noch Influxdb. Ich konnte dann mit dem Backitup-Adapter nicht mehr sichern, aber von der influx-shell ging das dann noch... Evlt. ist das dann ein anderes Format? Mit geringfügig anderen Timestamps?
Sollte dann nicht sein, wenn es ioBroker -> Adapter -> influxdb ist, dann sollte sich das Format nicht unterscheiden, hatte am Anfang, das so verstanden, dass das eine andere Software war, die die Daten geschrieben hat.
VG
Bernd