NEWS
Pflege der InfluxDB
-
Mein NAS ist ein Eigenbau mit Banana Pi. Und openmediavault. Da kann ich nur Version3 auswählen. Keine Unterversion. Wenn das Backup fertig ist, stelle ich im Backitup auf 3.1.1. Möchte jetzt nicht eingreifen. Die Datenbank ist wirklich riesig. Und wächst unaufhaltsam. Vermutlich speichere ich immer noch unnötig viele Daten. Ändern- da habe ich Bedenken, daß Alles auf einmal weg ist.
-
Mein NAS ist ein Eigenbau mit Banana Pi. Und openmediavault. Da kann ich nur Version3 auswählen. Keine Unterversion. Wenn das Backup fertig ist, stelle ich im Backitup auf 3.1.1. Möchte jetzt nicht eingreifen. Die Datenbank ist wirklich riesig. Und wächst unaufhaltsam. Vermutlich speichere ich immer noch unnötig viele Daten. Ändern- da habe ich Bedenken, daß Alles auf einmal weg ist.
@Laser sagte in backitup Speicherort:
Und wächst unaufhaltsam.
Deswegen splittet man die irgendwann.
-
Mein NAS ist ein Eigenbau mit Banana Pi. Und openmediavault. Da kann ich nur Version3 auswählen. Keine Unterversion. Wenn das Backup fertig ist, stelle ich im Backitup auf 3.1.1. Möchte jetzt nicht eingreifen. Die Datenbank ist wirklich riesig. Und wächst unaufhaltsam. Vermutlich speichere ich immer noch unnötig viele Daten. Ändern- da habe ich Bedenken, daß Alles auf einmal weg ist.
@Laser sagte in backitup Speicherort:
Ändern- da habe ich Bedenken, daß Alles auf einmal weg ist.
Dann ist die Strategie, so lange zu warten (bis es knallt) natürlich genau die richtige.
-
@thomas-braun zum "splitten" der Datenbank habe ich nur Folgendes gefunden:
strings.split() function Flux 0.18.0+View InfluxDB support Copy page for AI strings.split() splits a string on a specified separator and returns an array of substrings. Function type signature (t: string, v: string) => [string] For more information, see Function type signatures. Parameters v (Required) String value to split. t (Required) String value that acts as the separator. Examples Split a string into an array of substrings import "strings" strings.split(v: "foo, bar, baz, quz", t: ", ")// Returns ["foo", "bar", "baz", "quz"] Related strings.splitAfter() function strings.splitAfterN() function strings.splitN() functionSoll ich das tun?
@Laser sagte in backitup Speicherort:
zum "splitten" der Datenbank habe ich nur Folgendes gefunden:
Die Funktion ist zum "Splitten" (was auch immer das ist) einer Datenbank ungefähr so gut geeignet wie ein Streichholz für den Bau einer Interkontinentalrakete.
Mein Vorschlag: Schau erstmal, wo die dicken Brocken herkommen. Dazu könntest du diese Query nutzen, die du mal in der Weboberfläche der InfluxDB ausführst:
from(bucket: "iobroker") |> range(start: 0) |> filter(fn: (r) => r["_field"] == "value") |> count() |> group() |> keep(columns: ["_measurement", "_value"]) |> sort(columns: ["_value"], desc: true) |> rename(columns: {_value: "Anzahl"})
Vielleicht ist da viel Müll drin, den man einfach löschen kann. -
Da sind sehr viele Daten drin. Die Daten im 60 Sec Zyklus von vor 2 Jahren werde ich mir vermutlich nie ansehen. Aber ein "einfaches" Löschen gibt es doch in der InfluxDB nicht? Über die grafische Oberfläche. Ich habe schon einmal etwas gelöscht. Das war äußert mühselig. Mit Konsolenbefehl für jeden Wert und Zeitbereich.
-
Da sind sehr viele Daten drin. Die Daten im 60 Sec Zyklus von vor 2 Jahren werde ich mir vermutlich nie ansehen. Aber ein "einfaches" Löschen gibt es doch in der InfluxDB nicht? Über die grafische Oberfläche. Ich habe schon einmal etwas gelöscht. Das war äußert mühselig. Mit Konsolenbefehl für jeden Wert und Zeitbereich.
@Laser sagte in backitup Speicherort:
Da sind sehr viele Daten drin. Die Daten im 60 Sec Zyklus von vor 2 Jahren werde ich mir vermutlich nie ansehen. Aber ein "einfaches" Löschen gibt es doch in der InfluxDB nicht?
Darum solltest du schauen, wo die vielen Daten herkommen und dann direkt an der Quelle die Einstellungen so ändern, dass in Zukunft nicht mehr so viele Einträge zusammenkommen.
16GB ist VIEL zu viel. Zum Vergleich: Mein Backup aus den letzten vier Jahren ist 3,7 MB groß. Ich räume aber zugegebenermaßen regelmäßig auf, habe aber trotzdem die wichtigen Daten der letzten Jahre abrufbereit.
Vielleicht (und das ist hier auch schon einigen passiert) loggst du auch die Telemetriedaten der Datenbank mit. Dazu müsste man das Ergebnis mal sehen
Über die grafische Oberfläche. Ich habe schon einmal etwas gelöscht. Das war äußert mühselig. Mit Konsolenbefehl für jeden Wert und Zeitbereich.
Ja, das ist mühselig. Deshalb würde ich jetzt die Ursache bekämpfen anstatt dich mit den Auswirkungen rumzuschlagen.
-
Ich habe schon mal eine Aufräumaktion gestartet. Muß offenbar nochmals durchsehen.
Nebenbei: Habe heute auch die CIFS Version auf 3.1.1 geändert. Gestern noch nicht.Defaultmäßig ist in influxDB ein "scraper" angelegt. Kann ich den ohne Nachteile löschen?
-
Ich habe schon mal eine Aufräumaktion gestartet. Muß offenbar nochmals durchsehen.
Nebenbei: Habe heute auch die CIFS Version auf 3.1.1 geändert. Gestern noch nicht.Defaultmäßig ist in influxDB ein "scraper" angelegt. Kann ich den ohne Nachteile löschen?
@Laser sagte in backitup Speicherort:
Defaultmäßig ist in influxDB ein "scraper" angelegt. Kann ich den ohne Nachteile löschen?
Der wird nicht defaultmäßig angelegt, aber egal. Das erklärt jetzt aber auch, wo die vielen Daten herkommen.
@marc-berg sagte in backitup Speicherort:
Vielleicht (und das ist hier auch schon einigen passiert) loggst du auch die Telemetriedaten der Datenbank mit.
Also: Scraper löschen und danach alle durch den Scraper angelegten Measurements löschen. Damit dürfte sich die Größe der DB auf ein Bruchteil reduzieren. (nach einer gewissen Zeit, die die DB zum Aufräumen benötigt)
-
Bin beim Versuch, Measurements des Scrapes zu löschen, gescheitert. Mein Befehl:
influx delete --bucket iobroker --token KTLmduvh_2ocvh25GueyRrQmob_hcMaVqg2XJUnEuE2iFYhhretw-PtP-sBEAsQiQOD0u68fhpwFnmrBAZeXYZ== --org privat --start 1970-01-01T00:00:00Z --stop $(date +"%Y-%m-%dT%H:%M:%SZ") --predicate '_measurement="storage"'
löscht einfach nicht die Measurements mit dieser Bezeichnung.
-
Bin beim Versuch, Measurements des Scrapes zu löschen, gescheitert. Mein Befehl:
influx delete --bucket iobroker --token KTLmduvh_2ocvh25GueyRrQmob_hcMaVqg2XJUnEuE2iFYhhretw-PtP-sBEAsQiQOD0u68fhpwFnmrBAZeXYZ== --org privat --start 1970-01-01T00:00:00Z --stop $(date +"%Y-%m-%dT%H:%M:%SZ") --predicate '_measurement="storage"'
löscht einfach nicht die Measurements mit dieser Bezeichnung.
@Laser sagte in backitup Speicherort:
'_measurement="storage"'
Sicher, dass das Measurement so heißt?
EDIT: Außerdem würde ich nicht mit Variablen arbeiten, dass ist hier unnötig und eine Fehlerquelle.
--start '2000-01-01T00:00:00Z' --stop '2030-12-31T23:59:59Z' -
Eines heißt z.B so: "storage_bucket_measurement_num"
influx delete --bucket iobroker --token KTLmduvh_2ocvh25GueyRrQmob_hcMaVqg2XJUnEuE2iFYhhretw-PtP-sBEAsQiQOD0u68fhpwFnmrBAZeXYZ== --org privat --start 1970-01-01T00:00:00Z --stop '2030-12-31T23:59:59Z' --predicate '_measurement="*storage*"' -
Eines heißt z.B so: "storage_bucket_measurement_num"
influx delete --bucket iobroker --token KTLmduvh_2ocvh25GueyRrQmob_hcMaVqg2XJUnEuE2iFYhhretw-PtP-sBEAsQiQOD0u68fhpwFnmrBAZeXYZ== --org privat --start 1970-01-01T00:00:00Z --stop '2030-12-31T23:59:59Z' --predicate '_measurement="*storage*"'@Laser sagte in backitup Speicherort:
_measurement="*storage*"'
Du kannst nicht mit Wildcards arbeiten, das funktioniert an dieser Stelle nicht. Entweder einzeln löschen, oder aber das Script nutzen. Diese Anfragen kommen ja immer mal wieder rein:
#!/bin/bash # InfluxDB Konfiguration BUCKET="<BUCKET-NAME>" ORG="<ORG-NAME>" TOKEN="" # Leer lassen, wenn kein Token verwendet werden soll START="1970-01-01T00:00:00Z" STOP="2030-01-01T00:00:00Z" # Liste aller zu löschenden Measurements MEASUREMENTS=( "boltdb_reads_total" "boltdb_writes_total" "go_gc_duration_seconds" "go_goroutines" "go_info" "go_memstats_alloc_bytes" "go_memstats_alloc_bytes_total" "go_memstats_buck_hash_sys_bytes" "go_memstats_frees_total" "go_memstats_gc_sys_bytes" "go_memstats_heap_alloc_bytes" "go_memstats_heap_idle_bytes" "go_memstats_heap_inuse_bytes" "go_memstats_heap_objects" "go_memstats_heap_released_bytes" "go_memstats_heap_sys_bytes" "go_memstats_last_gc_time_seconds" "go_memstats_lookups_total" "go_memstats_mallocs_total" "go_memstats_mcache_inuse_bytes" "go_memstats_mcache_sys_bytes" "go_memstats_mspan_inuse_bytes" "go_memstats_mspan_sys_bytes" "go_memstats_next_gc_bytes" "go_memstats_other_sys_bytes" "go_memstats_stack_inuse_bytes" "go_memstats_stack_sys_bytes" "go_memstats_sys_bytes" "go_threads" "http_api_request_duration_seconds" "http_api_requests_total" "http_query_request_bytes" "http_query_request_count" "http_query_response_bytes" "influxdb_buckets_total" "influxdb_dashboards_total" "influxdb_info" "influxdb_organizations_total" "influxdb_remotes_total" "influxdb_replications_total" "influxdb_scrapers_total" "influxdb_telegrafs_total" "influxdb_tokens_total" "influxdb_uptime_seconds" "influxdb_users_total" "qc_all_active" "qc_all_duration_seconds" "qc_compiling_active" "qc_compiling_duration_seconds" "qc_executing_active" "qc_executing_duration_seconds" "qc_memory_unused_bytes" "qc_queueing_active" "qc_queueing_duration_seconds" "qc_requests_total" "query_influxdb_source_read_request_duration_seconds" "service_bucket_new_call_total" "service_bucket_new_duration" "service_bucket_new_error_total" "service_onboard_new_call_total" "service_onboard_new_duration" "service_org_call_total" "service_org_duration" "service_org_new_call_total" "service_org_new_duration" "service_org_new_error_total" "service_password_new_call_total" "service_password_new_duration" "service_session_call_total" "service_session_duration" "service_session_error_total" "service_urm_new_call_total" "service_urm_new_duration" "service_user_new_call_total" "service_user_new_duration" "storage_bucket_measurement_num" "storage_bucket_series_num" "storage_cache_disk_bytes" "storage_cache_inuse_bytes" "storage_cache_latest_snapshot" "storage_cache_writes_dropped" "storage_cache_writes_err" "storage_cache_writes_total" "storage_compactions_queued" "storage_retention_check_duration" "storage_shard_disk_size" "storage_shard_fields_created" "storage_shard_series" "storage_shard_write_count" "storage_shard_write_dropped_sum" "storage_shard_write_err_count" "storage_shard_write_err_sum" "storage_shard_write_sum" "storage_tsm_files_disk_bytes" "storage_tsm_files_total" "storage_wal_size" "storage_wal_writes" "storage_wal_writes_err" "storage_writer_dropped_points" "storage_writer_err_points" "storage_writer_ok_points" "storage_writer_req_points" "storage_writer_timeouts" "task_executor_promise_queue_usage" "task_executor_total_runs_active" "task_executor_workers_busy" "task_scheduler_current_execution" "task_scheduler_execute_delta" "task_scheduler_schedule_delay" "task_scheduler_total_execute_failure" "task_scheduler_total_execution_calls" "task_scheduler_total_release_calls" "task_scheduler_total_schedule_calls" "task_scheduler_total_schedule_fails" ) echo "Starte Löschvorgang für ${#MEASUREMENTS[@]} Measurements..." echo "Bucket: $BUCKET" echo "Organisation: $ORG" echo "" SUCCESS=0 FAILED=0 # Basis-Argumente fürs influx-CLI INFLUX_ARGS=(delete --bucket "$BUCKET" --org "$ORG" --start "$START" --stop "$STOP") # Token nur anhängen, wenn nicht leer if [[ -n "$TOKEN" ]]; then INFLUX_ARGS+=(--token "$TOKEN") fi # Durch alle Measurements iterieren for measurement in "${MEASUREMENTS[@]}"; do echo -n "Loesche '$measurement'... " if influx "${INFLUX_ARGS[@]}" \ --predicate "_measurement=\"$measurement\"" 2>/dev/null; then echo "✓" ((SUCCESS++)) else echo "✗" ((FAILED++)) fi done echo "" echo "Fertig!" echo "Erfolgreich geloescht: $SUCCESS" echo "Fehlgeschlagen: $FAILED" -
OK. keine Wildcards. Direkt eingegeben:
influx delete --bucket iobroker --token KTLmduvh_2ocvh25GueyRrQmob_hcMaVqg2XJUnEuE2iFYhhretw-PtP-sBEAsQiQOD0u68fhpwFnmrBAZeXYZ== --org privat --start 1970-01-01T00:00:00Z --stop '2030-12-31T23:59:59Z' --predicate '_measurement="storage_bucket_measurement_num"'löscht auch nicht.
-
OK. keine Wildcards. Direkt eingegeben:
influx delete --bucket iobroker --token KTLmduvh_2ocvh25GueyRrQmob_hcMaVqg2XJUnEuE2iFYhhretw-PtP-sBEAsQiQOD0u68fhpwFnmrBAZeXYZ== --org privat --start 1970-01-01T00:00:00Z --stop '2030-12-31T23:59:59Z' --predicate '_measurement="storage_bucket_measurement_num"'löscht auch nicht.
@Laser sagte in backitup Speicherort:
löscht auch nicht.
influx bucket list --org privat --token ...sagt?
-
Befehlssyntax scheint falsch zu sein. Meldung: Error: flag provided but not defined: -KTLmduvh_2ocvh25GueyRrQmob_hcMaVqg2XJUnEuE2iFYhhretw-PtP-sBEAsQiQOD0u68fhpwFnmrBAZXYZ
(Hochsicherheits- Token ist etwas abgeändert)
-
influx bucket list --org privat --KTLmduvh_2ocvh25GueyRrQmob_hcMaVqg2XJUnEuE2iFYhhretw-PtP-sBEAsQiQOD0u68fhpwFnmrBAZeXYZ==...mit und ohne die 3 Punkte gtestet
@Laser sagte in backitup Speicherort:
influx bucket list --org privat --KTLmduvh_2ocvh25GueyRrQmob_hcMaVqg2XJUnEuE2iFYhhretw-PtP-sBEAsQiQOD0u68fhpwFnmrBAZeXYZ==...
da fehlt das "--token"
influx bucket list --org privat --token KTLmduvh_2ocvh25GueyRrQmob_hcMaVqg2XJUnEuE2iFYhhretw-PtP-sBEAsQiQOD0u68fhpwFnmrBAZeXYZ==...