/ / Comment déplacer la file d'attente Sidekiq (Redis) vers un autre serveur? - ruby-on-rails, rubis, Redis, file d'attente, sidekiq

Comment déplacer la file d'attente Sidekiq (Redis) sur un autre serveur? - ruby-on-rails, ruby, redis, queue, sidekiq

Nous utilisons donc Sidekiq comme système de gestion des files d’attente dans notre application Rails. Nous utilisons également Sidetiq pour gérer les tâches planifiées et récurrentes.

À l'heure actuelle, environ 200 à 300 tâches planifiées sont exécutées à tout moment, de quelques minutes à 30 jours.

Je ne transférerais que le fichier rdb de la base de données Redis, mais en raison de certaines modifications de la configuration, le chemin du projet Rails a été modifié (par conséquent, les tâches ne pourront plus s'exécuter)

Ce qui serait un moyen privilégié de transférer la file d'attente entière de tâches planifiées pour qu'elle fonctionne avec le nouveau chemin de projet et manuellement n'est pas le cas.

  • Ruby 2.1.6
  • Rails 3.2.22
  • Sidekiq 3.4.2
  • Redis 2.8.4

Réponses:

2 pour la réponse № 1

Utilisez DUMP et RESTORE:

redis-cli -h source_host dump schedule | head -c-1 | redis-cli -h dest_host restore 0 schedule

http://redis.io/commands/restore


0 pour la réponse № 2

Vous pouvez copier votre fichier de vidage Redis comme vous l'avez dit. Je ne comprends pas pourquoi vous excluez cette option.

Faites-le manuellement (créez simplement un script ruby), déplacer les tâches planifiées devrait être assez facile. La seule chose à faire est de déplacer les ensembles Redis retry et schedule


0 pour la réponse № 3

Ma principale préoccupation était de penser que je ne pouvais pas simplement copier la base de données Redis car le chemin de mon projet changeait, mais en fin de compte ce n’était pas un problème.

Le moyen le plus rapide de répliquer la base de données pour moi a été de lier d'abord Redis sur un ancien serveur à l'adresse IP ou à la 0.0.0.0

puis sur le nouveau serveur

redis-cli slaveof OLD_SERVER_IP 6379

et puis quand tout est copié (la copie est faite en quelques secondes), lancez

redis-cli slaveof no one

Tada. Votre base de données Redis est entièrement répliquée.