Surveiller les performances des bases de données MySQL est une tâche quotidienne de presque tous les DBA MySQL. Dans cet article de blog, nous allons essayer de montrer comment surveiller les performances de vos bases de données MySQL - avec ClusterControl.
Que devez-vous surveiller ?
En général, si vous surveillez les performances de MySQL, vous devriez probablement envisager de surveiller les éléments suivants :
- Gestion des requêtes - la surveillance des performances de vos requêtes peut s'avérer être l'un des moyens les plus efficaces d'améliorer les performances de MySQL.
- Détection des valeurs aberrantes des requêtes - les données historiques peuvent nous en dire beaucoup :elles peuvent même être utilisées pour calculer les performances attendues des requêtes en fonction des données historiques, puis comparer les performances actuelles des requêtes aux performances attendues pour détecter les valeurs aberrantes des requêtes.
- Performance du schéma de base de données - ClusterControl peut vous aider à optimiser les performances de vos instances MySQL en fournissant des informations sur les schémas pour vous assurer que vos schémas sont optimisés pour votre charge de travail.
- Équilibrage de charge - les équilibreurs de charge comme ProxySQL, HAProxy ou MaxScale peuvent faire en sorte que votre base de données fonctionne au mieux de ses capacités. Ces équilibreurs de charge peuvent facilement être déployés à l'aide de ClusterControl.
Équilibrage de charge de base de données et gestion des requêtes à l'aide de ClusterControl
ClusterControl prend en charge les équilibreurs de charge suivants :
- HA Proxy
- MariaDB MaxScale
- ProxySQL
- Keepalived (adresse IP virtuelle uniquement)
Notez que ClusterControl doit résider sur un nœud indépendant, séparé de votre cluster de base de données.
En ce qui concerne la gestion des requêtes, ClusterControl vous permet d'absorber les éléments suivants (vous pouvez voir ces choses une fois que vous êtes passé à l'onglet Query Monitor) :
- Vous pouvez afficher les principales requêtes lentes et longues.
- Vous pouvez afficher une liste des requêtes en cours d'exécution.
- Vous pouvez afficher une liste des valeurs aberrantes de la requête.
Cet onglet vous fournit une liste agrégée de toutes vos principales requêtes exécutées sur tous les nœuds de votre cluster de bases de données. ClusterControl obtient les informations de l'une de ces deux manières :
- Les requêtes sont extraites de PERFORMANCE_SCHEMA ou
- Si PERFORMANCE_SCHEMA est désactivé ou indisponible, ClusterControl analysera le contenu du journal des requêtes lentes.
Si le journal des requêtes lentes est utilisé, seules les requêtes qui dépassent le temps de requête long seront répertoriées ici.
Long Query Time collecte les requêtes dont l'exécution prend plus de temps que Long Query Time secondes (par exemple, si le Long Query Time est de 0,1, seules les requêtes dont l'exécution prend plus de 0,1 seconde seront consignées), " requêtes de journalisation n'utilisant pas d'index ? » configure le comportement de ClusterControl en ce qui concerne les requêtes sans index, etc.
Le tableau des principales requêtes est automatiquement actualisé toutes les 30 secondes (la fréquence d'actualisation peut être modifiée). Les colonnes du tableau des requêtes principales contiennent une liste des requêtes échantillonnées, des noms de bases de données, le nombre total d'occurrences de requêtes, le nombre de lignes impliquées dans les opérations, le nombre de tables temporaires créées pour une certaine requête, etc. - la liste des requêtes principales agrégées peut également être trié par occurrence ou heure d'exécution pour afficher les requêtes les plus courantes ou les plus lentes.
ClusterControl vous permet également d'afficher une liste des requêtes en cours d'exécution. Cette page est également rafraîchie automatiquement toutes les 30 secondes et affiche :
- Le serveur MySQL à partir duquel le processus est récupéré.
- L'ID de connexion.
- Le nom de la base de données.
- L'utilisateur MySQL qui a émis la déclaration.
- Le temps d'exécution du thread MySQL en secondes.
- Le nom d'hôte du client émettant la déclaration.
- Le type de commande que le thread exécute.
- L'état du thread (comme expliqué dans la documentation MySQL)
La page des valeurs aberrantes des requêtes affiche les requêtes considérées comme des « valeurs aberrantes ». En d'autres termes, cette page affiche toutes les requêtes qui prennent plus de temps à s'exécuter qu'une requête normale de ce type, plus longue étant définie comme un écart de latence de 2 sigmas + average_query_time. Cette page affiche :
- L'heure exacte à laquelle la requête a été capturée.
- La requête elle-même.
- Le temps d'exécution de la requête SQL.
- Le temps d'exécution moyen de la requête SQL.
- Le temps d'exécution de l'écart type (microsecondes).
- Durée d'exécution maximale de la requête (microsecondes).
- Durée de verrouillage de la requête (microsecondes).
L'onglet de surveillance des requêtes fournit un résumé du traitement des requêtes sur tous les nœuds du grappe.
Résumé
Lorsqu'il s'agit de surveiller les performances de vos bases de données MySQL, ClusterControl peut faire des merveilles. ClusterControl peut simplifier le déploiement des équilibreurs de charge, il peut vous aider à gérer facilement vos requêtes et à surveiller leurs performances, ClusterControl peut également calculer les performances attendues des requêtes en fonction des données historiques.