[+/-]
      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 :
    
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 2
   User: root
   Host: localhost:32931
     db: NULL
Command: Binlog Dump
   Time: 94
  State: Has sent all binlog to slave; waiting for binlog to
         be updated
   Info: NULL
Ici, le thread 2 est le thread de réplication pour un esclave connecté. L'information indique que toutes les requêtes ont été envoyées à l'esclave, et que le maître attend de nouvelles instructions.
      Sur le serveur esclave, le résultat de SHOW
      PROCESSLIST ressemble à ceci :
    
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 10
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 11
  State: Waiting for master to send event
   Info: NULL
*************************** 2. row ***************************
     Id: 11
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 11
  State: Has read all relay log; waiting for the slave I/O
         thread to update it
   Info: NULL
Cette information indique que le thread 10 est le thread d'I/O, en communication avec le serveur, et le thread 11 est le thread SQL, qui traite les commandes stockées dans le log de relais. Actuellement, les deux threads sont oisifs, et attendent des instructions.
      Notez que la valeur de la colonne Time vous
      indique le retard de l'esclave par rapport au maître. See
      Section 6.9, « FAQ de la réplication ».
    
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

