Existe-t-il une requête / un moyen d'afficher les dernières requêtes exécutées sur TOUS les serveurs?
471
Pour ceux bénis avec MySQL> = 5.1.12, vous pouvez contrôler cette option globalement au moment de l'exécution:
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
mysql.general_log
Si vous préférez exporter vers un fichier au lieu d'une table:
SET GLOBAL log_output = "FILE";
la valeur par défaut .SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
Je préfère cette méthode à l'édition de fichiers .cnf car:
my.cnf
fichier et n'activez pas de façon permanente la journalisation/var/log /var/data/log
/opt /home/mysql_savior/var
Pour plus d'informations, consultez le manuel de référence MySQL 5.1 - Variables système du serveur - general_log
Vous pouvez activer un journal de requête général pour ce type de diagnostic. En général, cependant, vous ne consignez pas toutes les requêtes SELECT sur un serveur de production, c'est un tueur de performances.
Modifiez votre configuration MySQL, par exemple /etc/mysql/my.cnf - recherchez ou ajoutez une ligne comme celle-ci
Redémarrez mysql pour reprendre ce changement, maintenant vous pouvez
Hé hop, vous pouvez regarder les requêtes au fur et à mesure qu'elles arrivent.
la source
Vous pouvez faire la chose fluide pour surveiller les journaux de requêtes mysql.
Ouvrez le fichier de configuration mysql my.cnf
Recherchez les lignes suivantes sous un en-
[mysqld]
tête et décommentez ces lignes pour activer le journalRedémarrez votre serveur mysql pour refléter les changements
Surveillez le journal du serveur mysql avec la commande suivante dans le terminal
la source
la source
1) Si la journalisation mysql générale est activée, nous pouvons vérifier les requêtes dans le fichier journal ou la table en fonction de ce que nous avons mentionné dans la configuration. Vérifiez ce qui est activé avec la commande suivante
Si nous avons besoin de l'historique des requêtes dans le tableau,
Jetez un œil à la table mysql.general_log
Si vous préférez exporter vers un fichier:
2) On peut aussi vérifier les requêtes dans le fichier .mysql_history cat ~ / .mysql_history
la source
Vous pouvez peut-être le découvrir en consultant le journal des requêtes .
la source
Si mysql binlog est activé, vous pouvez vérifier les commandes exécutées par l'utilisateur en exécutant la commande suivante dans la console linux en parcourant le répertoire mysql binlog
habilitant
ou le journal général aura un effet sur les performances de mysql
la source
Si vous n'avez pas envie de changer votre configuration MySQL, vous pouvez utiliser un profileur SQL comme "Neor Profile SQL" http://www.profilesql.com .
la source
Après avoir lu la réponse de Paul, j'ai continué à creuser pour plus d'informations sur https://dev.mysql.com/doc/refman/5.7/en/query-log.html
J'ai trouvé un code vraiment utile par une personne. Voici le résumé du contexte.
(Remarque: le code suivant n'est pas le mien)
Ce script est un exemple pour garder la table propre, ce qui vous aidera à réduire la taille de votre table. Comme après une journée, il y aura environ 180 000 requêtes de journal. (dans un fichier, ce serait 30 Mo par jour)
Vous devez ajouter une colonne supplémentaire (event_unix), puis vous pouvez utiliser ce script pour garder le journal propre ... il mettra à jour l'horodatage dans un horodatage Unix, supprimera les journaux antérieurs à 1 jour, puis mettra à jour l'événement_heure dans l'horodatage from event_unix ... semble un peu déroutant, mais ça marche très bien.
Commandes pour la nouvelle colonne:
Script de nettoyage:
Le mérite revient à Sebastian Kaiser (auteur original du code).
J'espère que quelqu'un le trouvera utile comme moi.
la source
Vous pouvez regarder ce qui suit dans linux
vi .mysql_history
Cela peut aiderla source