Nous essayons de faire un débogage des performances du serveur et je voudrais capturer un instantané des requêtes en cours d'exécution sur notre serveur MySQL sur une période de quelques minutes.
Je connais MySQL SHOW FULL PROCESSLIST
, mais j'aimerais pouvoir l'exécuter via la ligne de commande afin de pouvoir le vider dans un fichier et le post-traiter.
Existe-t-il un moyen de générer cette requête dans un fichier et de l'exécuter toutes les secondes environ?
Existe-t-il un meilleur moyen de capturer toutes les requêtes en cours d'exécution?
Notez que je ne m'intéresse pas uniquement aux requêtes lentes (je connais bien le journal des requêtes lentes).
echo show full processlist | mysql
ou mieux SELECT info FROM information_schema.processlist WHERE Command="Query" AND User!="root"
dans une boucle dans bash. Ajoutez quelques lignes et vous obtiendrez la même fonctionnalité de requête que innotop
ou pt-kill