Maison  >  Article  >  base de données  >  Comment synchroniser les données du cluster Redis

Comment synchroniser les données du cluster Redis

(*-*)浩
(*-*)浩original
2019-06-17 13:14:299103parcourir

Redis n'a pas le concept de copie d'emplacements comme mysql, donc lorsque l'esclave et le maître sont déconnectés et reconnectés, un instantané complet du maître sera pris, toutes les données de l'esclave seront effacées et l'intégralité de La table mémoire sera rétablie, ce qui amènera le Salve à restaurer les données. C'est extrêmement lent et cela met également de la pression sur le Maître.

Comment synchroniser les données du cluster Redis

La stratégie de réplication maître-esclave de Redis est mise en œuvre via son fichier rdb persistant. Le processus consiste d'abord à vider le fichier rdb et à transférer l'intégralité du fichier rdb vers l'esclave, puis à le synchroniser. les opérations transférées à l'esclave en temps réel. Faites du serveur esclave une réplique exacte du serveur maître. Les fonctionnalités suivantes sont mentionnées dans le document officiel ReplicationHowto : (Apprentissage recommandé : Tutoriel vidéo Redis)

Un maître prend en charge plusieurs esclaves, et l'esclave peut accepter les connexions d'autres esclaves et servir de maître des autres esclaves. La fonction de réplication de structure multi-niveaux formant ainsi un maître-esclave ne bloque pas le serveur maître : même si un ou plusieurs serveurs esclaves effectuent une synchronisation initiale, le serveur maître peut continuer à traiter les requêtes de commandes. La fonction de réplication ne bloque pas le serveur esclave : tant que les paramètres correspondants sont effectués dans le fichier redis.conf, le serveur peut utiliser l'ancienne version du jeu de données pour traiter les requêtes de commandes même si le serveur esclave subit une première synchronisation . Cependant, les demandes de connexion sont bloquées pendant que l'ancienne version de l'ensemble de données est supprimée du serveur et que la nouvelle version de l'ensemble de données est chargée. La réplication est utilisée pour assurer l'évolutivité. Par exemple, l'esclave peut être utilisé pour la redondance des données (telles que le tri) peut également être envoyée à certains esclaves pour éviter le blocage du maître. , le serveur esclave effectue l'opération de persistance, qui nécessite uniquement de commenter la directive save dans le fichier de configuration du maître.

Redis utilise la réplication asynchrone.

La réplication maître-esclave de Redis est divisée en deux étapes :

1) Opération de synchronisation : mettre à jour l'état de la base de données du serveur esclave avec l'état actuel de la base de données du serveur maître.

2) Propagation des commandes : lorsque l'état de la base de données du serveur maître est modifié, provoquant une incohérence de l'état de la base de données des serveurs maître et esclave, remettez les serveurs maître et esclave dans un état cohérent.

Synchronisation

Lorsque le client envoie la commande SLAVEOF au serveur esclave et demande au serveur esclave de copier le serveur maître, le serveur esclave doit d'abord effectuer une synchronisation opération, c'est-à-dire que l'état de la base de données du serveur esclave est mis à jour avec l'état actuel de la base de données du serveur maître.

L'opération de synchronisation du serveur esclave avec le serveur maître doit être complétée en envoyant la commande SYNC au serveur maître. Voici les étapes d'exécution de la commande SYNC :

Serveur esclave Envoie une commande SYNC au serveur maître. Le serveur maître qui reçoit la commande SYNC exécute la commande BGSAVE, génère un fichier RDB en arrière-plan et utilise un tampon pour enregistrer toutes les commandes d'écriture exécutées à partir de maintenant. Lorsque la commande BGSAVE du serveur maître est exécutée, le serveur maître enverra le fichier RDB généré par la commande BGSAVE au serveur esclave. Le serveur esclave recevra et chargera le fichier RDB et mettra à jour son propre état de base de données avec l'état de la base de données lorsque le serveur maître sera exécuté. le serveur maître a exécuté la commande BGSAVE. Le serveur maître envoie toutes les commandes d'écriture enregistrées dans le tampon au serveur esclave. Le serveur esclave exécute ces commandes d'écriture et met à jour son propre état de base de données avec l'état actuel de la base de données du serveur maître.

Pour plus d'articles techniques liés à Redis, veuillez visiter la colonne

Introduction au didacticiel d'utilisation de la base de données Redis pour apprendre !

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn