Korrupte Datenbank

Sollte es vorkommen, dass nach einer Wiederherstellung des Speichermediums keine Daten mehr in Grafana angezeigt werden, könnte es an einer korrupten Datenbank in Influx liegen.

Fehlerbild: InfluxDB Error: Bad Gateway

und zusätzlich die InfluxDB ständig neu startet (neue PID).

Dann könnt ihr wie folgt vorgehen:

1.) Prozess in der WebUI stoppen

2.) Diesen Befehl als root auf der Konsole ausführen

sudo -u influxdb -g influxdb /usr/bin/influxd -config /etc/influxdb/influxdb.conf

Ihr solltet jetzt sehr viele Datenzeilen an euch vorbeirauschen sehen.

Bei einem Fehler erkennt ihr das daran, dass nach einer gewissen Zeit wieder eine Eingabemöglichkeit in der Konsole besteht (und damit der Influx-Prozess abgestürzt ist). Eventuell seht ihr auch noch eine Fehlermeldung von Influx.

3.) Daten mit der Maus markieren und in die Zwischenablage kopieren

4.) Inhalt in Notepad++ einfügen um eine bessere Lesbarkeit zu erreichen

panic: runtime error: slice bounds out of range [:662] with capacity 512

goroutine 2185 [running]:
github.com/influxdata/influxdb/tsdb/cursors.(*FloatArray).Include(0x35a155c, 0x18124400, 0x171eb245, 0x56026900, 0x5adb18bf)
        /go/src/github.com/influxdata/influxdb/tsdb/cursors/arrayvalues.gen.go:130 +0x26c
github.com/influxdata/influxdb/tsdb/engine/tsm1.(*tsmBatchKeyIterator).combineFloat(0x31ce460, 0x3c98701, 0x10, 0x3c98750, 0x0)
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/compact.gen.go:1115 +0x610
github.com/influxdata/influxdb/tsdb/engine/tsm1.(*tsmBatchKeyIterator).mergeFloat(0x31ce460)
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/compact.gen.go:1058 +0x24c
github.com/influxdata/influxdb/tsdb/engine/tsm1.(*tsmBatchKeyIterator).merge(0x31ce460)
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/compact.go:1848 +0x34
github.com/influxdata/influxdb/tsdb/engine/tsm1.(*tsmBatchKeyIterator).Next(0x31ce460, 0x7032a)
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/compact.go:1833 +0x10c
github.com/influxdata/influxdb/tsdb/engine/tsm1.(*Compactor).write(0x313bb60, 0x30cc180, 0x73, 0x1ec9988, 0x31ce460, 0x3399601, 0x0, 0x0)
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/compact.go:1141 +0x150
github.com/influxdata/influxdb/tsdb/engine/tsm1.(*Compactor).writeNewFiles(0x313bb60, 0x3, 0x2, 0x3bc8120, 0x3, 0x4, 0x1ec9988, 0x31ce460, 0x1, 0x1ec9988, ...)
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/compact.go:1045 +0x11c
github.com/influxdata/influxdb/tsdb/engine/tsm1.(*Compactor).compact(0x313bb60, 0x3bc8100, 0x3bc8120, 0x3, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0)
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/compact.go:953 +0x4a0
github.com/influxdata/influxdb/tsdb/engine/tsm1.(*Compactor).CompactFull(0x313bb60, 0x3bc8120, 0x3, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0)
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/compact.go:971 +0x110
github.com/influxdata/influxdb/tsdb/engine/tsm1.(*compactionStrategy).compactGroup(0x3f444c0)
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/engine.go:2289 +0xfdc
github.com/influxdata/influxdb/tsdb/engine/tsm1.(*compactionStrategy).Apply(0x3f444c0)
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/engine.go:2266 +0x2c
github.com/influxdata/influxdb/tsdb/engine/tsm1.(*Engine).compactFull.func1(0x3494950, 0x337e300, 0x3f444c0)
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/engine.go:2235 +0xc4
created by github.com/influxdata/influxdb/tsdb/engine/tsm1.(*Engine).compactFull
        /go/src/github.com/influxdata/influxdb/tsdb/engine/tsm1/engine.go:2231 +0xd0

5.) prüfen, welche files betroffen sind; dafür ist von euch der Speicherpfad anzupassen

influx_inspect verify -dir /opt/loxberry/system/storage/usb/Stick30GB/influxdb/

Ausgabe:

/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/210/000000063-000000002.tsm: healthy
/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/211/000000063-000000002.tsm: healthy
/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/213/000000063-000000002.tsm: got 1994650575 but expected 2913134217 for key [104 116 116 112 100 44 98 105 110 100 61 58 56 48 56 54 44 104 111 115 116 110 97 109 101 61 108 111 120 98 101 114 114 121 35 33 126 35 112 111 105 110 116 115 87 114 105 116 116 101 110 79 75], block 117
/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/213/000000063-000000002.tsm: got 970457360 but expected 1627294141 for key [104 116 116 112 100 44 98 105 110 100 61 58 56 48 56 54 44 104 111 115 116 110 97 109 101 61 108 111 120 98 101 114 114 121 35 33 126 35 112 111 105 110 116 115 87 114 105 116 116 101 110 79 75], block 118
/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/213/000000063-000000002.tsm: got 2393176381 but expected 2689407139 for key [104 116 116 112 100 44 98 105 110 100 61 58 56 48 56 54 44 104 111 115 116 110 97 109 101 61 108 111 120 98 101 114 114 121 35 33 126 35 112 111 105 110 116 115 87 114 105 116 116 101 110 79 75], block 119
/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/213/000000063-000000002.tsm: got 1520309356 but expected 2594523079 for key [104 116 116 112 100 44 98 105 110 100 61 58 56 48 56 54 44 104 111 115 116 110 97 109 101 61 108 111 120 98 101 114 114 121 35 33 126 35 112 111 105 110 116 115 87 114 105 116 116 101 110 79 75], block 120
/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/213/000000063-000000002.tsm: got 3532195821 but expected 2073464141 for key [104 116 116 112 100 44 98 105 110 100 61 58 56 48 56 54 44 104 111 115 116 110 97 109 101 61 108 111 120 98 101 114 114 121 35 33 126 35 112 111 105 110 116 115 87 114 105 116 116 101 110 79 75], block 121
/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/213/000000063-000000002.tsm: got 2777860506 but expected 2586484686 for key [104 116 116 112 100 44 98 105 110 100 61 58 56 48 56 54 44 104 111 115 116 110 97 109 101 61 108 111 120 98 101 114 114 121 35 33 126 35 112 111 105 110 116 115 87 114 105 116 116 101 110 79 75], block 122
/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/213/000000063-000000002.tsm: got 2756526835 but expected 569751383 for key [104 116 116 112 100 44 98 105 110 100 61 58 56 48 56 54 44 104 111 115 116 110 97 109 101 61 108 111 120 98 101 114 114 121 35 33 126 35 112 111 105 110 116 115 87 114 105 116 116 101 110 79 75], block 123
/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/213/000000063-000000002.tsm: got 3732705521 but expected 2166841600 for key [104 116 116 112 100 44 98 105 110 100 61 58 56 48 56 54 44 104 111 115 116 110 97 109 101 61 108 111 120 98 101 114 114 121 35 33 126 35 112 111 105 110 116 115 87 114 105 116 116 101 110 79 75], block 124
/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/214/000000063-000000002.tsm: healthy
/opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/215/000000063-000000002.tsm: healthy

6.) korrupte Dateien sichern (ich habe das ganze Verzeichnis und nicht nur die einzelne Datei gesichert)

zip /opt/loxberry/system/storage/usb/Stick8GB/213.zip -r /opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/213/

7.) Dateien entfernen

Vor dem Löschen habe ich mir noch eine Ausgabe generiert, welche Files wo gelöscht werden

rm /opt/loxberry/system/storage/usb/Stick30GB/influxdb/data/_internal/monitor/213/000000063-000000002.tsm

8.) Temporäre Dateien entfernen

find /opt/loxberry/system/storage/usb/Stick30GB/ -name *.tmp > /opt/loxberry/system/storage/usb/Stick8GB/find_tmp.txt
find /opt/loxberry/system/storage/usb/Stick30GB/ -name *.tmp -exec rm {} \;

9.) jetzt jetzt könnt ihr über das WebUI die InfluDB wieder starten. Bitte beoachten, ob die UID identischbleibt.

–> geschafft!

Falls nicht, die Schritte wie oben beschrieben wiederholen und den Schritt 10.) noch mit dazunehmen.

10.) unter Umständen kann es auch möglich sein, dass ihr die *.wal Dateien löschen müsst

find /opt/loxberry/system/storage/usb/Stick30GB/ -name *.wal > /opt/loxberry/system/storage/usb/Stick8GB/find_wal.txt
find /opt/loxberry/system/storage/usb/Stick30GB/ -name *.wal -exec rm {} \;

Viel Erfolg!