Présentation de l'implémentation de la réplication <<< |
Détails d'implémentation de la réplication | Comment mettre en place la réplication >>> |
6 Réplication de MySQL Manuel de Référence MySQL 4.1 : Version Française . Introduction à la réplication . Présentation de l'implémentation de la réplication ->Détails d'implémentation de la réplication . Comment mettre en place la réplication . Compatibilité de la réplication entre les versions de MySQL . Fonctionnalités de la réplication et problèmes connus . Options de démarrage de la réplication . FAQ de la réplication . Correction de problèmes courants . Rapporter des bugs de réplication |
6.3 Détails d'implémentation de la réplication
Les capacités de réplication de MySQL sont implémentées à l'aide de trois threads : un thread sur le maître et deux sur l'esclave. Lorsque la commande START SLAVE est envoyée, l'esclave crée un thread d'I/O (Entrée/Sortie). Le thread d'I/O se connecte au maître et lit les commandes qui ont été stockées dans le log binaire. Le maître crée un thread pour envoyer le contenu des logs binaire à l'esclave. Ce thread peut être identifié comme le thread Binlog Dump dans le résultat de la commande SHOW PROCESSLIST . Le thread esclave I/O lit ce que le thread maître Binlog Dump lui envoie, et le stocke dans un fichier local à l'esclave. Le troisième thread SQL lit ces commandes et les exécute. Dans la description précédente, il y a trois threads par esclave. Pour un maître avec de nombreux esclaves, il crée un thread par esclave simultanément connecté, et chaque esclave a son propre thread I/O et SQL.Pour les versions de MySQL avant 4.0.2, la réplication implique uniquement deux threads : un sur le maître et un sur l'esclave. Les threads I/O et SQL sont combinés en un seul thread, et il n'y a pas de log de relais. L'avantage d'utiliser deux threads est que la lecture et l'exécution des requêtes sont découplées. La tâche de lecture n'est pas ralentie par l'exécution. Par exemple, si l'esclave n'a pas fonctionné depuis un bon moment, le thread d'I/O peut lire rapidement le contenu de toutes les commandes à appliquer, même si le thread SQL met du temps à les concrétiser. Si l'esclave s'arrête avant que toutes les commandes n'ait été exécutées, le thread d'I/O aura au moins lu les commandes, et elles sont désormais locales. Cela permettra au maître de purger ces lignes, si les autres esclaves n'en ont pas besoin non plus.La commande SHOW PROCESSLIST affiche des informations qui vous indiquent ce qui se passe sur le maître et sur l'esclave, concernant la réplication. L'exemple ci-dessous montre les trois threads dans le résultat de SHOW PROCESSLIST . Le format qui est présenté est celui de SHOW PROCESSLIST pour MySQL version 4.0.15, où le contenu de la colonne State a été changé pour être plus significatif.Sur le serveur maître, le résultat de SHOW PROCESSLIST ressemble à ceci :
Sur le serveur esclave, le résultat de SHOW PROCESSLIST ressemble à ceci :
Notez que la valeur de la colonne Time vous indique le retard de l'esclave par rapport au maître. FAQ de la réplication . Sommaire : |
<< | Détails d'implémentation de la réplication | >> |
Présentation de l'implémentation de la réplication | Réplication de MySQL | Comment mettre en place la réplication |