Comment effectuer une mise à niveau vers une version plus récente de Redis sans interruption de service? Les esclaves Redis sont en lecture seule, il semble donc que vous deviez supprimer le maître et votre site serait en lecture seule pendant 45 secondes ou plus pendant que vous attendez qu'il recharge la base de données.
Y a-t-il un moyen de contourner ceci?
Lorsque vous mettez le nœud hors ligne, promouvez l'esclave à maître à l'aide de la commande SLAVEOF, puis lorsque vous le remettez en ligne, vous le configurez comme esclave et il copiera toutes les données du nœud en ligne.
Vous devrez peut-être également vous assurer que votre client peut gérer correctement les nœuds maîtres modifiés/manquants.
Si vous voulez vraiment devenir fantaisiste, vous pouvez configurer votre client pour promouvoir un esclave s'il détecte une erreur d'écriture sur le maître.
Redis Team a une très bonne documentation à ce sujet
Étapes principales:
Documentation complète:
Mise à niveau ou redémarrage d'une instance Redis sans temps d'arrêt
Vous pouvez utiliser Redis Sentinel pour ce faire, la sentinelle promouvra automatiquement un esclave en tant que nouveau maître. vous pouvez trouver plus d'informations ici http://redis.io/topics/sentinel .
Sentinel est un système utilisé pour gérer les serveurs redis, il surveille le maître et les esclaves redis en continu, et chaque fois qu'un maître tombe en panne, il promeut automatiquement un esclave en maître. et lorsque l'ancien maître est UP, il sera fait comme esclave du nouveau maître.
Ici, il n'y aura pas de temps d'arrêt ni de configuration manuelle du fichier de configuration. Vous pouvez visiter le lien ci-dessus pour savoir comment configurer sentinelle pour vos serveurs redis.
Remarque, vous devrez peut-être vérifier et définir la configuration suivante pour écrire sur votre esclave. ("Depuis Redis 2.6, les esclaves par défaut sont en lecture seule")
redis-cli config set slave-read-only no
-- Exemple
-bash-4.1$ redis-cli info
Server
redis_version:2.6.9
-bash-4.1$ redis-cli slaveof admin2.mypersonalsite.com 6379
OK
-bash-4.1$ redis-cli set temp 42
(error) READONLY You can't write against a read only slave.
-bash-4.1$ redis-cli slaveof no one
OK
-bash-4.1$ redis-cli set temp 42
OK
-bash-4.1$ redis-cli get temp
"42"
-bash-4.1$ redis-cli config set slave-read-only no
OK
-bash-4.1$ redis-cli slaveof admin2.mypersonalsite.com 6379
OK
-bash-4.1$ redis-cli set temp 42
OK
-bash-4.1$ redis-cli get temp
"42"