Cloner Redis

Le lun. 30 septembre 2013 par Kasey

Comment migrer une base de donnée redis d'un serveur vers un autre sans interupton de service? C'est la question que je me suis posé ces deux derneirs jours au travail. Force est de constater que sans les deux infos dans la suite de se billet, on peux passer du temps a essayer de faire rapidement et simplement la migration.

The best way, be a simple slave

Ma premeire idée pour migrer mes données fut de procéder de manière logique, export des données depuis le serveur O, puis import des données dans le serveur N. Pour cela en quelques commande sréalisées grace a redis-cli on récupère un super fichier dump.rdb bein imbuvable. En effet il faut récupérer se derneir, le convertir ou le mettre au bon endroit puis relancer sur le serveur N le service redis pour lui faire lire se derneir a l'initialisation de la base de donnée. Et ben j'ai eu beau farfouiller ou jouer avec des outils dédiés. Rien a faire.

La solution est donc la suivante : mettre en place une réplication maitre esclave

Opérations à faire :

  • installez un redis-server frais et neuf sur votre serveur N (n comme new ou nouveau)
  • passez la portée d'écoute de locale a globale sur votre service redis tournant sur votre serveur O (comme Old ou Origine). Pour se faire dans le fichier de configuration /etc/redis/redis.conf, passez la valeur bind 127.0.0.1 a bind 0.0.0.0
  • pensez a relancer votre service :)
  • sur votre serveur N utilisez en root la commande redis-cli pour lancer l'interpréteur de commande redis
  • test 1 : relevez la taille de votre base de donnée avec la commande suivante : DBSIZE, vous récupérez 0 tout est ok, sinon vous netes pas sur votre nouveau serveur
  • même chose sur votre serveur O, vous devez relever un taille en octet qui correspond a la taille de votre BDD
  • maintenant on passe le Serveur N en slave, dans redis-cli : SLAVEOF
  • la taille de la base de donnée devrait croitre jusqu'a devenir égale a celle de votre serveur O
  • relancez le service redis sur le serveur N ou utilisez la commande SLAVEOF NO ONE pour retirer la réplication maitre esclave

Voila le service est maintenant répliqué et fonctionne correctement. Vous pouvez arreter votre vieux serveur, faire les éventuels tests d'usage etc.

Note

La réplication en passe pas les NATs :) alors si vous faites le test depuis votre machine locale derriere un modem, ne vous étonnez pas que la synchro passe dans une boucle curieuse.