Suivre les requêtes MySQL lentes avec Logs Data Platform
Maintenez votre base de données MySQL à haute vitesse avec Logs Data Platform !
Objectif
MySQL est l'une des options les plus populaires en matière de logiciels de base de données. Il dispose de nombreuses fonctionnalités et peut répondre à des requêtes complexes avec d'excellentes performances. Mais avec le temps, votre base de données s'agrandit, sa complexité augmente, et les performances déclinent naturellement. De nombreuses astuces existent pour améliorer la vitesse de vos requêtes, mais pour y remédier, vous devez d'abord savoir quelles requêtes sont lentes.
Ce guide vous aide à suivre vos requêtes les plus lentes et à les envoyer vers Logs Data Platform pour une analyse plus approfondie.
Prérequis
Vous devez au préalable lire ces trois guides :
- Démarrer avec Logs Data Platform.
- Comment configurer un input Logstash ?
- Utiliser Filebeat avec Logs Data Platform.
En pratique
Configurer les logs de requêtes lentes MySQL
Pour envoyer vos logs vers Logs Data Platform, vous devez d'abord activer les logs de requêtes lentes dans votre configuration MySQL.
Nous vous recommandons de consulter la documentation officielle de MySQL pour votre propre version de MySQL. Voici par exemple une configuration fonctionnelle sur MySQL 5.6 :
Si vous ajoutez ces lignes à votre fichier de configuration MySQL et le redémarrez, MySQL journalisera alors toute requête prenant plus de 0,5 seconde à s'exécuter dans le fichier /var/log/mysql/slow-queries.log.
Voici un exemple des lignes produites par le log de requêtes lentes :
Les logs de requêtes lentes sont des logs multi-lignes qui fournissent les informations suivantes :
- L'heure de création du log.
- L'utilisateur, l'hôte et l'Id du thread associés à la requête.
- Le temps d'exécution de la requête, avec la durée de verrouillage de la table, ainsi que le nombre de lignes envoyées et examinées.
- Le timestamp de la requête elle-même.
- La requête elle-même.
Configurer Filebeat sur votre système
Notre méthode préférée pour envoyer les logs de requêtes lentes MySQL consiste à envoyer les logs directement vers Logs Data Platform à l'aide de Filebeat. Nous couvrons Filebeat en détail dans un autre tutoriel. Voici un fichier de configuration filebeat.yml minimal.
N'oubliez pas de remplacer <X-OVH-TOKEN-VALUE> par la valeur du jeton d'écriture de votre flux de logs.
Activez le support MySQL de filebeat avec la commande suivante :
Cela génère un nouveau fichier de module : /etc/filebeat/modules.d/mysql.yml, veuillez le modifier pour y inclure tous vos chemins de fichiers d'erreur/lents MySQL :
Démarrez Filebeat :
Utilisez :
ou
selon votre distribution.
Essayez d'exécuter quelques requêtes lentes dans votre base de données. Pour cela, vous pouvez utiliser cet exemple de base de données et utiliser des requêtes join et like. Vous pouvez également utiliser la requête MySQL Sleep :
Exploiter vos résultats dans Graylog
Un log entièrement parsé ressemble à ceci :
- Le champ mysql_slowlog_query_time_sec_num est déjà disponible pour une analyse plus approfondie.
- Vous pouvez suivre les champs mysql_slowlog_user et mysql_slowlog_host à l'origine des requêtes les plus lentes.
- Vous disposez du champ mysql_slowlog_rows_examined_int indiquant le nombre de lignes analysées et retournées.
Toutes ces informations peuvent vous aider à analyser les requêtes les plus complexes pour votre base de données. Vous saurez quand faire évoluer votre infrastructure et quand votre base de données est trop volumineuse pour votre matériel, ou quand optimiser vos requêtes. Bien entendu, il est toujours préférable de disposer d'un tableau de bord agréable pour afficher vos propres indicateurs clés de performance. Une façon d'obtenir cette information critique dès qu'elle arrive est d'utiliser la fonctionnalité d'alerte.
Aller plus loin
- Pour bien démarrer : Démarrage rapide
- Documentation : Guides
- Créer un compte : Essayez !
- Hub communautaire : communauté d'utilisateurs