Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como faço para registrar apenas as consultas brutas no MySQL?


Para habilitar o Log Query completo, adicione o seguinte ao seu my.cnf:
log=/var/log/mysqldquery.log

O acima registrará todas as consultas no arquivo de log.

Não se esqueça de reiniciar o serviço mysql depois de fazer alterações no arquivo my.cnf.

Exemplo de saída de ações via SequelPro (cliente 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`

Em sistemas baseados em *NIX, você pode usar grep para iniciar
grep 'SELECT\|INSERT\|UPDATE' querylog.log

Ou fique mais complicado e comece a fazer coisas como:
grep 'SELECT\|INSERT\|UPDATE' querylog.log | awk '{$1="";$2="";print}'

Isso lhe daria algo assim, não perfeito, mas mais próximo:
  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`