web-dev-qa-db-fra.com

Comment récupérer des données Redis à partir d'un instantané (fichier rdb) copié depuis un autre ordinateur?

J'ai transféré mon cliché instantané (dump.rdb fichier) en utilisant scp sur un serveur distant. Je dois exécuter un serveur Redis sur cette télécommande et récupérer les données de la dump.rdb fichier. Comment puis je faire ça?

57
hupantingxue

Il n'y a rien de spécifique à faire. Installez simplement le serveur Redis sur le nouvel ordinateur et modifiez le fichier de configuration. Il vous suffit de modifier les paramètres suivants pour indiquer l'emplacement du fichier de vidage que vous venez de copier.

# The filename where to dump the DB
dbfilename mydump.rdb

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
# 
# Also the Append Only File will be created inside this directory.
# 
# Note that you must specify a directory here, not a file name.
dir /data/mydirectory/

Enfin, le serveur Redis peut être démarré normalement.

57
Didier Spezia

Pour les bases de données où l'indicateur appendonly est défini sur no, vous pouvez effectuer les opérations suivantes:

  1. Arrêtez redis (car redis écrase le fichier rdb actuel à la fermeture).
  2. Copiez votre fichier de sauvegarde rdb dans le répertoire de travail de redis (il s’agit de l’option dir de votre configuration de redis). Assurez-vous également que votre nom de fichier de sauvegarde correspond à l'option dbfilename config.
  3. Commencez Redis.

Si, en revanche, vous devez restaurer un fichier rdb dans une base de données d'ajout uniquement, vous devez procéder comme suit:

  1. Arrêtez redis (car redis écrase le fichier rdb actuel à la fermeture).
  2. Copiez votre fichier de sauvegarde rdb dans le répertoire de travail de redis (il s’agit de l’option dir de votre configuration de redis). Assurez-vous également que votre nom de fichier de sauvegarde correspond à l'option dbfilename config.
  3. Changez le drapeau de redis config appendonly en no (sinon, redis ignorera votre fichier rdb au démarrage).
  4. Commencez Redis.
  5. Courir redis-cli BGREWRITEAOF pour créer un nouveau fichier appendonly.
  6. Restaurez redis config appendonly flag à yes.

Plus précisément, il s’agit de la documentation pertinente tirée des commentaires du fichier de configuration de Redis:

# Note that you can have both the async dumps and the append only file if you                                                     
# like (you have to comment the "save" statements above to disable the dumps).                                                    
# >> Still if append only mode is enabled Redis will load the data from the                                                          
# >> log file at startup ignoring the dump.rdb file. 
46
Robert Kajic

En supposant que vous exécutiez Redis 2.6 ou une version ultérieure, votre nom de fichier d’instantané Redis est dump.rdb, et il existe dans le répertoire /home/user/dbs, la commande suivante ferait l'affaire:

redis-server --dbfilename dump.rdb --dir /home/user/dbs

Section pertinente de la documentation officielle: Passer des arguments via la ligne de commande

12
tzabal

Ou tu peux:

  1. Arrêtez votre serveur/instance Redis, par exemple, service redis6379 stop
  2. Copiez le fichier dump.rdb au bon endroit, par exemple, cp /path/to/dump-6379.rdb /var/lib/redis/dump-6379.rdb. Donnez-lui les autorisations adéquates (utilisateur: groupe doit être redis: redis et mode 644)
  3. Démarrez votre serveur/instance Redis, par exemple, service redis6379 start

Il est important que vous arrêtiez le serveur Redis avant de copier le fichier au bon emplacement, car Redis enregistre un instantané avant la fin, de sorte qu'il remplacera votre fichier.

En outre, vous pouvez commencer par sauvegarder le fichier dump.rdb existant.

9
Ruxandra T.

démarrez redis sur votre deuxième serveur, comme suit:

$ > redis-server /path/to/my/redis/configuration/file/redis.conf

quand redis commence, il trouvera votre fichier rdb car il cherchera le nom et chemin du fichier dans le fichier de configuration ( redis.conf ) que vous fournissez au démarrage du serveur Redis, comme ci-dessus.

pour fournir le nom de fichier et le chemin, il suffit d’éditer deux lignes dans le redis.conf modèle de fichier (fourni dans le répertoire racine de la source Redis. Enregistrez votre version révisée sous le nom redis.conf à l’emplacement du répertoire que vous avez indiqué au démarrage du serveur.

Vous trouverez les paramètres dont vous avez besoin dans le modèle redis.conf dans le répertoire principal de niveau source, à la ligne 127 et 137 (version Redis 2.6.9).

# The filename where to dump the DB
dbfilename dump.rdb

# The working directory
dir ./

comme vous pouvez le constater, les valeurs par défaut sont fournies pour les deux paramètres

modifiez donc la première de ces deux lignes (127) pour identifier votre fichier rdb et dans la seconde (137), remplacez le chemin par défaut "./" par le chemin de fichier réel de votre fichier de capture instantanée rdb; enregistrez le redis.conf avec vos modifications et lancez la redis en passant dans ce nouveau fichier de configuration.

5
doug

essayez de définir appendonly non. Dans mon cas, le fichier * .aof était vide (0 octet), vous devez définir appendonly = no puis le charger dans le fichier dump.rdb

3
toontong

J'aimerais ajouter ici un petit détail qui n'a pas été mentionné et que je n'utiliserai pas le fichier de configuration mais spécifierai tout dans la ligne de commande.

Lorsque les fichiers mydump.rdb et appendonly.aof sont spécifiés au démarrage de redis-server, Ce sera le fichier appendonly.aof Qui gagne de sorte que les données de appendonly.aof soient chargées. Par exemple:

redis-server --dbfilename mydump001.rdb --dir /data --appendonly yes

L'invocation de démarrage ci-dessus utilisera l'emplacement /dir Pour rechercher la présence de fichiers mydump001.rdb Ou appendonly.aof. Dans ce cas, redis-server Chargera le contenu de appendonly.aof. Si appendonly.aof N'existe pas, un /data/appendonly.aof Vide sera créé et le serveur Redis sera vide.

Si vous souhaitez charger un fichier de vidage spécifique, vous pouvez effectuer les opérations suivantes:

redis-server --dbfilename mydump001.rdb --dir /data

J'ai ajouté cette réponse parce que ce n'est pas évident de savoir lequel. En présence de 2 fichiers de sauvegarde, et cela n'est souvent pas mentionné.

1
typelogic