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?
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.
Pour les bases de données où l'indicateur appendonly
est défini sur no
, vous pouvez effectuer les opérations suivantes:
dir
de votre configuration de redis). Assurez-vous également que votre nom de fichier de sauvegarde correspond à l'option dbfilename
config.Si, en revanche, vous devez restaurer un fichier rdb dans une base de données d'ajout uniquement, vous devez procéder comme suit:
dir
de votre configuration de redis). Assurez-vous également que votre nom de fichier de sauvegarde correspond à l'option dbfilename
config.appendonly
en no
(sinon, redis ignorera votre fichier rdb au démarrage).redis-cli BGREWRITEAOF
pour créer un nouveau fichier appendonly.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.
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
Ou tu peux:
service redis6379 stop
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)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.
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.
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
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é.