Combattre le retard de réplication MySQL

le 24/09/2008 à 23:03
Combattre le retard de réplication MySQL
En substance, pour combattre le retard de réplication, il est recommandé de réduire la taille des requêtes. C'est à dire, ne pas lancer de modifications importantes qui risquent de prendre beaucoup de temps. Update, delete, insert (sur le maître), ou group by, select (sur l'esclave) : tout ce qui prend trop de temps, va pénaliser la réplication.

Une des raisons à garder en tête est que le maître va exécuter toutes les requêtes de réplications en mode simultané (les utilisateurs lancent des requêtes concurrentes), alors que les esclaves vont les exécuter en mode séquentiel : les requêtes sont passées par le log binaire, et sont mises les unes après les autres. Ainsi, trois updates distincts qui travaillent sur différentes données durant 5 secondes, mettront 5 secondes sur le maître, et en fait 15 secondes sur l'esclave (nonobstant les accélérations possibles lié aux tâches non-liées).

Le 'Query Chopping' ou découpage de requêtes, semble être l'arme à adopter pour ne pas surcharger la réplication. Plus de requêtes, mais moins longtemps. Les partitions seront sûrement une arme aussi.

- Fighting MySQL Replication Lag

A lire également

Le retard de réplication remonte à une origine simple : le maître peut traiter les modifications de données en parallèle, puisque c'est comme cela qu'elles lui sont fournies. L'esclave, lui, doit les exécuter séquentiellement, car elles sont toutes consignées dans le log binaire avant de lui être fournie.

Tant que la réplication ne sera pas capable de dépasser cette limite, le retard de réplication sera une réalité à combattre tous les jours. A commencer par ne pas mettre le machine la plus puissante comme maître, ce qui aura tendance à lui faire prendre de l'avance.

- MySQL Slave Delay Explained And 7 Ways To Battle It

Commentaires

Ecrire

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours