5
(21)

Raspberry Pi Influxdb Backup – Datenbank ganz einfach sichern

Erstellt / aktualisiert

wichtige Informationen...

Affiliate - Offenlegung

Auf meiner Seite verwende ich sogenannte Affiliate-Links, diese sind mit einem gekennzeichnet, damit du diese auch direkt erkennen kannst.
Sobald du über so einen Link das Produkt kaufen würdest, erhalte ich möglicherweise eine Provision vom jeweiligen Anbieter. Außerdem entstehen für Dich natürlich keine zusätzlichen Kosten!
Mich unterstützt du damit aber enorm und trägst dazu bei, dass es auch in Zukunft weitere Guides und Vorstellungen von mir hier geben wird.

Ich empfehle nur Tools / PlugIns / Anbieter / Produkte, hinter denen ich auch wirklich stehe, bzw. bei denen ich auch einen Mehrwert sehe.

DarkWolfCave.de ist Teilnehmer des Amazon-Partnerprogramms, das zur Bereitstellung eines Mediums für Webseiten konzipiert wurde, mittels dessen durch die Platzierung von Partner-Links zu Amazon.de Entgelte verdient werden können.


ACHTUNG! Bitte lesen!

Du benutzt das hier Gezeigte natürlich, wie immer, auf eigenes Risiko!
Ich habe alles selbst durchgeführt und mir mein System nicht zerschossen oder sonst irgendwelche negativen Auffälligkeiten bemerkt.

Aber dennoch… Backups sind immer gut….
Für WordPress-Backups am besten mit UpdraftPlus

Ich übernehme keine Haftung für Schäden jeglicher Art am System, der Hardware oder der Katze…. :-P


DarkWolfCave.de

Raspberry Pi Influxdb Backup – Datenbank ganz einfach sichern

Wofür braucht man ein InfluxDB Backup eigentlich?
Du benutzt deinen Raspberry Pi, um dort eine InfluxDB Datenbank laufen zu lassen, und fragst dich, was mit deinen Daten passiert, wenn zum Beispiel deine SD-Karte das Zeitliche segnet?
Naja…sie wären dann weg…
Um dies zu verhindern, zeige ich dir in diesem Artikel, wie du deine InfluxDB ganz einfach sichern kannst

DarkWolfCave.de

Raspberry Pi Influxdb Backup & Restore

Raspberry Pi Influxdb Backup für v1.8 auf YouTube

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

Warum ein influxdb Backup?

Das beantworte ich mal ganz kurz und knapp: Weil es deine Daten sind und du sie nicht verlieren willst!
Es stellt sich nicht die Frage ob jemals ein Datencrash auftauchen wird, sondern nur die Frage WANN er auftaucht. Und ob du dann ein Backup zur Stelle hast….
Falls du noch mehr Gründe benötigst:

  • Schutz vor Datenverlust: Backups schützen deine Datenbank vor Datenverlust, falls Hardwareprobleme, Stromausfälle oder andere unvorhergesehene Ereignisse auftreten.
  • Wiederherstellungsmöglichkeit: Wenn deine Datenbank durch ein unvorhergesehenes Ereignis beschädigt wird, kannst du sie mit Hilfe eines Backups wiederherstellen.
  • Redundanz: Backups können dazu verwendet werden, eine redundante Kopie deiner Datenbank zu erstellen, die auf einer anderen Maschine oder einem anderen Datenträger gespeichert wird. Dadurch wird sichergestellt, dass deine Daten immer verfügbar sind, auch wenn die primäre Speicherlösung ausfällt.
  • Archivierung: Wenn du gesetzliche Anforderungen oder Datenschutzbestimmungen einhalten musst, kann das Archivieren von Backups eine wichtige Maßnahme sein, um sicherzustellen, dass deine Daten langfristig verfügbar und sicher aufbewahrt werden.
  • Migration: Du kannst über ein Backup deine Daten auch auf eine andere Umgebung migrieren. Zum Beispiel von einem 32bit Raspberry auf einen neuen 64bit Raspberry.

Du wirst hier einen groben Überblick finden.
Allerdings biete ich dir auch noch etwas mehr Support an:

  • Du benötigst persönlichen Support
  • Du möchtest von Beginn an Unterstützung bei deinem Projekt
  • Du möchtest ein hier vorgestelltes Plugin durch mich installieren und einrichten lassen
  • Du würdest gerne ein von mir erstelltes Script etwas mehr an deine Bedürfnisse anpassen

Für diese Punkte und noch einiges mehr habe ich einen limitierten
VIP-Patreon Tarif
eingerichtet. Falls er dir dort zurzeit nicht angeboten wird,
kontaktiere mich bitte über Discord und wir finden eine Lösung!

influxdb1 8 e1676128949187

Raspberry Pi – Influxdb Backup für v1.8

Es gibt Unterschiede zwischen Influxdb v1.8 und Influxdb v2.x – auch beim Backup – daher achte auf die von dir genutzte Version.

Hier geht es jetzt erst einmal um das Backup der Influxdb v1.8.

Da sich meine anderen Artikel fast immer auf eine Docker-Installation beziehen, werde ich auch hier die notwendigen Schritte für ein solches Szenario aufzeigen und erklären.
Allerdings sind die Befehle für die influxdb auch innerhalb des Docker-Container dieselben. Solltest du also deine Datenbank direkt installiert haben, denke dir einfach die Docker Befehle weg und es sollte dann auch funktionieren 😉

Beginnen wir also mit dem üblichen “ersten” Schritt: SSH-Verbindung zu deinem Raspberry/Linux System aufbauen. Wer mich kennt weiß was jetzt kommt: Ich empfehle dafür MobaXterm! Es ist einfach ein wirklich geniales Tool. Und nein, ich bekomme kein Geld dafür!
Natürlich kannst du auch Putty oder irgend ein anderes Tool benutzen.

Sobald du auf deinem System bist, wo Docker und influxdb v1.8 installiert ist, schauen wir uns zuerst die laufenden Container an:

docker ps
Influxdb Backup - docker ps

Je nach laufenden Container kann das sehr schnell unübersichtlich werden.
Da wir aber nur den Namen, bzw. die ContainerID benötigen, lassen wir uns einfach weniger Informationen anzeigen:

docker ps --format "{{.ID}} : {{.Names}} : {{.Image}} : {{.State}}"
Influxdb Backup - docker ps --format

Suche dir jetzt die influxdb heraus und merke dir die ID. In meinem Fall wäre es die 4128eabecdc2.
Mit dieser ContainerID starten wir jetzt gleich das Backup. Es gibt hier zwei Varianten wie du dieses durchführen kannst.

Alle Datenbanken im influxdb Backup sichern

Die Backups erzeugen einzelne Dateien und werden innerhalb des Containers gespeichert. Ich nehme hier den Pfad /opt/influxdb/data/backup/. Keine Sorge sollte dieser bei dir nicht vorhanden sein, denn der Backup-Prozess würde ihn anlegen.

Um alle eingerichteten (eigene und von influxdb benötigte) Datenbanken in einem Rutsch zu sichern, genügt folgender Befehl. Bedenke aber, dass je nach Menge von Datenbanken und Daten, dieser Vorgang einiges an Zeit benötigen könnte. Außerdem musst du natürlich die ID deiner influxdb nehmen:

docker exec -it 4128eabecdc2 influxd backup -portable /opt/influxdb/data/backup/

Nur bestimmte Datenbanken im influxdb Backup sichern

Du kannst auch nur ein Backup einer bestimmten Datenbank starten.
Solltest du genau wissen wie diese heißt, dann überspringe den nächsten Schritt einfach.
Ansonsten schauen wir uns jetzt erst einmal an, wie wir herausfinden können, wie unsere Datenbanken eigentlich heißen.

Auch hierzu benötigen wir die ContainerID von dem influxdb-Container.
In meinem Fall ist das die 4128eabecdc2. Mit dieser starten wir jetzt einfach eine influx-Shell:

docker exec -it 4128eabecdc2 influx
image 137

Du bist dann auch schon direkt in der influxdb-Umgebung. Zu erkennen an dem “ > “.
Hier kannst du jetzt show databases eingeben und mit Return abschicken. Du siehst dann alle angelegten Datenbanken:

Influxdb Backup - databases


Merke dir den Namen deiner Datenbank die du sichern willst, und verlasse die Umgebung mit exit.

Jetzt wo wir alle notwendigen Informationen zusammen haben, können wir auch endlich den influxdb Backup-Prozess starten.

Wie weiter oben schon erwähnt, wird das Backup innerhalb des Containers gespeichert. In meinem Beispiel unter /opt/influxdb/data/backup/. Sollte dies bei dir nicht existieren, werden die Ordner automatisch angelegt.
Und denke bitte daran, dass du die ContainerID und den Namen der Datenbank an deine Umgebung anpassen musst:

docker exec -it 4128eabecdc2 influxd backup -portable -database raspberry_live /opt/influxdb/data/backup/

Je nach Menge der Daten kann der Vorgang ein wenig Zeit in Anspruch nehmen.

Die influxdb Backup Daten aus dem Container holen

Egal ob du jetzt eine bestimmte oder alle Datenbanken gesichert hast, die Daten liegen aktuell noch in dem influxdb Container. Hier nützen sie uns aber nicht wirklich was und wären bei einem Ausfall / Neustart des Containers einfach weg.

Daher holen wir sie jetzt aus dem Container heraus und sichern sie wo wir wollen.
Als Beispiel nehme ich den Ordner /home/pi/backup auf dem Host.
Du kannst natürlich auch jeden anderen verfügbaren Ordner bei dir benutzen. Vielleicht sogar direkt auf einem externen Speicherplatz? Einer Synology NAS? Der Mount muss natürlich vorhanden sein 😉

Der folgende Befehl wird unsere Backup-Daten aus dem Docker-Container lokal auf unseren Host kopieren. Solltest du meinen Beispielen bisher gefolgt sein, kannst du den Pfad /opt/influxdb/data/backup/ so übernehmen. Lokal lege ich die Daten unter: /home/pi/backup ab. Falls diese Pfade bei dir abweichen, musst du sie dann natürlich in dem Befehl anpassen.
Auch die ContainerID wird bei dir eine andere sein:

docker cp 4128eabecdc2:/opt/influxdb/data/backup/ /home/pi/backup

Sobald alle Dateien kopiert wurden kannst du dich glücklich schätzen, denn jetzt hast du ein influxdb Backup deiner Datenbanken. Herzlichen Glückwunsch! 😛

Aber halt… was wäre ein Backup ohne ein Restore? Natürlich kannst du ab jetzt einfach ab und an Backups erstellen, und dich erst bei einem Datenverlust schlau machen, wie du deine Daten aus dem Backup zurück in die Datenbank bekommst.

Allerdings wäre das keine gute Taktik. Denn du solltest immer wieder mal prüfen, ob der Restore Prozess auch wirklich funktioniert. Was nützt dir ein Backup, wenn vielleicht bei diesem Prozess etwas schief gelaufen ist und sich gar nicht mehr widerherstellen lässt?

Der influxdb Restore Prozess – Auch ohne Crash wichtig

Wie prüft man jetzt ob die Backup-Daten soweit ok sind und der Restore-Prozess auch funktioniert?
Da wir Docker benutzen, ist dies sogar sehr einfach und schnell erledigt. Ich liebe diese Container 🙂

Denn wir wollen jetzt gar nicht erst alles löschen und dann wieder in die Datenbank einspielen – das wäre extrem blöd wenn die Backup-Daten doch nicht zu gebrauchen sind – sondern erstellen uns einfach ganz fix einen neuen influxdb-Container und führen da den Restore-Prozess aus.

Die Docker Testumgebung

Auf deiner Umgebung, wo Docker installiert ist, werden wir jetzt einen neuen Container erzeugen. Hier führen wir unseren influxdb Restore-Prozess durch und prüfen ob alles gut aussieht.
Dazu ändern wir lediglich den Port etwas ab, denn die dürfen nicht bereits verwendet werden. Solltest du einen Fehler mit den von mir genannten Port erhalten, ändere diesen einfach in dem Befehl ab:

docker run -p 8089:8089 \
-e INFLUXDB_ADMIN_USER="" \
-e INFLUXDB_ADMIN_PASSWORD="" \
-v influxdb:"/var/lib/test/" \
influxdb:1.8

Danach suchen wir uns die entsprechende ContainerID heraus…:

docker ps --format "{{.ID}} : {{.Names}} : {{.Image}} : {{.State}}"

…und kopieren unsere influxdb Backup-Daten in diesen Container (achte auf die Pfade und passe die ID an):

/home/pi/backup/backup/ = Der Pfad wo du auf deinem Host die Backup Dateien gespeichert hast
06cb7da18126 = Passe diese ContainerID entsprechend an. Es muss die ID von dem gerade angelegten Container sein. NICHT die von deiner eigentlichen influxdb!
/home/user/ = ist relativ egal. Dies ist der Pfad wo wir die Dateien in den Container ablegen. Die Ordner werden entsprechend erstellt

docker cp /home/pi/backup/backup/ 06cb7da18126:/home/user/

Jetzt folgt der eigentliche “Restore”-Befehl. Dieser fügt die gesicherten Daten in die influxdb hinein.
Bei nur einer direkt angegebenen Datenbank wäre es folgender Befehl:

06cb7da18126 = ID deines Test-Container
-db raspberry_live = Name der Datenbank die du gesichert hast. Hast du weiter oben ALLE gesichert nimm den nächsten Befehl.
/home/user/ = Der Pfad zu den Backup-Dateien IN dem Test-Container

docker exec -it 06cb7da18126 influxd restore -portable -db raspberry_live /home/user/

Und falls du keine bestimmte Datenbank, sondern alle, gesichert hast:

docker exec -it 06cb7da18126 influxd restore -portable /home/user/

Auch dies wird je nach Anzahl der Datenbanken und der eigentlichen Daten ein wenig Zeit in Anspruch nehmen. Sobald der Vorgang beendet wurde, prüfen wir auch direkt ob es funktioniert hat.

Dazu starten wir, in dem Test-Container, die influxdb Umgebung (denk an die richtige ContainerID) und lassen uns erstmal alle Datenbanken anzeigen:

docker exec -it 06cb7da18126 influx
show databases

Sind deine hier nicht vorhanden = doof gelaufen. Dann hat was nicht geklappt und du solltest nochmal alle Schritte überprüfen. Vielleicht sogar das influxdb Backup wiederholen. Bei Problemen kannst du aber auch gerne hier oder in Discord fragen.

Deine Datenbanken sind da? Perfekt. Dennoch prüfen wir auch noch, ob wirklich Daten vorhanden sind. Dazu aktivieren wir jetzt die entsprechende Datenbank:

use raspberry_live

Falls du nicht genau weißt wonach du jetzt suchen könntest, kannst du dir alle Measurements anzeigen lassen:

show measurements
Influxdb Backup - measurements

Wir suchen jetzt einfach mal nach cpu_temperature Daten der letzten 2 Tage (Zeitraum musst du natürlich auf deine Gegebenheiten anpassen):

SELECT * FROM cpu_temperature WHERE time > now() - 2d
Influxdb Backup - Daten

Mit exit verlässt du den Container wieder.

So kannst du, zumindest grob, überprüfen ob dein influxdb Backup erstellt wurde und der Restore Prozess auch funktioniert hat.
Dies solltest du immer wieder mal durchführen. Einfach um sicherzustellen, dass dein influxdb Backup auch weiterhin funktioniert.

Zum Schluss werden wir den Test-Container wieder löschen (GANZ WICHTIG! Nimm die richtige Container-ID von dem Test-Container!):

docker stop 06cb7da18126
docker rm 06cb7da18126

Schritt für Schritt zum Backup

  • SSH zu deinem Raspberry / Linux
  • docker ps
  • docker exec -it ID_DEINER_INFLUXDB influx
  • optional show databases (falls du nur eine Datenbank sichern willst)
    Dann deren Namen merken und exit eingeben
  • docker exec -it ID_DEINER_INFLUXDB influxd backup -portable /opt/influxdb/data/backup/ (speichert das Backup innerhalb des Containers)
  • optionaldocker exec -it ID_DEINER_INFLUXDB influxd backup -portable -database NAME_DER_DATENBANK /opt/influxdb/data/backup/ (falls du nur eine bestimmte Datenbank sichern willst)
  • docker cp ID_DEINER_INFLUXDB:/opt/influxdb/data/backup/ /home/pi/backup (kopiert das gesicherte influxdb Backup aus dem Container lokal zum Host)
influxdb1 8 e1676128949187

Das influxdb Backup Script für v1.x

Du möchtest das influxdb Backup ein wenig automatisieren und es vielleicht sogar regelmäßig starten lassen? Kein Problem. Ein ganz einfaches Skript, welches dir bei dem Backup deiner influxdb v1.8 hilft, stelle ich dir jetzt vor.

Du kannst das sh-Script zum Beispiel in dein Crontab hinterlegen und es jede Nacht ausführen lassen. Wie genau ist allerdings ein anderes Thema.
Hier geht es lediglich um das influxdb Backup Script:

#!/bin/bash

# Variablen anlegen

host_local="/home/pi/backup/" #Pfad wo deine Backup-Datein lokal auf deinem Host gespeichert werden sollen

NOW=$(date +"%d%m%Y")
RED='\033[31m'
NC='\033[0m'


# Docker listet die Container auf und wir schränken die Ausgabe auf influxdb:1. ein.
# Da wir nur Container mit einem influxdb v1.x haben möchten. Für die v2.x würde dieses Skript nicht funktionieren

ps_output=$(docker ps --format "{{.ID}}:{{.Names}}:{{.Image}}:{{.State}}" | grep "influxdb:1.")

# prüfen ob überhaupt eine influxdb v1.x gefunden wurde
if [ -z "$ps_output" ]; then
  echo "Keine passenden Container gefunden"
  exit 1
fi

# Schleife über jede Zeile der Ausgabe
while IFS=: read -r id name image status; do
  # Speichern der Werte in separaten Variablen
  container_id="$id"
  container_name="$name"
  container_image="$image"
  container_status="$status"
  backup_folder="${container_id}_${NOW}_backup"

  echo "$backup_folder"
  echo -e "Starte Backup-Prozess für ContainerID: ${RED}$container_id ${NC} mit dem Namen: ${RED}$container_name${NC}"
  echo "Bitte warten, erstelle Backup...."
  docker exec $container_id influxd backup -portable -db raspberry_lab /opt/influxdb/data/$backup_folder/
  echo "Backup erstellt!"
  echo -e "Kopiere Backup aus Container: ${RED}$container_id ${NC} nach: ${RED}$host_local ${NC}  Bitte warten...."
  docker cp $container_id:/opt/influxdb/data/$backup_folder/ $host_local

  num_files_container=$(docker exec ${container_id} find /opt/influxdb/data/${backup_folder}/ -type f | wc -l)
  num_files_host=$(find ${host_local}${backup_folder} -type f | wc -l)

echo $num_files_container
echo $num_files_host

  if [ $num_files_container -eq $num_files_host ]; then
        echo "Kopieren erfolgreich"
        echo -e "Lösche Backup in Container:${RED}$container_id ${NC}-${RED}$container_name${NC}-Pfad:/opt/influxdb/data/$backup_folder/"
        docker exec $container_id rm -r /opt/influxdb/data/$backup_folder/
        echo "Löschen erfolgreich"
  else
        echo "Die Ordner haben eine unterschiedliche Anzahl an Dateien. Bitte manuell prüfen!"
        echo -e "${RED} Pfad:/opt/influxdb/data/$backup_folder/ enthält $num_files_container Dateien${NC}"
        echo -e "${RED} und Pfad: $host_local/$backup_folder enthält $num_files_host Dateien${NC}"
        exit 1
  fi

  echo "Backup erfolgreich"

done <<< "$ps_output"

Influxdb Backup für v2.x

Es gibt influxdb in Versionen v1.x und v2.x – diese unterscheiden sich grundlegend! Hier wurde zwischen den Versionen die SQL-Language komplett geändert. Somit funktionieren zum Beispiel auch alte Grafana-Dashboards nicht mehr und auch einige Scripte, die nur für v1.x geschrieben wurden, sind mit der v2.x dann nicht mehr funktionstüchtig.
Daher habe ich dazu auch einen eigenen Artikel geschrieben und ein Grafana-Dashboard für v2.x angepasst.

Bei dem Backup und Restore Prozess sieht es ähnlich aus. Aber keine Sorge, auch da versuche ich dir Schritt für Schritt aufzuzeigen was du machen musst.

Beginnen wir mit dem wichtigsten: Du brauchst einen Token! Da du dich über ein Backup schlau machst, wirst du also schon Daten auf einer influxdb v2.x Datenbank haben. Somit hast du auch irgendwo bereits einen Token hinterlegt.
Denn einmal generiert, kannst du ihn dir nicht mehr auf der WebGui anzeigen lassen!

Falls es dir so geht wie mir…und du ihn auch nicht mehr weißt, oder vergessen hast WO du ihn notiert hast….gibt es eine Möglichkeit. In der Regel wirst du irgendwo telegraf eingesetzt haben, um Daten an deine influxdb zu senden. Und in derer config-Datei ist der Token hinterlegt.

Also verbinde dich per SSH mit deinem System wo du telegraf installiert hast.
Dort wechselst du in das Verzeichnis /etc/telegraf und suchst nach “token“:

cd /etc/telegraf/
cat telegraf.conf | grep "token"

Jetzt solltest du deinen Token sehen und kopieren können:

Influxdb Backup - telegraf

Wechsel nun wieder zurück zu deinem System auf dem Docker und die influxdb v2.x läuft.
Hier suchen wir uns die entsprechende ContainerID heraus:

docker ps --format "{{.ID}}:{{.Names}}:{{.Image}}:{{.State}}" 
Influxdb v2.x Backup

In meinem Fall wäre es die “0478cefca792“, bei dir musst du die entsprechende ID kopieren.
Bevor wir das influxdb Backup starten werden, solltest du dir überlegen an welchem Ort du die Dateien sichern möchtest.

Hast du vielleicht sogar beim Einrichten des influxdb-Containers bereits ein Verzeichnis eingebunden? Prüfen kannst du es mit diesem Befehl und deiner ContainerID:

docker inspect 0478cefca792 | grep -A 2 "Binds"

Die Ausgabe sollte in etwas so aussehen:

Influxdb Backup - Binds docker inspect

In meinem Fall habe ich bereits den Container-Pfad /var/lib/influxdb2 mit meinem lokalen Pfad (außerhalb des Containers) /opt/influxdb_2x verbunden. Somit gebe ich bei dem influxdb Backup-Befehl einfach den entsprechenden Container-Pfad an und werde die Daten außerhalb des Containers sehen. Hast du keinen Mount angelegt, auch nicht schlimm, überspringe den nächsten Schritt und schaue weiter unten nach.

Wir starten jetzt mit der richtigen ContainerID, deinem Token und dem gemounteten Pfad das influxdb Backup

docker exec 0478cefca792 influx backup /var/lib/influxdb2/backups \
  -t DEIN-TOKEN-FÜR-DIE-INFLUXDB-V2.x

Im Idealfall startet jetzt das Backup, dies benötigt einige Zeit und du findest die Dateien auch außerhalb deines Containers.

image 144

Auf meinem Host unter /opt/influxdb_2x/ wurde jetzt ein Ordner mit dem Namen backups erstellt und die gesicherten Daten abgelegt:

Influxdb Backup - Daten Container

Falls du bei dem “mount” leer ausgegangen bist, kannst du folgender Weise vorgehen. Natürlich wieder mit deiner ContainerID für influxdb v2.x und deinem Token. Der Pfad wird dann innerhalb des Containers angelegt, sollte er nicht existieren:

docker exec 0478cefca792 influx backup /home/backups \
-t DEIN-TOKEN-FÜR-DIE-INFLUXDB-V2.x

Da wir unser influxdb Backup aber außerhalb des Containers haben wollen, kopieren wir diese einfach lokal auf unseren Host. In Dem Beispiel nach /home/pi/backup/ auf dem Host:

docker cp 0478cefca792:/home/backups/ /home/pi/backup

Damit der Container nicht irgendwann “platzt” solltest du die Backup Dateien in dem Container wieder löschen: (Nimm die richtige ContainerID und den richtigen Pfad – weg ist weg….)

docker exec 0478cefca792 rm -r /home/backups/

Wie ich schon bei dem influxdb Backup für v1.x geschrieben habe, nützt dir ein Backup gar nichts, wenn es kaputt ist. Daher solltest du in regelmäßigen Abständen deine Backup-Dateien und den Restore-Prozess überprüfen.

Restore für influxdb v2.x und prüfen des Backups

Auch hier machen wir es uns einfach – dank Docker – und starten einfach einen neuen Test-Container mit einem influxdb v2.x Image:

docker run --name test_restore -p 8089:8089 influxdb:2.6.1

Jetzt bleibt der Container in deinem Terminal geöffnet bist du STRG+C drückst. Du kannst das jetzt so lassen und mit einem zweiten Terminal-Fenster weiterarbeiten oder du gibst nach dem STRG+C dann nochmal docker start test_restore ein.

Wir könnten zwar einfach mit dem Namen “test_restore” weitermachen, aber es schadet nie einige Befehle zu vertiefen und uns die ContainerID herauszusuchen:

docker ps --format "{{.ID}} : {{.Names}} : {{.Image}} : {{.State}}" 
image 146

In meinem Fall wäre das die ContainerID: 24457a588aef für die neue test_restore Umgebung.
Damit wir gleich überhaupt erfolgreich Daten einspielen können, müssen wir influxdb v2.x erst einmal “Pseudo-Initialisieren” (du kannst das WIRKLICH so übernehmen und musst bis auf die ContainerID nichts anpassen):

docker exec 24457a588aef influx setup \
  --username "TestUser" \
  --password "TestPasswd" \
  --org "TestOrg" \
  --bucket "TestBucket" \
  --skip-verify \
  --force \
  --token MySecR37t0keNForTh3T3stDatabas3

Keine Fehlermeldung erhalten? Prima! Dann kopieren wir jetzt unser Backup in den neuen Container. Auch hier mit deiner ContainerID des Test-Containers und dem Pfad wo du auf deinem Host die Backup-Dateien liegen hast. In meinem Beispiel wäre das /home/pi/backup/:

docker cp /home/pi/backup/ 24457a588aef:/home/user/backups/

Jetzt starten wir endlich den eigentlichen influxdb Restore-Prozess:

docker exec 24457a588aef influx restore \
  /home/user/backups/ \
  --full

Es wird auch der Token und alle anderen Config-Einstellungen überschrieben!
Alle weiteren Schritte müssen ab jetzt wieder mit deinem “echten” Token aus dem Backup durchgeführt werden!

Also legen wir los und schauen uns an, ob auch wirklich Daten eingespielt wurden.
Wir lassen uns erst einmal alle Measurements anzeigen. Dafür musst du deinen Token, deine org und dein Bucket angeben.

Du kennst deine org nicht mehr? Kein Problem: (mit deiner ContainerID und deinem echten Token)

docker exec 24457a588aef influx org ls --token DEIN-TOKEN-FÜR-DIE-INFLUXDB-V2.x
Influxdb Backup - org

Dein Bucket kennst du auch nicht mehr? Auch kein Thema, einfach deine gerade herausgefundene org hier eintragen und die ID und den Token anpassen:

docker exec 24457a588aef influx bucket ls --org dwc --token DEIN-TOKEN-FÜR-DIE-INFLUXDB-V2.x
Influxdb Backup - bucket

Jetzt haben wir alle Informationen zusammen um uns die Measurements anzeigen lassen zu können. Du musst hier anpassen:
– die Container ID
org (siehe zwei Schritte höher)
token (DEIN-TOKEN-FÜR-DIE-INFLUXDB-V2.x)
bucket (siehe einen Schritt höher)

docker exec 24457a588aef influx query \
--org dwc \
--token DEIN-TOKEN-FÜR-DIE-INFLUXDB-V2.x \
'import "influxdata/influxdb/schema" schema.measurements(bucket: "dwc")'
Influxdb Backup - schema.measurements

Wir schauen uns an, ob für cpu_temperature Daten vorhanden sind. Hier musst du das natürlich auf deine Bedürfnisse anpassen. Sammelst du keine CPU Temperatur Daten, findest du hier natürlich nichts. Auch den Zeitrahmen musst du vielleicht ändern:

docker exec 24457a588aef influx query \
--org dwc \
--token DEIN-TOKEN-FÜR-DIE-INFLUXDB-V2.x \
'from(bucket: "dwc") |> range(start: -1d) |> filter(fn: (r) => r._measurement == "cpu_temperature")'
image 150

Herzlichen Glückwunsch, du hast erfolgreich ein Backup durchgeführt und bestätigt, dass es funktioniert hat und Daten enthält.

Zum Schluss werden wir den Test-Container wieder löschen (GANZ WICHTIG! Nimm die richtige Container-ID von dem Test-Container!):

docker stop 24457a588aef
docker rm 24457a588aef
Avatar-Foto

Ich bin ein 1977 geborener Technik-Nerd. Mein erster Gefährte in der digitalen Welt war ein C64, der den Grundstein für meine Leidenschaft für Technologie legte. So wurde mein Hobby zum Beruf, und ich begann eine Ausbildung zum IT-Systemelektroniker. Selbst in meiner knappen Freizeit widme ich mich weiterhin meiner Leidenschaft fürs Gaming, verschiedene Programmiersprachen und andere IT-bezogene Themen. Ansonsten mag ich Hunde und bin fasziniert von Wölfen!

Gefällt dir der Beitrag?
Hinterlasse gerne ein paar Sterne!

Wie hilfreich war dieser Beitrag für Dich?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 5 / 5. Anzahl Bewertungen: 21

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass der Beitrag für dich nicht hilfreich war!

Lasse uns diesen Beitrag verbessern!

Wie können wir diesen Beitrag verbessern?

Abonnieren
Benachrichtige mich bei
guest
8 Kommentare
Neueste
Älteste
Inline Feedbacks
Alle Kommentare anzeigen
Inhalt