Comment faire pour activer MySQL Query Log?
Comment puis-je activer la fonction MySQL qui enregistre chaque instruction de requête SQL de clients et le temps que l'instruction de la requête a soumis?
Puis-je le faire dans phpmyadmin ou NaviCat?
Comment dois-je analyser le journal?
Vous devez vous connecter pour publier un commentaire.
D'abord, Rappelez-vous que ce fichier peut devenir très volumineux sur un serveur occupé.
Pour mysql < 5.1.29:
Pour activer le journal de la requête, le mettre dans
/etc/my.cnf
dans le[mysqld]
sectionAussi, pour lui permettre de console MySQL
Voir http://dev.mysql.com/doc/refman/5.1/en/query-log.html
Pour mysql 5.1.29+
Avec mysql 5.1.29+ , le
log
option est obsolète. Pour spécifier le fichier de log et activer la journalisation, l'utiliser dans mon.cnf dans le[mysqld]
section:Sinon, pour activer la journalisation de console MySQL (devez également spécifier l'emplacement du fichier journal en quelque sorte, ou trouver l'emplacement par défaut):
Également noter qu'il existe d'autres options pour enregistrer uniquement les requêtes lentes, ou ceux qui n'utilisent pas d'index.
SET global general_log_file='c:/Temp/mysql.log';
SET global general_log = on;
SET global log_output = 'file';
Prendre un coup d'oeil sur cette réponse à une autre question connexe. Il montre comment activer, de désactiver et de voir les logs sur les serveurs en direct sans avoir à redémarrer.
Journal de toutes les requêtes mysql
Voici un résumé:
Si vous ne voulez pas ou ne pouvez pas redémarrer le serveur MySQL, vous pouvez procéder comme ceci sur votre serveur en cours d'exécution:
Créer vos tableaux de bord (voir réponse)
Activer la journalisation des Requêtes sur la base de données
(Notez que la chaîne "table" devrait être mis littéralement et ne pas le remplacer par un nom de table. Grâce Nicolas Pickering)
J'utilise cette méthode pour l'enregistrement quand je veux optimiser rapidement les différentes chargement de la page.
C'est une petite astuce...
Se connecter à une TABLE de
Vous pouvez ensuite sélectionner à partir de mon
mysql.general_log
table pour récupérer des requêtes récentes.Je peux faire quelque chose de similaire à
tail -f
sur la base de données mysql.journal, mais avec plus de raffinements...Cela rend plus facile de voir mes requêtes que je veux essayer de le réduire. J'utilise 8 secondes d'intervalle seulement récupérer les requêtes exécutées dans les 8 dernières secondes.
Ce qui était déjà dans un commentaire, mais il mérite sa propre réponse:
Sans avoir à éditer les fichiers de configuration: dans mysql en tant que root, ne
N'oubliez pas de l'éteindre par la suite.
/tmp/
, il peut être la fin de quelque part comme/tmp/systemd-private-...-mariadb.service-.../tmp/
Vous pouvez activer ou désactiver le grand journal de la requête (qui enregistre toutes les requêtes) avec
Je voulais aussi activer MySQL fichier journal pour voir les requêtes et j'ai résolu ce problème avec les instructions ci-dessous
/etc/mysql/mysql.conf.d
et activer les lignes ci-dessous
/etc/init.d/mysql restart
/var/log/mysql/
et vérifiez les journauxIl y a un bug de MySQL 5.6 version.
Même mysqld montrer que :
Vraiment paramètres sont en lecture dans l'ordre suivant :
Vérifier le fichier: "C:\ProgramData\MySQL\MySQL Server 5.6\mon.ini"
Espère que ça aidera quelqu'un.
Sur Windows, vous pouvez simplement aller à
Insérer cette ligne dans mon.ini
La mon.ini fichier ressemble enfin à ce
pour mysql>=5.5 uniquement pour les requêtes lentes (1 seconde et plus)
mon.cfg
Pour activer le journal de la requête dans la Machine MAC:
Ouvrez le fichier suivant:
Ensemble le journal de requête de l'url sous "mysqld" de la section comme suit:
Quelques de la machine ne sont pas de la journalisation des requêtes correctement, de Sorte que les cas vous pouvez l'activer à partir de la console MySQL
Pas exactement une réponse à la question parce que la question a déjà de grandes réponses. C'est un côté de l'info. Permettant general_log vraiment mettre une dent sur MySQL performance. J'ai quitté
general_log =1
accidentellement sur un serveur de production et passé des heures à trouver la raison de la performance n'est pas comparable à une semblable installation sur d'autres serveurs. Puis j'ai trouvé ce qui explique l'impact de l'activation du journal général. http://www.fromdual.com/general_query_log_vs_mysql_performance.Essentiel de l'histoire, ne pas mettre
general_log=1
dans le.cnf
fichier. Au lieu d'utiliserset global general_log =1
pour une courte durée juste pour se connecter assez pour savoir ce que vous essayez de trouver, puis de l'éteindre.Dans phpMyAdmin 4.0, vous allez à l'État > Moniteur. De là, vous pouvez activer le slow query log et journal général, voir un moniteur, sélectionnez une partie du graphique, voir les requêtes et de les analyser.
J'ai dû supprimer et recréer le journal général à un point. Pendant la récréation, les jeux de caractères suis foiré et j'ai fini par avoir cette erreur dans les logs:
[ERROR] Incorrect definition of table mysql.general_log: expected the type of column 'user_host' at position 1 to have character set 'utf8' but found character set 'latin1'
Donc, si la réponse standard de "assurez-vous que la journalisation est sur" ne fonctionne pas pour vous, assurez-vous que votre champs ont le droit de jeu de caractères.