Comment sauvegarder et restaurer vos données Redis sur Ubuntu 14.04

introduction

Redis est un cache et un magasin (une base de données) en mémoire, qui peuvent également être conservés (enregistrés de manière permanente) sur le disque. Dans cet article, vous allez lire comment sauvegarder une base de données Redis sur un serveur Ubuntu 14.04.

Les données Redis, par défaut, sont enregistrées sur le disque dans un fichier + .rdb +, qui est un instantané à un instant donné de votre jeu de données Redis. La capture instantanée est faite à des intervalles spécifiés, et est donc parfaite pour vos sauvegardes.

Conditions préalables

Pour terminer les étapes de ce tutoriel, vous aurez besoin des éléments suivants:

  • Un serveur Ubuntu 14.04

  • Installez Redis. Vous pouvez suivre uniquement la configuration * master * à partir de cette introduction à Redis ( bien que cela fonctionne aussi bien avec un cluster maître-esclave)

  • Assurez-vous que votre serveur Redis est en cours d’exécution

  • Si un mot de passe Redis a été défini, ce qui est vivement recommandé, conservez-le à portée de main. Le mot de passe est dans le fichier de configuration Redis - + / etc / redis / redis.conf +

Étape 1 - Localisation du répertoire de données Redis

Redis stocke ses données dans un répertoire de votre serveur, ce que nous souhaitons sauvegarder. Nous devons d’abord savoir où il se trouve.

Dans Ubuntu et d’autres distributions Linux, le répertoire de la base de données Redis est + / var / lib / redis +. Toutefois, si vous gérez un serveur dont vous avez hérité et que l’emplacement des données Redis a été modifié, vous pouvez le localiser en tapant:

sudo locate *rdb

Vous pouvez également le trouver à partir de l’invite + redis-cli +. Pour ce faire, tapez:

redis-cli

Si le serveur Redis n’est pas en cours d’exécution, la réponse sera:

Sortie

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

Dans ce cas, démarrez Redis et reconnectez-vous à l’aide des commandes suivantes:

sudo service redis-server start

redis-cli

L’invite du shell devrait maintenant passer à:

127.0.0.1:6379>

Une fois connecté à Redis, les deux commandes suivantes s’authentifieront et obtiendront le répertoire de données:

auth

config get dir

Le résultat de la dernière commande devrait être votre répertoire de données Redis:

Sortie

1) "dir"
2) ""

Prenez note de votre répertoire Redis. S’il est différent du répertoire affiché, veillez à utiliser ce répertoire tout au long du didacticiel.

Vous pouvez quitter l’interface de ligne de commande de la base de données maintenant:

exit

Vérifiez qu’il s’agit du bon répertoire:

ls /var/lib/redis

Vous devriez voir un fichier + dump.rdb +. C’est les données Redis. Si + appendonly + est également activé, vous verrez également un fichier + appendonly.aof + ou un autre fichier + .aof +, qui contient un journal de toutes les opérations d’écriture reçues par le serveur.

Voir cet article sur la persistance Redis pour une discussion sur les différences entre ces deux fichiers. Fondamentalement, le fichier + .rdb + est un instantané actuel et le fichier + .aof + préserve votre historique Redis. Les deux valent la peine d’être sauvegardés.

Nous commencerons par le fichier + .rdb + et nous terminerons par une sauvegarde automatisée des deux fichiers.

(Facultatif) Étape 2 - Ajout de données échantillons

Dans cette section, vous pouvez créer des exemples de données à stocker dans votre base de données Redis. Si vous avez déjà des données sur votre serveur, vous pouvez simplement sauvegarder votre contenu existant.

Connectez-vous à l’interface de ligne de commande de la base de données:

redis-cli

Authentifier:

auth

Ajoutons des exemples de données. Vous devriez obtenir une réponse + OK + après chaque étape.

SET shapes:triangles "3 sides"

SET shapes:squares "4 sides"

Confirmez que les données ont été ajoutées.

GET shapes:triangles

GET shapes:squares

La sortie est incluse ci-dessous:

Sortie

"3 sides"

"4 sides"

Pour valider ces modifications dans le fichier + / var / lib / redis / dump.rdb +, enregistrez-les:

save

Vous pouvez sortir:

exit

Si vous le souhaitez, vous pouvez vérifier le contenu du fichier de vidage maintenant. Il devrait avoir vos données, bien que sous une forme conviviale:

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

/var/lib/redis/dump.rdb

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

Étape 3 - Sauvegarde des données Redis

Maintenant que vous savez où se trouvent vos données Redis, il est temps de faire la sauvegarde. Du site officiel Redis, voici cette citation:

_ Redis est très convivial pour la sauvegarde des données car vous pouvez copier des fichiers RDB pendant que la base de données est en cours d’exécution: la RDB n’est jamais modifiée une fois produite et utilise un nom temporaire. lorsque le nouvel instantané est terminé. _

Vous pouvez donc sauvegarder ou copier le fichier de base de données lorsque le serveur Redis est en cours d’exécution. En supposant que vous sauvegardiez dans un répertoire de votre dossier personnel, cette sauvegarde est aussi simple que de taper:

sudo cp /var/lib/redis/dump.rdb
  • Redis enregistre périodiquement le contenu, ce qui signifie que vous ne pouvez pas garantir une sauvegarde à la minute près si la commande ci-dessus est tout ce que vous exécutez. * Vous devez d’abord enregistrer vos données.

Toutefois, si une perte de données potentiellement petite est acceptable, vous ne pouvez sauvegarder que ce fichier.

  • Sauvegarde de l’état de la base de données *

Pour obtenir une copie beaucoup plus récente des données Redis, un meilleur chemin consiste à accéder à + ​​redis-cli +, la ligne de commande Redis.

Authentifiez-vous comme expliqué à l’étape 1.

Ensuite, lancez la commande + save + comme suit:

save

Le résultat devrait ressembler à ceci:

Sortie

OK
(1.08s)

Quittez la base de données.

Maintenant, vous pouvez exécuter la commande + cp + donnée ci-dessus, confiant que votre sauvegarde est complètement à jour.

Bien que la commande + cp + fournisse une sauvegarde ponctuelle de la base de données, la meilleure solution consiste à configurer un travail cron qui automatisera le processus et à utiliser un outil permettant d’effectuer des mises à jour incrémentielles et, le cas échéant, de restaurer les données.

Étape 4 - Configuration des mises à jour automatiques avec rdiff-backup et Cron

Dans cette section, nous allons configurer une sauvegarde automatique qui sauvegarde l’ensemble du répertoire de données Redis, y compris les deux fichiers de données.

Il existe plusieurs outils de sauvegarde automatisés disponibles. Dans ce tutoriel, nous utiliserons un outil plus récent et convivial appelé + rdiff-backup +.

+ rdiff-backup est un outil de sauvegarde en ligne de commande. Il est probable que + rdiff-backup + ne soit pas installé sur votre serveur. Vous devez donc d’abord l’installer:

sudo apt-get install -y rdiff-backup

Maintenant qu’il est installé, vous pouvez le tester en sauvegardant vos données Redis dans un dossier de votre répertoire personnel. Dans cet exemple, nous supposons que votre répertoire personnel est + / home / +:

Notez que le répertoire cible sera créé par le script s’il n’existe pas. En d’autres termes, vous n’avez pas à le créer vous-même.

Avec les * –preserve-numerical-ids *, la propriété des dossiers source et de destination sera la même.

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

Comme la commande + cp + précédemment, il s’agit d’une sauvegarde ponctuelle. Ce qui a changé, c’est que nous sauvegardons tout le répertoire + / var / lib / redis +, et que nous utilisons + rdiff-backup +.

Nous allons maintenant automatiser la sauvegarde à l’aide de cron, afin que la sauvegarde ait lieu à une heure précise. Pour ce faire, ouvrez la crontab du système:

sudo crontab -e

(Si vous n’avez jamais utilisé crontab sur ce serveur, sélectionnez votre éditeur de texte favori à l’invite.)

Au bas du fichier, ajoutez l’entrée indiquée ci-dessous.

crontab

Cette entrée Cron effectuera une sauvegarde Redis tous les jours à minuit. Le commutateur * –no-file-statistics * désactivera l’écriture dans le fichier + statistiques_fichiers + du répertoire + rdiff-backup-data +, ce qui permettra à + ​​rdiff-backup + de fonctionner plus rapidement et de consommer un peu moins espace disque.

Vous pouvez également utiliser cette entrée pour effectuer une sauvegarde quotidienne:

Pour en savoir plus sur Cron en général, lisez cet article sur Cron .

Dans l’état actuel des choses, la sauvegarde sera effectuée une fois par jour afin que vous puissiez revenir demain pour le test final. Vous pouvez également augmenter temporairement la fréquence de sauvegarde pour vous assurer qu’elle fonctionne.

Étant donné que les fichiers appartiennent à l’utilisateur système * redis *, vous pouvez vérifier qu’ils sont bien en place à l’aide de cette commande. (Assurez-vous d’attendre que la sauvegarde se soit réellement déclenchée):

ls -l /home//redis

Votre sortie devrait ressembler à ceci:

Sortie

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

Vous aurez maintenant des sauvegardes quotidiennes de vos données Redis, stockées dans votre répertoire personnel sur le même serveur.

Étape 5 - Restauration de la base de données Redis à partir d’une sauvegarde

Maintenant que vous avez vu comment sauvegarder une base de données Redis, cette étape vous montrera comment restaurer votre base de données à partir d’un fichier de sauvegarde + dump.rdb +.

Pour restaurer une sauvegarde, vous devez remplacer le fichier de base de données Redis actif par le fichier de restauration. * Cette opération étant potentiellement destructive, nous vous recommandons, si possible, de restaurer sur un nouveau serveur Redis. *

Vous ne voudriez pas écraser votre base de données dynamique avec une restauration plus problématique. Cependant, renommer plutôt que supprimer le fichier actuel minimise les risques, même si vous effectuez une restauration sur le même serveur, comme le montre la tactique exposée dans ce didacticiel.

Vérification du contenu du fichier de restauration

Tout d’abord, vérifiez le contenu de votre fichier + dump.rdb +. Assurez-vous qu’il contient les données que vous souhaitez.

Vous pouvez vérifier le contenu du fichier de vidage directement, mais n’oubliez pas qu’il utilise un formatage convivial pour Redis plutôt que pour l’homme:

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

Ceci est pour une petite base de données; votre sortie devrait ressembler à ceci:

Sortie

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

Si votre sauvegarde la plus récente ne contient pas de données, vous ne devez pas poursuivre la restauration. Si le contenu est là, continuez.

Facultatif: Simulation de perte de données

Simulons la perte de données, ce qui serait une raison pour restaurer à partir de votre sauvegarde.

Connectez-vous à Redis:

redis-cli

Dans cette séquence de commandes, nous autoriserons avec Redis et supprimerons l’entrée + shape: triangles +:

auth

DEL shapes:triangles

Maintenant, vérifions que l’entrée a été supprimée:

GET shapes:triangles

Le résultat devrait être:

Sortie

(nil)

Sauvegarder et quitter:

save

exit

Facultatif: Configuration du nouveau serveur Redis

Maintenant, si vous envisagez de restaurer sur un nouveau serveur Redis, assurez-vous que le nouveau serveur Redis est opérationnel.

Pour les besoins de ce tutoriel, nous ne suivrons que la * Étape 1 * de ce https://www.digitalocean.com/community/tutorials/how-to-configure-a-redis-cluster-on-ubuntu-14-04 [Tutoriel Redis Cluster], mais vous pouvez suivre l’ensemble de l’article si vous souhaitez une configuration plus sophistiquée.

Si vous suivez * l’étape 2 *, où vous ajoutez un mot de passe et activez AOF, assurez-vous d’en tenir compte dans le processus de restauration.

Une fois que vous avez vérifié que Redis est installé sur le nouveau serveur en exécutant + redis-benchmark -q -n 1000 -c 10 -P 5 +, vous pouvez continuer.

Arrêter Redis

Avant de pouvoir remplacer le fichier de vidage Redis, nous devons arrêter l’instance actuellement en cours de Redis. * Votre base de données sera hors ligne une fois que vous aurez arrêté Redis. *

sudo service redis-server stop

Le résultat devrait être:

Sortie

Stopping redis-server: redis-server

Vérifiez qu’il est bien arrêté:

sudo service redis-server status

Sortie

redis-server is not running

Ensuite, nous renommerons le fichier de base de données actuel.

Renommer Current dump.rdb

Redis lit son contenu dans le fichier + dump.rdb +. Renommons le nom actuel pour laisser la place à notre fichier de restauration.

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

Notez que vous pouvez restaurer + dump.rdb.old + si vous décidez que la version actuelle est meilleure que votre fichier de sauvegarde.

Si AOF est activé, éteignez-le

AOF suit chaque opération d’écriture dans la base de données Redis. Étant donné que nous essayons de restaurer à partir d’une sauvegarde ponctuelle, nous ne souhaitons pas que Redis recrée les opérations stockées dans son fichier AOF.

Si vous configurez votre serveur Redis à partir des instructions du didacticiel Redis Cluster , alors AOF est activé.

Vous pouvez également lister le contenu du répertoire + / var / lib / redis / +. Si vous voyez un fichier + .aof +, vous avez activé AOF.

Renommons le fichier + .aof + pour le supprimer temporairement. Ceci renomme chaque fichier qui se termine par + .aof +. Ainsi, si vous avez plusieurs fichiers AOF, vous devez renommer les fichiers individuellement et NE PAS exécuter cette commande:

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

Editez votre fichier de configuration Redis pour désactiver temporairement AOF:

sudo nano /etc/redis/redis.conf

Dans la section + AOF +, recherchez la directive + appendonly + et remplacez-la de ` par `. Cela le désactive:

/etc/redis/redis.conf

appendonly

Restauration du fichier dump.rdb

Nous allons maintenant utiliser notre fichier de restauration, qui devrait être sauvegardé dans + / home // redis / dump.rdb + si vous avez suivi les étapes précédentes de ce tutoriel.

Si vous restaurez sur un nouveau serveur, il est maintenant temps de télécharger le fichier de votre serveur de sauvegarde sur le nouveau serveur:

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

Maintenant, * sur le serveur de restauration *, qui peut être le serveur Redis d’origine ou un nouveau, vous pouvez utiliser + cp + pour copier le fichier dans le dossier + / var / lib / redis +:

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

(Si vous avez chargé le fichier dans + / home // dump.rdb +, utilisez la commande + sudo cp -p /home//dump.rdb / var / lib / redis + à la place pour copier le fichier.)

Sinon, si vous voulez utiliser + rdiff-backup +, exécutez la commande ci-dessous. Notez que cela ne fonctionnera que si vous restaurez à partir du dossier que vous avez initialement configuré avec + rdiff-backup +. Avec + rdiff-backup +, vous devez spécifier le nom du fichier dans le dossier de destination:

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

Des informations détaillées sur l’option + -r + sont disponibles sur le site Web du projet, à la fin de cet article.

Définition des autorisations pour le fichier dump.rdb

Vous possédez probablement déjà les autorisations appropriées si vous restaurez sur le même serveur que celui où vous avez effectué la sauvegarde.

Si vous avez copié le fichier de sauvegarde sur un nouveau serveur, vous devrez probablement mettre à jour les autorisations de fichier.

Voyons les permissions du fichier + dump.rdb + dans le répertoire + / var / lib / redis / +.

ls -la /var/lib/redis/

Si vous voyez quelque chose comme ça:

Sortie

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

Vous souhaitez mettre à jour les autorisations afin que le fichier soit la propriété de l’utilisateur et du groupe * redis *:

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

Mettez à jour le fichier pour qu’il soit également accessible en écriture pour le groupe:

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

Maintenant listez à nouveau le contenu du répertoire + / var / lib / redis / +:

ls -la /var/lib/redis/

Maintenant, votre fichier + dump.rdb + restauré a les permissions appropriées:

Sortie

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

Démarrer Redis

Nous devons maintenant redémarrer le serveur Redis.

sudo service redis-server start

Vérification du contenu de la base de données

Voyons si la restauration a fonctionné.

Connectez-vous à Redis:

redis-cli

Vérifiez l’entrée + formes: triangles +:

GET shapes:triangles

Le résultat devrait être:

Sortie

"3 sides"

Génial! Notre restauration a fonctionné.

Sortie:

exit

Si vous n’utilisez pas AOF, vous avez terminé! Votre instance Redis restaurée devrait revenir à la normale.

(Facultatif) Activation de AOF

Si vous souhaitez reprendre ou commencer à utiliser AOF pour suivre toutes les écritures dans votre base de données, suivez ces instructions. Le fichier AOF doit être recréé à partir de la ligne de commande Redis.

Connectez-vous à Redis:

redis-cli

Activer AOF:

BGREWRITEAOF

Vous devriez obtenir le résultat:

Sortie

Background append only file rewriting started

Exécutez la commande + info +. Cela générera un peu de sortie:

info

Faites défiler jusqu’à la section * Persistence * et vérifiez que les entrées * aof * correspondent à ce qui est montré ici. Si * aof_rewrite_in_progress * est * 0 *, la recréation du fichier AOF est terminée.

Sortie

# 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

S’il est confirmé que la reconstitution du fichier AOF est terminée, vous pouvez maintenant quitter la ligne de commande Redis:

exit

Vous pouvez lister les fichiers dans + / var / lib / redis + à nouveau:

ls /var/lib/redis

Vous devriez revoir le fichier + .aof + en direct, tel que + appendonly.aof + ou + redis-staging-ao.aof +, ainsi que le fichier + dump.rdb + et d’autres fichiers de sauvegarde.

Une fois cela confirmé, arrêtez le serveur Redis:

sudo service redis-server stop

Maintenant, réactivez AOF dans le fichier + redis.conf +:

sudo nano /etc/redis/redis.conf

Puis réactivez AOF en changeant la valeur de + appendonly + en + + yes +:

/etc/redis/redis.conf

appendonly

Démarrer Redis:

sudo service redis-server start

Si vous souhaitez vérifier le contenu de la base de données une fois de plus, parcourez simplement la section * Vérification du contenu de la base de données *.

C’est ça! Votre instance Redis restaurée devrait revenir à la normale.

Conclusion

La sauvegarde de vos données Redis de la manière indiquée dans cet article est utile lorsque vous ne craignez pas de sauvegarder les données dans un répertoire situé sur le même serveur.

La solution la plus sûre consiste bien entendu à effectuer une sauvegarde sur une machine différente. Vous pouvez explorer plus d’options de sauvegarde en lisant cet article sur les sauvegardes:

Vous pouvez utiliser plusieurs de ces méthodes de sauvegarde avec les mêmes fichiers dans le répertoire + / var / lib / redis +.

Surveillez notre prochain article sur les migrations et les restaurations Redis. Vous voudrez peut-être aussi vous référer aux exemples de documentation + rdiff-backup pour savoir comment utiliser` + rdiff-backup + `efficacement: