Réplication de la région croisée dans MySQL, une méthode pour copier les données de manière asynchrone à partir d'une base de données primaire dans une région géographique à une ou plusieurs bases de données de répliques dans différentes régions, affecte les performances grâce à divers facteurs liés à la latence du réseau, au retard de réplication, à la distribution de la charge de travail et à l'allocation des ressources.
latence et latence de réplication du réseau
L'impact de performance primaire résulte de l'augmentation de la latence du réseau entre les régions. Étant donné que la réplication de la région croisée repose sur l'envoi des événements de journal binaire contenant des changements de données sur les liaisons de réseau à longue distance, la distance physique peut entraîner un retard de propagation significatif. Cela conduit à une augmentation du décalage de réplication, où les répliques prennent en retard le primaire dans l'application des changements. Le retard de réplication peut affecter la cohérence de la lecture dans les applications qui reposaient sur des données à jour des répliques et peuvent augmenter le temps de basculement dans les scénarios de récupération en cas de catastrophe.
Le retard de réplication se produit en raison de plusieurs causes:
- Le serveur principal n'envoie pas de modifications assez rapidement.
- Le réseau retarde dans le transfert des modifications.
- L'incapacité du serveur de réplique à appliquer les changements rapidement.
Le décalage total observé est dû à la fois au réseau et à la latence de traitement. Les outils de surveillance suivent des mesures comme le décalage du réseau et le décalage des répliques pour diagnostiquer les goulots d'étranglement.
Impact du serveur de réplique et utilisation des ressources
Du côté de la réplique, l'application des modifications de la primaire implique un travail d'E / S et de processeur, ce qui peut avoir un impact sur les performances globales de la réplique, surtout si elle gère également les requêtes de lecture de l'application simultanément. Une charge de réplication élevée peut entraîner des affirmations et une saturation des ressources, ralentissant les temps de réponse de la requête sur la réplique.
L'utilisation de threads de réplication parallèle sur la réplique peut atténuer certains des retards de l'application en appliquant plusieurs transactions simultanément, en améliorant le débit de réplication. De plus, la configuration d'options telles que le rinçage haute performance (ajustant `innodb_flush_log_at_trx_commit` et` paramètres sync_binlog`) peut améliorer l'efficacité de l'écriture et de la réplication de l'application.
Impact sur les performances du serveur primaire
Le serveur principal entraîne également un impact de charge en raison de la réplication. Il doit rédiger toutes les modifications du journal binaire pour les répliques en aval, qui est une surcharge supplémentaire en plus du traitement transactionnel normal. Avec de nombreuses répliques connectées, en particulier la région croisée où le débit et la fiabilité du réseau varient, le primaire peut connaître une consommation accrue de ressources en maintenant les flux de réplication.
Une façon d'atténuer cela est une hiérarchie de réplication, où la primaire se réplique à une seule réplique intermédiaire, qui se transforme ensuite à des répliques supplémentaires, réduisant la charge sur le primaire.
Distribution et évolutivité de la charge de travail
La réplication de la région croisée prend en charge la mise à l'échelle des charges de travail en lecture plus près des utilisateurs dans différentes régions mondiales en fournissant des répliques de lecture près de leur emplacement, améliorant les latences de l'utilisateur final. Cependant, la rédaction de charges de travail converge sur l'instance principale, qui peut devenir un goulot d'étranglement.
De grandes transactions sur le primaire qui mettent à jour de nombreuses lignes peuvent provoquer des pics de données de réplication, ce qui entraîne des rafales de réplication appliquer des travaux sur les répliques et un décalage de réplication. La rupture de grandes transactions en lots plus petits aide à réduire la tension de réplication.
Considérations de schéma et de conception de requête
Les tableaux sans clés primaires ou avec des opérations DDL lourdes peuvent dégrader les performances de réplication ou provoquer des verrous exclusifs, composer des problèmes de latence entre les régions. L'utilisation de la réplication basée sur les lignes, qui nécessite des clés primaires pour l'efficacité, est généralement recommandée.
Les niveaux d'isolement des requêtes sur les répliques affectent également la vitesse d'application de la réplication, avec des niveaux d'isolement inférieurs (par exemple, «Lire engagée») permettant généralement une application plus rapide d'événements de réplication que les niveaux plus élevés qui maintiennent les verrous plus longtemps.
Réseau et considérations de coûts
La réplication de la région croisée implique le transfert de données entre les réseaux de fournisseurs de cloud, qui peuvent entraîner des coûts et des limitations de bande passante. Cela doit être pris en compte dans la conception et peut indirectement limiter la vitesse et la fréquence de réplication.
Résumé des impacts de performance
- Augmentation du retard de réplication en raison de la distance physique et de la latence du réseau.
- Consommation de ressources plus élevée sur le primaire pour l'exploitation binaire et sur les répliques pour appliquer des modifications.
- Dégradation potentielle des performances de la requête sur les répliques si la réplication est à forte intensité de ressources.
- L'équilibrage de la charge via des hiérarchies de réplication peut réduire les goulots d'étranglement.
- Impact des grandes transactions et de la conception du schéma sur l'efficacité de la réplication.
- Compromis avec coût et débit de transfert de données dans les environnements cloud.