Maison > Article > base de données > En savoir plus sur la réplication maître-esclave dans Redis
Cet article vous présentera la réplication maître-esclave dans Redis, présentera la configuration maître-esclave de base, ainsi que les fonctions et principes de la configuration maître-esclave. J'espère qu'il vous sera utile !
Redis prend en charge la fonction de réplication maître-esclave. Vous pouvez activer la fonction de réplication en exécutant slaveof (changé en réplicaof après la version Redis5) ou en définissant slaveof dans le fichier de configuration (changé en réplicaof après la version Redis5). [Recommandations associées : Tutoriel vidéo Redis]
Configuration principale de Re dis Il n'est fondamentalement pas nécessaire de modifier. L'élément clé est de configurer à partir de Redis
# salve的端口号 port 6380 #把pid进程号写入pidfile配置的文件 pidfile /var/run/redis_6380.pid logfile "6380.log" #指定数据存放目录 dir /usr/local/redis‐5.0.3/data/6380 #需要注释掉bind #bind127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
#从本机master6379的redis实例复制数据,Redis5.0之前使用slaveof replicaof 192.168.0.60 6379 #配置从节点只读 replica‐read‐only yes
redis‐server redis.conf
redis‐cli ‐p 6380Configuration maître-esclave Le rôle de
processeur d'événements de fichiers associé à l'esclave
Ce processeur reçoit R Base de données fichiers (Copie complète), recevez la commande d'écriture transmise par le Maître (copie incrémentielle)Le maître n'a pas défini de mot de passe (requirepass="") et il n'est pas nécessaire de définir un mot de passe (masterauth="")
Le maître définit un mot de passe (requirepass! =""), de la nécessité de définir un mot de passe (masterauth=la valeur du requirepass du maître)Le maître Redis reçoit L'exécution de la commande bgsave après que la commande PSYNC génère le dernier instantané rdb
3. instantané au Redis esclave.
Une fois que le nœud esclave a reçu l'instantané rdb, il efface les anciennes données et charge le fichier rdb
Synchroniser le tampon d'écriture Étape : Le maître synchronise la commande d'opération d'écriture stockée dans le tampon avec l'esclave.
Le nœud esclave reçoit le fichier cache tampon et charge le fichier cache tampon dans la mémoire
Recevez la commande envoyée par le maître Redis depuis Redis et exécutez la commande actuelle
Si vous configurez un esclave pour le maître, que l'esclave soit connecté ou non au maître pour la première fois temps, il enverra une commande PSYNC au maître demande de copier les données. Après avoir reçu la commande PSYNC, le maître effectuera la persistance des données en arrière-plan et générera le dernier fichier d'instantané RDB via bgsave. Pendant la période de persistance, le maître continuera à recevoir les demandes des clients et mettra en cache ces demandes susceptibles de modifier les données. mis en mémoire. Lorsque la persistance est terminée, le maître enverra l'ensemble de données du fichier RDB à l'esclave, et l'esclave conservera les données reçues pour générer du RDB, puis les chargera dans la mémoire. Ensuite, le maître envoie la commande préalablement mise en cache en mémoire à l'esclave. Lorsque la connexion entre le maître et l'esclave est déconnectée pour une raison quelconque, l'esclave peut se reconnecter automatiquement au maître. Si le maître reçoit plusieurs demandes de connexion simultanées à l'esclave, elle ne persistera qu'une fois, pas une fois pour chaque connexion, puis enverra. ces données persistantes à plusieurs esclaves connectés simultanément.
Le processus général est similaire à la copie complète, je ne l'expliquerai donc pas en détail
Lorsque le maître et l'esclave sont déconnectés et reconnecté, toutes les données seront généralement faites une copie. Cependant, à partir de la version 2.8 de Redis, Redis utilise la commande PSYNC qui peut prendre en charge la réplication partielle des données pour synchroniser les données avec le maître. L'esclave et le maître ne peuvent effectuer une réplication partielle des données (reprise de la transmission) qu'une fois la connexion réseau déconnectée et reconnectée. Le maître créera une file d'attente de cache pour copier les données dans sa mémoire afin de mettre en cache les données de la période la plus récente. Le maître et tous ses esclaves conservent le décalage d'indice des données copiées et l'identifiant de processus du maître. Par conséquent, lorsque la connexion réseau est déconnectée, Ensuite, l'esclave demandera au maître de poursuivre la réplication inachevée, à partir de l'index des données enregistrées. Si l'ID du processus maître change ou si le décalage des données du nœud esclave est trop ancien et ne se trouve plus dans la file d'attente du cache du maître, une copie complète des données sera effectuée. Organigramme de la réplication maître-esclave (réplication partielle, reprise du point d'arrêt) :
La synchronisation incrémentielle Redis fait principalement référence aux opérations d'écriture qui se produisent sur le maître lorsque l'esclave termine l'initialisation et démarre pour fonctionner normalement. Le processus de synchronisation avec l'esclave.
Normalement, chaque fois que le maître exécute une commande d'écriture, il enverra la même commande d'écriture à l'esclave, puis l'esclave la recevra et l'exécutera.
Détectez l'état de la connexion réseau du serveur maître-esclave en envoyant la commande de réplication INFO à. le serveur maître, vous pouvez lister la liste des serveurs esclaves. Vous pouvez voir combien de secondes se sont écoulées depuis que la dernière commande a été envoyée au maître. La valeur de lag doit sauter entre 0 et 1. Si elle dépasse 1, cela signifie que la connexion entre le maître et l'esclave est défectueuse.
Redis peut être configuré pour empêcher le serveur principal d'exécuter la commande d'écriture min-slaves-to-write 3 (min-replicas-to-write 3) sous conditions dangereuses -max-lag 10 (min-replicas-max-lag 10) La configuration ci-dessus signifie : lorsque le nombre de serveurs esclaves est inférieur à 3, ou que la valeur du délai (lag) des trois serveurs esclaves est supérieure ou égale à 10 secondes, le serveur maître L'exécution de la commande d'écriture sera refusée. La valeur du délai ici est la valeur de décalage de la commande INForeplication ci-dessus.
Si la commande d'écriture transmise du serveur maître au serveur esclave est perdue à mi-chemin en raison d'une panne de réseau, alors lorsque le serveur esclave envoie la commande REPLCONF ACK au serveur maître, le maître Le serveur remarquera l'état actuel du serveur esclave. Si le décalage de réplication est inférieur à son propre décalage de réplication, le serveur maître trouvera les données manquantes du serveur esclave dans le tampon du backlog de réplication en fonction du décalage de réplication soumis par l'esclave. serveur et renvoyer les données au serveur esclave. (Réédition) Le réseau est continuellement synchronisé de manière incrémentale : le réseau est déconnecté, et lorsqu'il est reconnecté
Une fois que le client a envoyé la sauvegarde, le nœud maître jugera s'il est copié pour la première fois. Si tel est le cas, il effectuera une copie complète si elle n'est pas cohérente. , il sera jugé par le décalage runid. S'ils sont cohérents, une copie partielle est effectuée, sinon une copie complète est effectuée.
Pour plus de connaissances sur la programmation, veuillez visiter : Vidéos de programmation ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!