Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Quels sont les paramètres de configuration des clés pour optimiser la réplication MySQL pour un trafic élevé


Quels sont les paramètres de configuration des clés pour optimiser la réplication MySQL pour un trafic élevé


Les paramètres de configuration des clés pour optimiser la réplication MySQL pour les environnements de trafic élevé impliquent un réglage minutieux de divers paramètres de réplication et de serveur pour équilibrer les performances, la fiabilité et la cohérence des données.

Utilisez une configuration active / passive:
Dans les scénarios à haut trafic, il est recommandé d'utiliser une architecture de réplication active / passive, où un MySQL Server (Master) principal gère toutes les opérations d'écriture et plusieurs répliques passives (esclaves) gèrent les opérations de lecture. Cela divise efficacement la charge de travail, permettant aux répliques de desservir le trafic en lecture seule pendant que le maître gère écrit. Cette configuration évite les problèmes de complexité et de conflit des configurations actives / actives. Cependant, la réplication asynchrone, commune dans cette configuration, peut introduire un certain retard entre le maître et les répliques, de sorte que la logique d'application doit prendre en compte les exigences de cohérence en lecture après l'écriture.

Mode de réplication:
La réplication MySQL prend en charge les modes de réplication asynchrones et semi-synchrones. La réplication asynchrone est la valeur par défaut et offre des performances élevées mais avec un décalage de réplication potentiel. La réplication semi-synchrone améliore la cohérence des données en faisant attendre le maître jusqu'à au moins une réplique reconnaît la réception d'une transaction avant de procéder. Cela réduit le risque de perte de données dans les situations de basculement mais ajoute la latence. Pour un trafic élevé, les paramètres de délai d'expiration du mode semi-synchrones doivent être ajustés (par défaut 10 secondes) pour assurer des compromis appropriés entre la cohérence et les performances. Parfois, les modes mixtes sont utilisés lorsqu'une réplique critique utilise la semi-synchronisation et d'autres utilisent l'async pour équilibrer la disponibilité et les performances.

Configuration de la journalisation binaire:
Activez la journalisation binaire sur le maître en définissant «log-bin» et attribuez un «serveur-id» unique. Choisissez `binlog_format = row` pour enregistrer les changements de ligne individuels plutôt que des instructions pour la précision et la cohérence, en particulier dans les charges de travail complexes. Configurez judicieusement les politiques de rétention de journaux binaires pour équilibrer la capacité de récupération et les demandes de stockage. Activez également `gtid_mode = on` et` applicce_gtid_consistence = on` pour les identifiants de transaction globaux pour simplifier la gestion et le basculement de la réplication, améliorant l'automatisation.

Topologie de réplication pour la performance:
Pour la réplication de mise à l'échelle dans les scénarios de trafic élevé, une topologie de réplication hiérarchique (également appelée réplication des enchères ou de relais) est recommandée. Le maître se réplique vers un serveur intermédiaire (esclave de relais), qui à son tour se réplique vers d'autres répliques. Cela réduit la charge sur le maître en déléguant le réseau et en réplant le trafic vers des répliques intermédiaires. Cette topologie atténue les goulots d'étranglement du réseau et améliore le débit global de réplication. Cependant, l'activation de `log_slave_updates` sur les serveurs de relais est nécessaire, ce qui porte une surcharge de performances et nécessite une surveillance minutieuse pour empêcher le décalage de réplication en cascade.

Réplication parallèle sur les esclaves:
Activer la réplication parallèle sur les répliques pour améliorer les performances de réplication. MySQL 5.6+ prend en charge l'exécution de SQL d'esclaves multi-thread. Des options configurables comme `slave_parallel_workers` permettent à plusieurs threads SQL de réplication pour appliquer des transactions en parallèle, réduisant le décalage de réplication pour les charges de travail avec des transactions indépendantes. Un réglage minutieux est nécessaire pour définir des comptes de threads optimaux en fonction des caractéristiques du processeur et de la charge de travail sans provoquer une affirmation.

Optimisation du réseau et de la connexion:
Optimiser la configuration du réseau pour le trafic de réplication par:
- Utilisation d'interfaces réseau dédiées pour la réplication.
- Permettre une compression sur les flux de réplication pour réduire l'utilisation de la bande passante.
- Configuration correcte des règles de pare-feu pour permettre le trafic de réplication en toute sécurité.
- Utilisation du cryptage SSL (Activer les options `- SSL`) pour la transmission de données sécurisée, bien qu'elle ajoute une surcharge CPU.
- La regroupement de connexion peut réduire les frais généraux des configurations de connexion fréquentes.

Stockage et optimisation des E / S:
Utilisez un stockage rapide (SSD Preferred) sur le maître pour les écritures de journaux binaires, car la journalisation binaire a un impact direct sur la réplication. Sur les répliques, envisagez des périphériques de stockage séparés pour les journaux de relais afin d'éviter les opérations d'E / S. Optimiser les paramètres du planificateur d'E / S et les paramètres du système de fichiers pour les écritures car les journaux de réplication impliquent des écritures séquentielles avec des FSYNC périodiques. La latence du disque influence directement le retard de réplication et les performances globales.

Paramètres de délai et de réessayer:
Ajustez les paramètres de délai d'expiration de réplication tels que `slave_net_timeout` pour s'assurer que les connexions de réplication ne baissent pas prématurément dans les réseaux à trafic élevé ou à latence élevée. De plus, réglez `Master_retry_count` et paramètres de réchauffement associés pour une meilleure résilience lors des défaillances transitoires du réseau.

Surveillance et alerte:
Implémentez la surveillance du décalage de réplication, du débit de réseau, des E / S de disque et de l'utilisation du processeur. Les outils peuvent alerter les seuils de retard de réplication et d'autres anomalies qui peuvent indiquer la dégradation des performances. La surveillance proactive est essentielle dans les environnements à forte trafic pour maintenir la santé de la réplication.

Stratégies de basculement et de sauvegarde:
Les répliques doivent être régulièrement sauvegardées en plus d'utiliser la réplication pour la haute disponibilité. Procédures de basculement de test fréquemment. Utilisez GTIDS pour simplifier la récupération de basculement en identifiant facilement la dernière transaction exécutée et en garantissant aux répliques rattraper son retard sans perte de données. Dans les topologies de réplication enchaînées, assurez-vous que les esclaves de relais et les répliques de feuilles sont entièrement synchronisés avant le basculement.

Paramètres supplémentaires:
- Désactiver la journalisation et la surveillance inutiles sur les répliques pour réduire les frais généraux.
- Utilisez `sync_binlog = 1` sur maître pour la durabilité, avec la sensibilisation, elle a un impact sur les performances du disque.
- Écoutez le `max_allowed_packet` pour gérer de grandes transactions en réplication sans erreurs.

Résumé des paramètres de configuration des clés:
- sur maître:
- `server-id` (unique)
- `log-bin = mysql-bin`
- `binlog_format = row`
- `gtid_mode = on`
- `Enforce_gtid_consistency = on`
- `sync_binlog = 1` (pour la durabilité)
- Sur les répliques:
- `server-id` (unique différent de maître)
- `relay_log`
- `log_slave_updates` (s'il est utilisé comme relais intermédiaire)
- `slave_parallel_workers` (> 1 pour la réplication parallèle)
- «Slave-Net-Timeout» pour les conditions de réseau
- Mode de réplication:
- Activer la réplication semi-synchrone pour les répliques critiques (`rpl_semi_sync_master_enabled = on`,` rpl_semi_sync_slave_enabled = on`)
- Réseau:
- SSL activé pour la réplication
- Compression activée si le débit est contraint
- Stockage:
- SSD pour les journaux binaires et de relais
- Disques séparés pour les journaux de relais si possible
- Topologie:
- Utilisez une réplication enchaînée ou hiérarchique pour distribuer la charge.

La mise en œuvre de ces paramètres, combinée à une infrastructure capable de gérer un débit de réseau et de disque élevé, garantira que la réplication MySQL fonctionne de manière optimale dans des environnements à haut trafic avec une meilleure gestion du décalage, une tolérance aux pannes et une cohérence des données.