353 votes

Connecter toutes les requêtes mysql

Est il possible pour moi de tourner sur audit logging sur ma base de données mysql ?

Je tiens essentiellement à surveiller toutes les requêtes pour une heure et vider le journal dans un fichier.

271voto

Ram Points 378

En plus de ce que j’ai tombé sur ici, exécutez ce qui suit est le plus simple pour le vidage des requêtes dans un fichier journal sans redémarrer

peut être désactivée avec

264voto

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éez vos tableaux de bord
  CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
  CREATE TABLE `general_log` (
   `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `command_type` varchar(64) NOT NULL,
   `argument` mediumtext NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'
  • Activer la journalisation des Requêtes sur la base de données
SET global general_log = 1;
SET global log_output = 'table';
  • Afficher le journal
select * from mysql.general_log
  • Désactiver la journalisation des Requêtes sur la base de données
SET global general_log = 0;

178voto

Robert Gamble Points 41984

Démarrer mysql avec l'option --log:

mysqld --log=log_file_name

ou placer celui-ci dans votre mon.cnf de fichier:

log = log_file_name

Soit on va enregistrer toutes les requêtes de log_file_name.

Vous pouvez également vous connecter uniquement les requêtes lentes à l'aide de l' --log-slow-queries option au lieu d' --log. Par défaut, les requêtes qui prennent 10 secondes ou plus sont considérés comme lents, vous pouvez modifier ce paramètre long_query_time le nombre de secondes pendant lequel une requête doit prendre à exécuter avant d'être connecté.

167voto

stepler654 Points 184

Haut de la page réponse ne fonctionnera pas dans mysql 5.6. Utilisez-le à la place :

8voto

Marcello Romani Points 443

Pour l'enregistrement, general_log et slow_log ont été introduites dans 5.1.6:

http://dev.mysql.com/doc/refman/5.1/en/log-destinations.html

5.2.1. La sélection de l'interrogation Générale et Slow Query Log Destinations de Sortie

MySQL 5.1.6, MySQL Server fournit un contrôle flexible de la destination de sortie pour le grand journal de la requête et la requête lente journal, si ces journaux sont activés. Les destinations possibles pour les entrées de journal sont les fichiers journaux ou le general_log et slow_log tables dans la base de données mysql base de données

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X