Influxdb mit persistenten Speicher nachrüsten

diba

Benutzer
Mitglied seit
23. Okt 2021
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Hallo an alle,
ich habe folgendes Problem, ich hatte vor einiger Zeit einen Docker Container mit Influxdb 1.8.4 aufgesetzt. Das funktioniert auch gut. Ich habe allerdings den Fehler gemacht, daß ich keinen persistenten Spicher nach Anleitung erstellt habe. Nun möchte ich einen neuen Container erstellen und die Daten in den neuen richtig angelegten Container umsetzen. Kann mir jemand einen Tipp geben wie ich das mache??

Gruß Dirk
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.196
Punkte für Reaktionen
73
Punkte
68
die Dokumentation unter https://hub.docker.com/_/influxdb lesen und ein lokales Verzeichnis auf das Influx Dataverzeichnis mounten, z.B. -v /volume1/docker/influxdb:/var/lib/influxdb
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.528
Punkte für Reaktionen
416
Punkte
103
Ich verstehe den OP so, dass die Daten im Container gelandet sind und eben nicht in einem Verzeichnis in das ein Volume-Bind gemapped ist
Die bisherigen Daten müssen auf irgendeinem Weg konsistent aus dem Container "rauskopiert" werden.

Wenn einem egal ist, ob die Daten konsistent sind, dann könnte man versuch bei laufendem Container die Daten mit docker cp aus dem Container auf den Host zu kopieren. Allerdings haben gerade Datenbankdateien die angewohnheit ihre Dateien "offen" zu halten, so dass eine kopie dann im Zweifel unvollständig oder gar kaputt ist - mit Glück funktioniert es ja vielleicht.

Sauberer wäre es die Daten aus dem copy-on-write-layer Container rauszukopieren.

Schau mal bei ausgeschaltetem Container in Verzeichnis, dass bei sudo docker inspect ${container name oder id} --format '{{.GraphDriver.Data.MergedDir}}' als Rückgabe zurückkommt. An das Verzeichnis kommt man dann natürlich auch nur als root (sudo -i). Dort solltest Du das Influx-Datenverzeichnis auch irgendwo finden und kannst es dir dann rauskopieren.

Das ganze klappt aber nur, wenn Du grundlegende Dinge auf der (SSH) Shell hinbekommst, wie root werden, Verzeichnisse anlegen und Dateien rekursiv kopieren.
 
  • Like
Reaktionen: geimist

diba

Benutzer
Mitglied seit
23. Okt 2021
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Die grundlegenden Dinge in der shell bekomme ich hin. Allerdings ist mir der gesamte Befehl mit den geschweiften Klammern nicht so klar. Muß der Befehl genau so in die shell eingegeben werden? Natürlich die Container id von meinem Container. Oder ist da noch was zu beachten. Sorry für die Fragen.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.528
Punkte für Reaktionen
416
Punkte
103
Der Befehl muss in einer Zeile eingegeben werden. Natürlich muss der Platzhalter dabei durch die echte ContainerId ersetzt werden.

Was man zurück bekommt ist den Ort an dem das "zusammengesetzte" Dateisystem (aus Image-Layern + Schreibschicht des Containers selbst) liegt.
Natürlich sollte der Container dazu ausgeschaltet sein, sonst haut es mit der Datenkonsitenz wieder nicht hin.
 

diba

Benutzer
Mitglied seit
23. Okt 2021
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Vielen Dank erst einmal. Ich werde es mal ausprobieren und melde mich dann nochmal zurück.

Gruß Dirk
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.117
Punkte für Reaktionen
256
Punkte
129
Wie andere Datenbanken kann auch influxdb Backups.
Also mounte dir ein Temp Verzeichnis im alten Container rein, geh in den Container und dann mach dort ein Backup rein.

Neuen Container mit Data bzw. Config Verzeichnis nach außen mounten. DB starten, config ggf. anpassen und dann Backup einspielen.

Alles andere macht ja keinen konsistenten Zustand wenn du was rauskopiert während der Container läuft.
 
  • Like
Reaktionen: geimist und haydibe

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.528
Punkte für Reaktionen
416
Punkte
103
Alles andere macht ja keinen konsistenten Zustand wenn du was rauskopiert während der Container läuft.
Jepp. Wobei mein Vorschlag war es aus dem vom Graphdriver bereitgestellten Verzeichnis zu ziehen wenn der Container aus ist - das sollte generisch funktionieren. Ein Backup aus der Anwendung heraus ist natürlich deutlich besser und jederzeit vorzuziehen.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat