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

Comment enregistrer uniquement les requêtes brutes dans MySQL ?

Pour activer la requête de journal complète, ajoutez ce qui suit à votre my.cnf :

log=/var/log/mysqldquery.log

Ce qui précède enregistrera toutes les requêtes dans le fichier journal.

N'oubliez pas de redémarrer le service mysql après avoir apporté des modifications au fichier my.cnf.

Exemple de sortie d'actions via SequelPro (client mac) :

090721 11:06:45      51 Query       ALTER TABLE `test` ADD `name` varchar(10) DEFAULT NULL
                     51 Query       SHOW COLUMNS FROM `test`
                     51 Query       SHOW INDEX FROM `test`
090721 11:06:57      51 Query       SHOW COLUMNS FROM `test`
                     51 Query       UPDATE `test` SET `id`='1', `name`='test' WHERE `id` = '1' AND `name` IS NULL LIMIT 1
                     51 Query       SELECT * FROM `test` LIMIT 0,100
                     51 Query       SELECT COUNT(1) FROM `test`   
090721 11:07:00      51 Query       UPDATE `test` SET `id`='2', `name`='test' WHERE `id` = '2' AND `name` IS NULL LIMIT 1
                     51 Query       SELECT * FROM `test` LIMIT 0,100
                     51 Query       SELECT COUNT(1) FROM `test`

Sur les systèmes basés sur * NIX, vous pouvez utiliser grep pour démarrer

grep 'SELECT\|INSERT\|UPDATE' querylog.log

Ou soyez plus délicat et commencez à faire des choses comme :

grep 'SELECT\|INSERT\|UPDATE' querylog.log | awk '{$1="";$2="";print}'

Cela vous donnerait quelque chose comme ça, pas parfait mais plus proche :

  51 Query UPDATE `test` SET `id`='2', `name`='test' WHERE `id` = '2' AND `name` IS NULL LIMIT 1
  SELECT * FROM `test` LIMIT 0,100
  SELECT COUNT(1) FROM `test`
  51 Query INSERT INTO `test` (`id`,`name`) VALUES ('3','testing')
  SELECT * FROM `test` LIMIT 0,100
  SELECT COUNT(1) FROM `test`