Nous avons une configuration MySQL maître et esclave vanilla qui réside dans différents centres de données, et un autre esclave dans le même centre de données que le maître.
La bande passante entre le centre de données est assez élevée (dans les tests de performances réseau que nous avons effectués, nous pouvons atteindre 15 Mo / seconde), mais la latence existe, elle est d'environ 28 ms. Ce n'est pas élevé du tout, mais il est beaucoup plus élevé que la latence inférieure à la seconde dans le même centre de données.
Parfois, nous rencontrons de graves retards (2000 secondes et plus) avec l'esclave à supprimer, tandis que l'esclave local reste à jour. Lorsque vous regardez l'esclave distant en retard, le thread SQL passe généralement le temps à attendre que le thread IO mette à jour le journal de relais. Le maître affiche "en attente de filet" ou quelque chose du genre en même temps.
Cela signifie donc que c'est un réseau, mais nous avons encore de la bande passante libre au moment où cela se produit.
Ma question est : la latence entre les centres de données peut-elle affecter les performances de la réplication? Le thread io esclave diffuse-t-il simplement les événements jusqu'à ce que le maître arrête de les envoyer, ou met-il en commun le maître d'une manière ou d'une autre entre les événements?