Mysql
 sql >> Base de données >  >> RDS >> Mysql

Enregistrez toutes les requêtes dans mysql

(Remarque :Pour mysql-5.6+, cela ne fonctionnera pas. Il existe une solution qui s'applique à mysql-5.6+ si vous faire défiler vers le bas ou cliquez ici .)

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 tables de log sur mysql base de données
  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;