Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Comment puis-je ajouter plus d'esclaves à ma configuration de réplication MySQL sans causer de problèmes de performance


Comment puis-je ajouter plus d'esclaves à ma configuration de réplication MySQL sans causer de problèmes de performance


Pour ajouter plus d'esclaves à une configuration de réplication MySQL sans causer de problèmes de performances, envisagez d'adopter une architecture de réplication multicouche plutôt que de connecter tous les esclaves directement à la source principale. Lorsque de nombreux esclaves se connectent directement à une seule source, il augmente la charge sur cette source en raison de chaque esclave qui conserve une connexion et la source ayant besoin d'envoyer les données de journal binaire à chacune, ce qui peut devenir un réseau et un goulot de goulot de performance. Au lieu de cela, configurez la réplication hiérarchiquement en faisant la réplication de la source principale à une ou quelques répliques intermédiaires, qui se répliquent ensuite au reste des esclaves. Cette méthode réduit le nombre de connexions directes au primaire et distribue la charge de réplication plus uniformément entre les serveurs.

Les répliques intermédiaires doivent être configurées pour enregistrer elles-mêmes les mises à jour binaires (avec `log_slave_updates '), afin qu'ils puissent servir de sources de répliques en aval. Cette configuration crée efficacement une chaîne ou une arbre de réplication, ce qui peut améliorer considérablement les performances et l'évolutivité.

De plus, le mode de réplication joue un rôle important dans les performances et la cohérence des données. MySQL prend en charge les modes de réplication asynchrones et semi-synchrones. La réplication asynchrone permet au serveur principal de poursuivre les transactions sans attendre les esclaves, améliorant le débit d'écriture mais éventuellement provoquant un décalage de réplication. La réplication semi-synchrone garantit qu'au moins un esclave reconnaît la transaction avant que le primaire ne le s'engage, améliorant la cohérence des données à un légèrement coût de latence. Ajustez ces paramètres en fonction des exigences de cohérence et de latence de l'application.

Pour optimiser davantage, réglez les fils de réplication sur les esclaves. À partir de MySQL 5.6, la réplication multi-thread est prise en charge, permettant à plusieurs threads SQL d'appliquer des événements de journal de relais en parallèle. Cela peut réduire le décalage de réplication, en particulier lorsque la charge de travail implique de nombreuses bases de données ou tables différentes qui peuvent être traitées indépendamment par plusieurs threads.

La configuration des E / S de disque est également cruciale: placez les journaux de relais et les fichiers de base de données sur des lecteurs physiques séparés pour minimiser les conduites d'E / S. Cela peut aider les esclaves à suivre plus efficacement le flux de réplication.

Dans de grands environnements, envisagez de diviser la responsabilité en déléguant différentes bases de données ou tables vers différentes répliques pour équilibrer la charge et empêcher les affirmations sur toute réplique unique.

Lors de l'ajout d'un nouvel esclave, il est important de le fournir correctement:

- Attribuez un `server_id` unique pour éviter les conflits.
- Initialisez l'esclave avec un instantané ou une sauvegarde des données du primaire pour s'assurer qu'elle commence à se répliquer à partir d'un point cohérent.
- Configurez l'esclave avec les détails de la connexion de la source et les paramètres de réplication.
- Utilisez des options comme `--Skip-Slave-Start` pendant l'initialisation pour empêcher la réplication de démarrer prématurément.
- Démarrer la réplication une fois la configuration terminée et surveiller tout décalage ou erreur.

La sauvegarde et la restauration des données sur les nouveaux esclaves peuvent être effectuées à l'aide d'outils tels que «MySQLDUmp», Percona Xtrabackup ou MySQL Clone Plugin, en fonction de la taille et de la tolérance aux temps d'arrêt. L'utilitaire XTRABACKUP peut créer des sauvegardes à chaud sans verrouiller la base de données source, minimisant les temps d'arrêt.

Pour la synchronisation et l'équilibrage initial de la charge, des outils comme PT-Table-Sync peuvent aider à garantir la cohérence des données entre le maître et l'esclave après la restauration.

Pour résumer, les stratégies clés pour ajouter plus d'esclaves sans dégradation des performances comprennent:

- Utilisez une topologie de réplication hiérarchique avec des répliques intermédiaires.
- Activer `log_slave_updates` sur les répliques intermédiaires.
- Choisissez entre les modes de réplication asynchrones et semi-synchrones basés sur les besoins de cohérence et de latence.
- Emploie une réplication multithread sur les esclaves.
- Optimiser les E / S en séparant physiquement les journaux de relais et les fichiers de données.
- Distribuez la charge de travail de réplication par la base de données ou la ségrégation du tableau.
- Provision soigneusement de nouveaux esclaves avec des ID de serveur uniques et des instantanés cohérents.
- Utilisez des outils de sauvegarde et de synchronisation appropriés pour la configuration initiale.
- Surveiller en continu le retard de réplication et les performances.

Cette approche aide à maintenir une architecture de réplication évolutive et performante à mesure que le nombre d'esclaves augmente, en évitant les goulots d'étranglement sur la source primaire et en assurant un débit de réplication efficace.

Des procédures pratiques détaillées pour la mise en place et la gestion de cela peuvent être trouvées dans la documentation officielle MySQL et des fournisseurs de services MySQL expérimentés qui se spécialisent dans les architectures de haute disponibilité et de réplication.