NEWS
[gelöst] backitup und influxdbv2
-
@manrum1 sagte in [gelöst] backitup und influxdbv2:
Frage1: Geht das?
Dass du mit den alten Daten eine übergreifende Query basteln willst, hattest du nicht erwähnt.
Um allen Problemen aus dem Weg zu gehen, würde ich die Org. "Homebase" wieder löschen und stattdessen den Restore in die bestehende Organisation ausführen. Das geht aber nur über die Kommandozeile. Backitup ist dafür nicht geeignet.
Du musst dafür das Flag "--new-org" benutzen. Im Detail ist dies hier erklärt:https://docs.influxdata.com/influxdb/v2/reference/cli/influx/restore/
Das Backitup-Backup-File muss entpackt werden.
Edit:
Das müsste dann wahrscheinlich so aussehen:influx restore --bucket iobold --new-bucket <hier könnte ein neuer Bucketname rein> --new-org <Name der bestehenden Org> --org <Name der bestehenden Org> --token <Token ID> <Pfad zum entpackten Backup-File>
-
@marc-berg Danke für die prompte Hilfe!
Ich kann das Bucket iobold in die neue Org restoren, allerdings sehe ich keine Daten. Das Kommando musste ich dafür wie folgt anpassen:
influx restore --bucket iobold --org <Name der alten Org> --new-bucket <hier könnte ein neuer Bucketname rein> --new-org <Name der bestehenden Org> --token <Token ID der neuen ORg> <Pfad zum entpackten Backup-File>
Soweit klappte das dann auch:
influx restore --bucket iobold --org Homebase --new-bucket iobold --new-org home --token xxx /opt/iobroker/backups/tmp / 2023/10/18 11:12:35 INFO: Restoring bucket "5d5a5dbc9205129a" as "iobold" 2023/10/18 11:12:41 INFO: Restoring TSM snapshot for shard 585 2023/10/18 11:12:41 INFO: Restoring TSM snapshot for shard 586 hier folgen weitere...
Leider sehe ich im Influx Data Explorer zwar das bucket iobold aber keine Daten dazu:
-
Ich habe das Ganze noch nicht selbst durchgespielt, aber so wie ich das verstehe, muss sowohl "--org" als auch "--new-org" auf "home" lauten.
Mit "org" gibst du an, an welcher Organisation sich der restore-Befehl mit dem Token anmelden soll und mit "new-org" wird mitgegeben, dass die Org. aus dem Backup mit dem dort angegebenen Wert überschrieben wird.
-
@marc-berg Ja, hatte ich probiert und das Kommando so wie du es angeben hast ausgeführt, aber dann passiert leider gar nichts (keinerlei Meldung/Fehlermeldung). Habs aus dem Help so verstanden wie ich angepasst habe.
pi@iob1:/opt/iobroker/backups/tmp $ influx restore --help NAME: restore - Restores a backup directory to InfluxDB USAGE: restore [command options] path DESCRIPTION: Restore influxdb. Examples: # backup all data influx restore /path/to/restore COMMON OPTIONS: --host value HTTP address of InfluxDB [$INFLUX_HOST] --skip-verify Skip TLS certificate chain and host name verification [$INFLUX_SKIP_VERIFY] --configs-path value Path to the influx CLI configurations [$INFLUX_CONFIGS_PATH] --active-config value, -c value Config name to use for command [$INFLUX_ACTIVE_CONFIG] --http-debug --token value, -t value Token to authenticate request [$INFLUX_TOKEN] OPTIONS: --full Fully restore and replace all data on server --org-id value The original ID of the organization to restore [$INFLUX_ORG_ID] --org value, -o value The original name of the organization to restore [$INFLUX_ORG] --bucket-id value The original ID of the bucket to restore --bucket value, -b value The original name of the bucket to restore --new-bucket value New name to use for the restored bucket --new-org value New name to use for the restored organization
Mein entpacktes Directory schaut so aus (enpackt mit tar - xvcf:
-
@manrum1 sagte in [gelöst] backitup und influxdbv2:
Habs aus dem Help so verstanden wie ich angepasst habe.
Ja, stimmt schon, wie du es gemacht hast. So sollte es eigentlich funktionieren. Da gehen mir jetzt die Ideen aus, außer: hast du dich mal an der InfluxDB Gui neu angemeldet? Manchmal zieht die Gui sich erst dann die Measurements.
Ansonsten gibt es immer noch den Weg über Export und Import, so wie ich ihn hier beschrieben habe (natürlich nur den V2 Teil):
-
@marc-berg Danke noch mal.
Was mir noch einfällt: Muss ich influx vor dem restore stoppen? -
-
@marc-berg Neue Erkenntnisse: Das restore hat im Prinzip geklappt, warum er im Influx Data Explorer keine mearurements anzeigt bleibt ein Rätsel. Jedenfalls gehts über Grafana, wenn ich dafür eine eigene Datasource anlege. Da Grafana auch mehrere Datenbanken erlaubt muss ich noch rausfinden wie das geht.
Danke jedenfalls noch mal
-
@manrum1 sagte in [gelöst] backitup und influxdbv2:
warum er im Influx Data Explorer keine mearurements anzeigt bleibt ein Rätsel.
@marc-berg sagte in [gelöst] backitup und influxdbv2:
hast du dich mal an der InfluxDB Gui neu angemeldet?
-
@marc-berg ja, habe ich
-
@manrum1 Hallo, Marc, habe heute meinen iobroker ganz normal upgedated, es wurde nur der js-controller auf neuesten Stand (5.0.17) gebracht. Nun habe ich plötzlich "Lücken" in meiner influx Datenbank. Man sieht es sehr gut auf folgendem Screenshot:
Zwischen 26.11. und 12. 4. sind alle Daten weg, kannst Du dir erklären, wie das durch den update passieren kann?Nun wollte ich meinen Backup einspielen, geht aber nicht, da ich folgende Meldung erhalte:
Started restore ... [DEBUG] [influxDB] - Created tmp directory [DEBUG] [influxDB] - Start infuxDB Restore ... [DEBUG] [influxDB] - influxdb.0 is stopped [ERROR] [influxDB] - 2023/12/17 13:14:39 INFO: Restoring bucket "8e0e9c529c6510f7" as "iobold" Error: failed to restore bucket "iobold": 422 Unprocessable Entity: bucket with name iobold already exists [DEBUG] [influxDB] - Try deleting the InfluxDB tmp directory [DEBUG] [influxDB] - InfluxDB tmp directory was successfully deleted [DEBUG] [influxDB] - infuxDB Restore completed successfully [EXIT] influxDB restore done [DEBUG] [influxDB] - influxdb.0 started
Das hatten wir schon mal, da ich die alte (iobold) DB für Auswertung alter Daten nutze.
Meine Frage: Wie kann ich mein restore so reparieren, dass er nur die iobroker-data DB verwendet und bei Bedarf restauriert?Schon mal Danke im Voraus!
-
@manrum1 sagte in [gelöst] backitup und influxdbv2:
Zwischen 26.11. und 12. 4. sind alle Daten weg, kannst Du dir erklären, wie das durch den update passieren kann?
Ich kann nur mit Sicherheit sagen, dass es nicht direkt durch das Update ausgelöst wurde. Da besteht keinerlei Zusammenhang.
Es fehlt exakt eine Woche, wie es aussieht. InfluxDB organisiert seine Daten in so genannten "Shards". Ein Shard ist genau 7 Tage lang, wenn die Aufbewahrungsdauer > 6 Monate ist. Also gehe ich davon aus, dass eine dieser Datendateien defekt ist oder gelöscht wurde. Als Ursache würde ich Datenträgerprobleme vermuten, die durch den Restart zu Tage getreten sind. Wo liegen die Daten?Error: failed to restore bucket "iobold": 422 Unprocessable Entity: bucket with name iobold already exists
Das hatten wir schon mal, da ich die alte (iobold) DB für Auswertung alter Daten nutze.
Meine Frage: Wie kann ich mein restore so reparieren, dass er nur die iobroker-data DB verwendet und bei Bedarf restauriert?Das verstehe ich nicht. Alle deine Daten (historische und aktuelle) liegen doch jetzt in einem Bucket, oder? (außer die jetzt gelöschten
)
EDIT: außerdem solltest du mal die Datumsformate in der grafana.ini anpassen, damit die deutschen angezeigt werden:
[date_formats] # For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/ # Default system date format used in time range picker and other places where full time is displayed full_date = DD.MM.YYYY HH:mm:ss # Used by graph and other places where we only show small intervals interval_second = HH:mm:ss interval_minute = HH:mm interval_hour = DD.MM. HH:mm interval_day = DD.MM. interval_month = MM.YYYY interval_year = YYYY
-
@marc-berg Danke für die schnelle Antwort. Das mit dem Datenverlust bleibt wohl ein Rätsel. Aber inzwischen wei ich, warum er die alte Datenbank (iobold) anmeckert. Liegt an der damaligen Einstelllung:
Wenn mans nicht gleich wieder zurückstellt, dann vergisst mans halt
Kannst mir noch einen Tipp geben, wie ich die fehlende Woche wieder restauriere, backup habe ich ja. -
@manrum1 sagte in [gelöst] backitup und influxdbv2:
Kannst mir noch einen Tipp geben, wie ich die fehlende Woche wieder restauriere, backup habe ich ja.
Das geht zum Beispiel so:
- Wiederherstellen der Sicherung in ein neues Bucket "iobroker_temp" oder wie auch immer du das nennst. Die Verfahrensweise sind wir oben schon durchgegangen.
- Kopieren der Daten mit folgender Query:
from(bucket: "iobroker_temp") |> range(start: -2mo) |> to(bucket: "iobold")
Den Range kannst du ruhig großzügig wählen, gleiche Daten werden einfach drübergebügelt, es entstehen keine doppelten Datensätze.
- Bucket "iobroker_temp" wieder löschen.
-
@marc-berg Ah ok, ich zerstöre also keine Daten, da er gleiche (vorhandene) Einträge nicht überschreibt.
-
@manrum1 sagte in [gelöst] backitup und influxdbv2:
Ah ok, ich zerstöre also keine Daten, da er gleiche (vorhandene) Einträge nicht überschreibt.
Es werden Daten überschrieben, aber wenn du nach der Sicherung keine Daten geändert oder gelöscht hast, erfolgt lediglich ein 1:1 Ersatz. Wenn du aber unsicher bist, dann wähle den range (start: ... , stop ...) einfach genau so, dass der fehlende Zeitraum exakt wiederhergestellt wird.
-
@marc-berg Leider klappt es nicht. Habe Backup extrahiert:
/opt/iobroker/backups/tmp/
Daraufhin führe ich folgendes Kommando aus:
influx restore --bucket iobroker-data --org home --new-bucket iobroker-data-2H23 --new-org home --token xxx /opt/iobroker/backups/tmp/
Passieren tut danach nichts, keine Fehlermeldung. Hattest du nicht mal gesagt, dass ein restore nur funktioniert, wenn das Bucket nicht existiert (in meinem Fall iobroker-data)?
-
@manrum1 sagte in [gelöst] backitup und influxdbv2:
Hattest du nicht mal gesagt, dass ein restore nur funktioniert, wenn das Bucket nicht existiert (in meinem Fall iobroker-data)?
Habe gerade den Überblick verloren, wie deine Bucket(s) heißen, und ob du eins oder mehrere hast. Vielleicht fasst du das nochmal zusammen.
In diesem Beispiel wird ein Bucket, das im Original "iobroker" heißt und so gesichert wurde in ein neues Bucket "iobroker_tmp" restored:
influx restore --new-bucket iobroker_tmp --bucket iobroker -t xxx /var/lib/influxdb2/backup
"iobroker_tmp" darf dann natürlich noch nicht existieren.
-
@marc-berg Also mein aktives Bucket für iobroker heißt iobroker-data, diese wird auch gebackuped. Daneben nutze ich in meiner Org:
Nun wollte ich wie vorher beschrieben ein neues Bucket erzeugen iobroker-data-2H23
influx restore --bucket iobroker-data --org home --new-bucket iobroker-data-2H23 --new-org home --token xxx /opt/iobroker/backups/tmp/
-
Also wenn überhaupt keine Meldung erscheint, ist das i.d.R. ein Zeichen dafür, dass das Bucket, welches im Backup enthalten ist, nicht so heißt, wie du angegeben hast (iobroker-data).
Schau mal in die "manifest" Datei, dort gibt es einen Schlüssel "bucketName". Und dort auch prüfen, ob die "organization" passt.