NEWS
Backitup-Adapter Sicherung von einem anderen Redis-Server?
-
Moin,
ich möchte mein ioBroker auf Redis umstellen.
Aktuell benutze ich ein Dockersystem auf einer Synology, aber ich denke die Frage bezieht sich auch auf Standardinstallationen, wo Redis nicht lokal läuft.Ich habe eine iobroker-Installation im Docker und einen weiteren Docker mit Redis laufen.
Die Kommunikation funktioniert.
Jetzt würde ich gerne mit dem Backitup-Adapter auch Redis sichern.
Ist dies überhaupt möglich oder nur bei lokaler Redisinstallation?
Wenn ja, was muss ich beim Pfad eintragen?
Ich habe einfach mal:172.18.0.3:6379
versucht, aber dann kommt im Logfile bei einer Sicherung nur:[DEBUG] [redis] - Start Redis Backup ... [DEBUG] [redis] - Try deleting the old redis tmp directory: "/opt/iobroker/backups/redistmp" [DEBUG] [redis] - old redis tmp directory "/opt/iobroker/backups/redistmp" successfully deleted [DEBUG] [redis] - Created new redistmp directory
Und passiert nichts mehr, läuft jetzt schon über 10min.
-
@tugsi
Hast du in der Zwischenzeit eine Loesung gefunden?
Ich habe genau die gleiche Konstellation und komme aktuell nicht weiter.
Gruesse
Thomas -
@calliou1234 Die Remote Sicherung ist für Backitup geplant.
Nachteil ist aktuell hier noch, dass ein Restore per Remote nicht möglich ist -
@calliou1234
Keine direkte Lösung, im Grunde hatte ich auch bei der Frage einen kleinen Gedankenfehler.Denn der Redis-Server ist ja ein eigener Dockercontainer und das /data-Verzeichnis liegt ja schon auf mein /Volume1/docker/redis/data .
Somit liegt es auf einer Platte im RAID-Verbund, ist also da schon mal etwas sicherer.
Dann schau mal in Dein Log vom Redis, dort schreibt er alle 1-2min rein, dass er aufgrund der Menge an Daten dies einmal wegschreibt und zwar als Datei in dieses /data-Verzeichnis dump.rdb.
Hier haben wir deine Sicherung, die macht er quasi immer selber schon.Ja Redis arbeitet im RAM und legt alle Zustände im RAM und ist dadurch schneller, aber er schreibt einen dump ab und zu ins Datenverzeichnis.
Dieses könntest Dir nehmen und zusätzlich auch Wegspeichern.Machen wir uns nichts vor, der Backitup wird einmal am Tag angestossen (bei mir) und sichert also einmal den Zustand und alles andere, wenn ich Pech habe, ist mein Backup 23h59min alt, aber besser wie gar nichts.
Rücksicherung geht ganz einfach.
Rediscontainer aufsetzen, das dump.rdb und die redis.conf in das Datenverzeichnis kopieren (also alles das was vorher auch da drin war) und dann starten und schon läuft er mit den alten Werten.
Du kannst zusätzlich auch noch Redis-cli im ioBroker-Container installieren (ist mit bei den toolsapt-get install redis-tools
und dann baust Dir ein Script mit einem Exec-Befehl:
redis-cli -u 'redis://redis:6379' --rdb /opt/iobroker/backups/your_backup.rdb
//redis ist der Name deines Redis-Container (ausser der heißt bei dir anders)
Port 6379 ist Standard, ausser du hast geändert
Das Verzeichnis /opt/iobroker/backups/ gibt es schon und da schiebst es einfach rein.Wenn es brauchst, kopierst es wie oben beschrieben einfach rein und nennst es dump.rdb
So habe ich es gelöst, etwas unkonventionell, aber klappt.
-
Danke für die ausführliche Antwort...
Leider hab ich wohl bei der Installation des Redis Containers das Data Verzeichnis nicht nach aussen gemountet, d.h. ich komme da nicht dran.
Kann ich das nachtäglich noch machen?
-
@calliou1234
Ja klar kannst das nachträglich machen, musst aber dafür den Container stoppen und anpassen und dann Neustarten.Buanet hat auf seiner Seite eine gute Anleitung dazu:
https://smarthome.buanet.de/2020/12/redis-container-unter-portainer-bereitstellen/Da der Part mit:
Unter „Volumes“ binden wir unser Datenverzeichnis ein, in dem später die Redis Datenbank persistent gespeichert wird. Nach einem Klick auf „map additional volume“ können wir den Dateipfad innerhalb des Containers definieren. Für Redis ist dies „/data“. Durch einen Kick auf „Bind“ wählen wir die Option ein Verzeichnis einzubinden, anstatt ein Docker Volume zu verwenden.Da ich mal wieder auf meiner virtuellen DiskStation unterwegs bin und einen lokalen Ordner als Pfad angeben möchte, klicke ich auf „Bind“ und trage meinen lokalen Pfad zu meinem vorbereiteten Ordner auf dem Docker Host „/volume1/docker/redis_data“ ein.
Wenn Du kein Portainer benutzt, geht das auch mit dem Dockermanager in Synology, da auch unter Volume.
-
@tugsi
Super hat geklappt.
Besten Dank!!!