So sichern Sie Ihre Redis-Daten und stellen sie unter Ubuntu wieder her 14.04

Einführung

Redis ist ein speicherinterner Schlüsselwert-Cache und -Store (eine Datenbank), der auch dauerhaft auf der Festplatte gespeichert werden kann. In diesem Artikel erfahren Sie, wie Sie eine Redis-Datenbank auf einem Ubuntu 14.04-Server sichern.

Redis-Daten werden standardmäßig in einer + .rdb + - Datei auf der Festplatte gespeichert. Dies ist eine Momentaufnahme Ihres Redis-Datasets. Der Schnappschuss wird in festgelegten Intervallen erstellt und eignet sich daher perfekt für Ihre Sicherungen.

Voraussetzungen

Um die Schritte in diesem Lernprogramm auszuführen, benötigen Sie:

  • Ein Ubuntu 14.04 Server

  • Installieren Sie Redis. Sie können nur die * master * -Einrichtung unter https://www.digitalocean.com/community/tutorials/how-to-configure-a-redis-cluster-on-ubuntu-14-04 aufrufen. obwohl es genauso gut mit einem Master-Slave-Cluster funktioniert)

  • Stellen Sie sicher, dass Ihr Redis-Server ausgeführt wird

  • Wenn ein Redis-Passwort festgelegt wurde, das dringend empfohlen wird, halten Sie es bereit. Das Passwort befindet sich in der Redis-Konfigurationsdatei - + / etc / redis / redis.conf +

Schritt 1 - Suchen des Redis Data Directory

Redis speichert seine Daten in einem Verzeichnis auf Ihrem Server, das wir sichern möchten. Zuerst müssen wir wissen, wo es ist.

In Ubuntu und anderen Linux-Distributionen lautet das Redis-Datenbankverzeichnis "+ / var / lib / redis +". Wenn Sie jedoch einen von Ihnen geerbten Server verwalten und der Speicherort der Redis-Daten geändert wurde, können Sie ihn suchen, indem Sie Folgendes eingeben:

sudo locate *rdb

Alternativ können Sie es auch an der Eingabeaufforderung + redis-cli + finden. Geben Sie dazu Folgendes ein:

redis-cli

Wenn der Redis-Server nicht ausgeführt wird, lautet die Antwort:

Ausgabe

Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>

Starten Sie in diesem Fall Redis und stellen Sie die Verbindung mit den folgenden Befehlen wieder her:

sudo service redis-server start

redis-cli

Die Shell-Eingabeaufforderung sollte sich nun ändern zu:

127.0.0.1:6379>

Während Sie mit Redis verbunden sind, authentifizieren sich die nächsten beiden Befehle bei Redis und rufen das Datenverzeichnis ab:

auth

config get dir

Die Ausgabe des letzten Befehls sollte Ihr Redis-Datenverzeichnis sein:

Ausgabe

1) "dir"
2) ""

Notieren Sie sich Ihr Redis-Verzeichnis. Wenn es sich nicht um das angezeigte Verzeichnis handelt, stellen Sie sicher, dass Sie dieses Verzeichnis im gesamten Lernprogramm verwenden.

Sie können die Datenbankbefehlszeilenschnittstelle jetzt beenden:

exit

Stellen Sie sicher, dass dies das richtige Verzeichnis ist:

ls /var/lib/redis

Sie sollten eine + dump.rdb + Datei sehen. Das sind die Redis-Daten. Wenn "+ anhangslos " ebenfalls aktiviert ist, wird auch " anhangslos.aof " oder eine andere " .aof +" -Datei angezeigt, die ein Protokoll aller vom Server empfangenen Schreibvorgänge enthält.

Unter this post about Redis persistence finden Sie eine Erläuterung der Unterschiede zwischen diesen beiden Dateien. Grundsätzlich ist die + .rdb + Datei eine aktuelle Momentaufnahme, und die + .aof + Datei speichert Ihren Redis-Verlauf. Beides ist eine Sicherung wert.

Wir beginnen nur mit der "+ .rdb +" - Datei und enden mit einer automatischen Sicherung beider Dateien.

(Optional) Schritt 2 - Hinzufügen von Beispieldaten

In diesem Abschnitt können Sie einige Beispieldaten erstellen, die in Ihrer Redis-Datenbank gespeichert werden sollen. Wenn Sie bereits Daten auf Ihrem Server haben, können Sie einfach Ihre vorhandenen Inhalte sichern.

Melden Sie sich an der Befehlszeilenschnittstelle der Datenbank an:

redis-cli

Authentifizieren:

auth

Lassen Sie uns einige Beispieldaten hinzufügen. Sie sollten nach jedem Schritt die Antwort "+ OK +" erhalten.

SET shapes:triangles "3 sides"

SET shapes:squares "4 sides"

Bestätigen Sie, dass die Daten hinzugefügt wurden.

GET shapes:triangles

GET shapes:squares

Die Ausgabe ist unten enthalten:

Ausgabe

"3 sides"

"4 sides"

Speichern Sie diese Änderungen in der Datei "+ / var / lib / redis / dump.rdb +":

save

Sie können beenden:

exit

Wenn Sie möchten, können Sie jetzt den Inhalt der Sicherungsdatei überprüfen. Es sollte Ihre Daten haben, wenn auch in einer maschinenfreundlichen Form:

sudo cat /var/lib/redis/dump.rdb

/var/lib/redis/dump.rdb

REDIS0006?shapes:squares4 sidesshapes:triangles3 sides??o????C

Schritt 3 - Sichern der Redis-Daten

Jetzt, da Sie wissen, wo sich Ihre Redis-Daten befinden, ist es an der Zeit, eine Sicherungskopie zu erstellen. Von der offiziellen Redis website kommt dieses Zitat:

_ Redis ist sehr datensicherungsfreundlich, da Sie RDB-Dateien kopieren können, während die Datenbank ausgeführt wird: Die RDB wird nach der Erstellung nie geändert, und während der Erstellung wird ein temporärer Name verwendet und nur mit rename (2) atomar in ihr endgültiges Ziel umbenannt wenn der neue Schnappschuss fertig ist. _

So können Sie die Datenbankdatei sichern oder kopieren, während der Redis-Server ausgeführt wird. Angenommen, Sie sichern es in einem Verzeichnis unter Ihrem Basisordner. Die Durchführung dieser Sicherung ist so einfach wie die Eingabe:

sudo cp /var/lib/redis/dump.rdb
  • Redis speichert den Inhalt hier periodisch, was bedeutet, dass Sie keine Garantie für eine minutengenaue Sicherung haben, wenn Sie nur den obigen Befehl ausführen. * Sie müssen zuerst Ihre Daten speichern.

Wenn jedoch ein möglicherweise geringer Datenverlust akzeptabel ist, funktioniert das Sichern dieser einen Datei.

  • Speichern des Datenbankstatus *

Um eine viel aktuellere Kopie der Redis-Daten zu erhalten, ist es besser, auf "+ redis-cli +", die Redis-Befehlszeile, zuzugreifen.

Authentifizieren Sie sich wie in Schritt 1 beschrieben.

Dann geben Sie den Befehl + save + wie folgt ein:

save

Die Ausgabe sollte ungefähr so ​​aussehen:

Ausgabe

OK
(1.08s)

Verlasse die Datenbank.

Nun können Sie den oben angegebenen Befehl "+ cp +" ausführen, um sicherzugehen, dass Ihre Sicherung vollständig auf dem neuesten Stand ist.

Während der Befehl "+ cp +" eine einmalige Sicherung der Datenbank bereitstellt, besteht die beste Lösung darin, einen Cron-Job einzurichten, der den Prozess automatisiert, und ein Tool zu verwenden, das inkrementelle Aktualisierungen durchführen und bei Bedarf wiederherstellen kann die Daten.

Schritt 4 - Automatische Updates mit rdiff-backup und Cron konfigurieren

In diesem Abschnitt konfigurieren wir eine automatische Sicherung, die Ihr gesamtes Redis-Datenverzeichnis, einschließlich beider Datendateien, sichert.

Es stehen mehrere automatische Sicherungswerkzeuge zur Verfügung. In diesem Tutorial verwenden wir ein neueres, benutzerfreundliches Tool namens "+ rdiff-backup +".

+ rdiff-backup ein Kommandozeilen-Backup-Tool. Wahrscheinlich ist "+ rdiff-backup +" nicht auf Ihrem Server installiert, daher müssen Sie es zuerst installieren:

sudo apt-get install -y rdiff-backup

Nachdem es installiert ist, können Sie es testen, indem Sie Ihre Redis-Daten in einem Ordner in Ihrem Home-Verzeichnis sichern. In diesem Beispiel wird davon ausgegangen, dass Ihr Ausgangsverzeichnis "+ / home / +" lautet:

Beachten Sie, dass das Zielverzeichnis vom Skript erstellt wird, wenn es nicht vorhanden ist. Mit anderen Worten, Sie müssen es nicht selbst erstellen.

Mit der Option * –preserve-numerical-ids * werden die Eigentümer der Quell- und Zielordner identisch.

sudo rdiff-backup --preserve-numerical-ids /var/lib/redis /home//redis

Wie der Befehl "+ cp " zuvor ist dies eine einmalige Sicherung. Was sich geändert hat, ist, dass wir jetzt das gesamte Verzeichnis " / var / lib / redis " sichern und " rdiff-backup +" verwenden.

Jetzt automatisieren wir die Sicherung mit cron, sodass die Sicherung zu einer festgelegten Zeit stattfindet. Öffnen Sie dazu die System-Crontab:

sudo crontab -e

(Wenn Sie crontab auf diesem Server noch nicht verwendet haben, wählen Sie an der Eingabeaufforderung Ihren bevorzugten Texteditor aus.)

Fügen Sie am Ende der Datei den unten gezeigten Eintrag hinzu.

crontab

Dieser Cron-Eintrag führt jeden Tag um Mitternacht eine Redis-Sicherung durch. Der Schalter * –no-file-statistics * deaktiviert das Schreiben in die Datei "+ file_statistics " im Verzeichnis " rdiff-backup-data ", wodurch " rdiff-backup +" schneller ausgeführt wird und etwas weniger Zeit in Anspruch nimmt Festplattenplatz.

Alternativ können Sie diesen Eintrag verwenden, um eine tägliche Sicherung durchzuführen:

Weitere Informationen zu Cron im Allgemeinen finden Sie unter article about Cron .

Derzeit wird das Backup einmal täglich erstellt, sodass Sie morgen zum Abschlusstest zurückkehren können. Oder Sie können die Sicherungshäufigkeit vorübergehend erhöhen, um sicherzustellen, dass sie funktioniert.

Da die Dateien dem Benutzer des * redis * -Systems gehören, können Sie mit diesem Befehl überprüfen, ob sie vorhanden sind. (Stellen Sie sicher, dass Sie warten, bis die Sicherung tatsächlich ausgelöst wurde):

ls -l /home//redis

Ihre Ausgabe sollte ungefähr so ​​aussehen:

Ausgabe

total 20
-rw-rw---- 1 redis redis    70 Sep 14 13:13 dump.rdb
drwx------ 3 root  root  12288 Sep 14 13:49 rdiff-backup-data
-rw-r----- 1 redis redis   119 Sep 14 13:09 redis-staging-ao.aof

Sie haben jetzt tägliche Backups Ihrer Redis-Daten, die in Ihrem Home-Verzeichnis auf demselben Server gespeichert sind.

Schritt 5 - Wiederherstellen der Redis-Datenbank aus der Sicherung

Nachdem Sie gesehen haben, wie Sie eine Redis-Datenbank sichern, erfahren Sie in diesem Schritt, wie Sie Ihre Datenbank aus einer Sicherungsdatei "+ dump.rdb +" wiederherstellen.

Zum Wiederherstellen einer Sicherung müssen Sie die aktive Redis-Datenbankdatei durch die Wiederherstellungsdatei ersetzen. * Da dies potenziell destruktiv ist, empfehlen wir nach Möglichkeit die Wiederherstellung auf einem neuen Redis-Server. *

Sie möchten Ihre Live-Datenbank nicht mit einer problematischeren Wiederherstellung überschreiben. Das Umbenennen statt Löschen der aktuellen Datei minimiert jedoch das Risiko, selbst wenn die Wiederherstellung auf demselben Server erfolgt. Dies ist die Taktik, die in diesem Lernprogramm gezeigt wird.

Überprüfen des Inhalts der Wiederherstellungsdatei

Überprüfen Sie zunächst den Inhalt Ihrer + dump.rdb + - Datei. Stellen Sie sicher, dass die gewünschten Daten vorhanden sind.

Sie können den Inhalt der Dump-Datei direkt überprüfen. Beachten Sie jedoch, dass die Dump-Datei Redis-freundlich und nicht menschlich formatiert ist:

sudo cat /home/gilly/redis/dump.rdb

Dies ist für eine kleine Datenbank; Ihre Ausgabe sollte ungefähr so ​​aussehen:

Ausgabe

REDIS0006?shapes:triangles3 sidesshapes:squares4 sides??!^?\?,?

Wenn Ihre letzte Sicherung keine Daten enthält, sollten Sie die Wiederherstellung nicht fortsetzen. Wenn der Inhalt da ist, mach weiter.

Optional: Simulieren von Datenverlusten

Lassen Sie uns einen Datenverlust simulieren, der ein Grund für die Wiederherstellung aus Ihrer Sicherung wäre.

Melden Sie sich bei Redis an:

redis-cli

In dieser Befehlssequenz werden wir mit Redis autorisieren und den Eintrag "+ Formen: Dreiecke +" löschen:

auth

DEL shapes:triangles

Stellen wir nun sicher, dass der Eintrag entfernt wurde:

GET shapes:triangles

Die Ausgabe sollte sein:

Ausgabe

(nil)

Speichern und schließen:

save

exit

Optional: Einrichten eines neuen Redis-Servers

Wenn Sie nun die Wiederherstellung auf einem neuen Redis-Server planen, stellen Sie sicher, dass der neue Redis-Server betriebsbereit ist.

Für die Zwecke dieses Tutorials befolgen wir nur * Schritt 1 * von https://www.digitalocean.com/community/tutorials/how-to-configure-a-redis-cluster-on-ubuntu-14-04 [Redis Cluster Tutorial], obwohl Sie den gesamten Artikel lesen können, wenn Sie ein komplexeres Setup wünschen.

Wenn Sie * Schritt 2 * befolgen, bei dem Sie ein Kennwort hinzufügen und AOF aktivieren, stellen Sie sicher, dass Sie dies beim Wiederherstellungsprozess berücksichtigen.

Sobald Sie überprüft haben, dass Redis auf dem neuen Server verfügbar ist, indem Sie "+ redis-benchmark -q -n 1000 -c 10 -P 5 +" ausführen, können Sie fortfahren.

Redis stoppen

Bevor wir die Redis-Dump-Datei ersetzen können, müssen wir die aktuell ausgeführte Instanz von Redis stoppen. * Ihre Datenbank ist offline, sobald Sie Redis beenden. *

sudo service redis-server stop

Die Ausgabe sollte sein:

Ausgabe

Stopping redis-server: redis-server

Überprüfen Sie, ob es tatsächlich gestoppt ist:

sudo service redis-server status

Ausgabe

redis-server is not running

Als Nächstes benennen wir die aktuelle Datenbankdatei um.

Aktuelle dump.rdb umbenennen

Redis liest seinen Inhalt aus der Datei + dump.rdb +. Benennen wir die aktuelle Datei um, um Platz für unsere Wiederherstellungsdatei zu schaffen.

sudo mv /var/lib/redis/dump.rdb /var/lib/redis/dump.rdb.old

Beachten Sie, dass Sie + dump.rdb.old + wiederherstellen können, wenn Sie der Meinung sind, dass die aktuelle Version besser ist als Ihre Sicherungsdatei.

Wenn AOF aktiviert ist, schalten Sie es aus

AOF verfolgt jeden Schreibvorgang in die Redis-Datenbank. Da wir jedoch versuchen, eine Wiederherstellung von einem Backup zu einem bestimmten Zeitpunkt durchzuführen, möchten wir nicht, dass Redis die in seiner AOF-Datei gespeicherten Vorgänge neu erstellt.

Wenn Sie Ihren Redis-Server gemäß den Anweisungen im Redis-Cluster-Tutorial einrichten , dann ist AOF aktiviert.

Sie können auch den Inhalt des Verzeichnisses + / var / lib / redis / + auflisten. Wenn Sie dort eine + .aof + Datei sehen, haben Sie AOF aktiviert.

Benennen wir die "+ .aof " - Datei um, um sie vorübergehend aus dem Weg zu räumen. Benennen Sie jede Datei um, die mit " .aof" endet. Wenn Sie also mehr als eine AOF-Datei haben, sollten Sie die Dateien einzeln umbenennen und NICHT den folgenden Befehl ausführen:

sudo mv /var/lib/redis/*.aof /var/lib/redis/appendonly.aof.old

Bearbeiten Sie Ihre Redis-Konfigurationsdatei, um AOF vorübergehend zu deaktivieren:

sudo nano /etc/redis/redis.conf

Suchen Sie im Abschnitt "+ AOF " nach der Direktive " appendonly +" und ändern Sie sie von "" in "". Das deaktiviert es:

/etc/redis/redis.conf

appendonly

Wiederherstellen der dump.rdb-Datei

Jetzt verwenden wir unsere Wiederherstellungsdatei, die unter "+ / home // redis / dump.rdb +" gespeichert werden sollte, wenn Sie die vorherigen Schritte in diesem Lernprogramm ausgeführt haben.

Wenn Sie auf einem neuen Server wiederherstellen, ist es jetzt an der Zeit, die Datei von Ihrem Sicherungsserver auf den neuen Server hochzuladen:

scp /home//redis/dump.rdb @:/home//dump.rdb

Nun können Sie * auf dem Wiederherstellungsserver *, der der ursprüngliche oder ein neuer Redis-Server sein kann, die Datei mit + cp + in den Ordner + / var / lib / redis + kopieren:

sudo cp -p /home//dump.rdb /var/lib/redis

(Wenn Sie die Datei nach + / home // dump.rdb + hochgeladen haben, verwenden Sie stattdessen den Befehl + sudo cp -p /home//dump.rdb / var / lib / redis +, um die Datei zu kopieren.)

Wenn Sie alternativ "+ rdiff-backup " verwenden möchten, führen Sie den folgenden Befehl aus. Beachten Sie, dass dies nur funktioniert, wenn Sie aus dem Ordner wiederherstellen, den Sie ursprünglich mit ` rdiff-backup ` eingerichtet haben. Mit ` rdiff-backup +` müssen Sie den Namen der Datei im Zielordner angeben:

sudo rdiff-backup -r now /home//redis/dump.rdb /var/lib/redis/dump.rdb

Details zur Option "+ -r +" finden Sie auf der Projektwebsite am Ende dieses Artikels.

Festlegen von Berechtigungen für die dump.rdb-Datei

Möglicherweise verfügen Sie bereits über die richtigen Berechtigungen, wenn Sie auf demselben Server wiederherstellen, auf dem Sie das Backup erstellt haben.

Wenn Sie die Sicherungsdatei auf einen neuen Server kopiert haben, müssen Sie wahrscheinlich die Dateiberechtigungen aktualisieren.

Lassen Sie uns die Berechtigungen der Datei "+ dump.rdb " im Verzeichnis " / var / lib / redis / +" anzeigen.

ls -la /var/lib/redis/

Wenn Sie so etwas sehen:

Ausgabe

-rw-rw----  1 redis redis 4137 Feb 25 15:36 dump.rdb.old

Sie möchten die Berechtigungen aktualisieren, damit der Benutzer und die Gruppe * redis * Eigentümer der Datei sind:

sudo chown redis:redis /var/lib/redis/dump.rdb

Aktualisieren Sie die Datei so, dass sie auch von der Gruppe geschrieben werden kann:

sudo chmod 660 /var/lib/redis/dump.rdb

Listen Sie nun den Inhalt des Verzeichnisses + / var / lib / redis / + erneut auf:

ls -la /var/lib/redis/

Jetzt hat Ihre wiederhergestellte "+ dump.rdb +" - Datei die richtigen Berechtigungen:

Ausgabe

-rw-rw----  1 redis redis 4137 Feb 25 15:36 dump.rdb.old

Redis starten

Jetzt müssen wir den Redis-Server erneut starten.

sudo service redis-server start

Überprüfen des Datenbankinhalts

Mal sehen, ob die Restaurierung funktioniert hat.

Melden Sie sich bei Redis an:

redis-cli

Überprüfen Sie den + Formen: Dreiecke + Eintrag:

GET shapes:triangles

Die Ausgabe sollte sein:

Ausgabe

"3 sides"

Toll! Unsere Restaurierung hat funktioniert.

Ausgang:

exit

Wenn Sie AOF nicht verwenden, sind Sie fertig! Ihre wiederhergestellte Redis-Instanz sollte wieder normal sein.

(Optional) Aktivieren von AOF

Wenn Sie AOF wiederaufnehmen oder verwenden möchten, um alle Schreibvorgänge in Ihre Datenbank zu verfolgen, befolgen Sie diese Anweisungen. Die AOF-Datei muss über die Redis-Befehlszeile neu erstellt werden.

Melden Sie sich bei Redis an:

redis-cli

AOF einschalten:

BGREWRITEAOF

Sie sollten die Ausgabe erhalten:

Ausgabe

Background append only file rewriting started

Führen Sie den Befehl + info + aus. Dies wird eine Menge Output generieren:

info

Scrollen Sie zum Abschnitt * Persistenz * und überprüfen Sie, ob die * aof * -Einträge mit den hier gezeigten übereinstimmen. Wenn * aof_rewrite_in_progress * * 0 * ist, ist die Neuerstellung der AOF-Datei abgeschlossen.

Ausgabe

# Persistence

. . .

aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:0
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

Wenn bestätigt wurde, dass die Neuerstellung der AOF-Datei abgeschlossen ist, können Sie jetzt die Redis-Befehlszeile beenden:

exit

Sie können die Dateien wieder in + / var / lib / redis + auflisten:

ls /var/lib/redis

Sie sollten wieder eine Live-Datei + .aof + sehen, z. B. + appendonly.aof + oder + redis-staging-ao.aof +, zusammen mit der Datei + dump.rdb + und anderen Sicherungsdateien.

Sobald dies bestätigt ist, stoppen Sie den Redis-Server:

sudo service redis-server stop

Schalten Sie nun AOF in der Datei + redis.conf + wieder ein:

sudo nano /etc/redis/redis.conf

Aktivieren Sie dann AOF wieder, indem Sie den Wert von + appendonly + in + yes + ändern:

/etc/redis/redis.conf

appendonly

Starten Sie Redis:

sudo service redis-server start

Wenn Sie den Inhalt der Datenbank noch einmal überprüfen möchten, führen Sie einfach den Abschnitt * Datenbankinhalt überprüfen * erneut aus.

Das ist es! Ihre wiederhergestellte Redis-Instanz sollte wieder normal sein.

Fazit

Das Sichern Ihrer Redis-Daten auf die in diesem Artikel beschriebene Weise ist hilfreich, wenn Sie nichts dagegen haben, die Daten in einem Verzeichnis auf demselben Server zu sichern.

Der sicherste Ansatz ist natürlich das Sichern auf einem anderen Computer. Weitere Sicherungsoptionen finden Sie in diesem Artikel zu Sicherungen:

Sie können viele dieser Sicherungsmethoden mit denselben Dateien im Verzeichnis + / var / lib / redis + verwenden.

Halten Sie Ausschau nach unserem zukünftigen Artikel über Redis-Migrationen und -Restaurationen. Sie können sich auch auf die + rdiff-backup -Dokumentationsbeispiele beziehen, um zu erfahren, wie Sie` + rdiff-backup + `effektiv einsetzen können: