Respostas:
Para aqueles abençoados com MySQL> = 5.1.12, você pode controlar esta opção globalmente em tempo de execução:
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
mysql.general_log
Se você preferir gerar um arquivo em vez de uma tabela:
SET GLOBAL log_output = "FILE";
o padrão .SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
Prefiro esse método à edição de arquivos .cnf porque:
my.cnf
arquivo e ativando permanentemente o log/var/log /var/data/log
/opt /home/mysql_savior/var
Para obter mais informações, consulte o Manual de Referência do MySQL 5.1 - Variáveis do sistema do servidor - general_log
Você pode ativar um log de consulta geral para esse tipo de diagnóstico. Geralmente, você não registra todas as consultas SELECT em um servidor de produção, mas é um matador de desempenho.
Edite sua configuração do MySQL, por exemplo, /etc/mysql/my.cnf - procure ou adicione uma linha como esta
[mysqld]
log = /var/log/mysql/mysql.log
Reinicie o mysql para captar essa alteração, agora você pode
tail -f /var/log/mysql/mysql.log
Olá presto, você pode assistir as consultas quando elas entram.
Você pode fazer a coisa certa para monitorar os logs de consultas do mysql.
Abra o arquivo de configuração mysql my.cnf
sudo nano /etc/mysql/my.cnf
Pesquise as seguintes linhas em um [mysqld]
cabeçalho e remova o comentário dessas linhas para ativar o registro
general_log_file = /var/log/mysql/mysql.log
general_log = 1
Reinicie o servidor mysql para refletir as alterações
sudo service mysql start
Monitore o log do servidor mysql com o seguinte comando no terminal
tail -f /var/log/mysql/mysql.log
1) Se o registro geral do mysql estiver ativado, podemos verificar as consultas no arquivo ou tabela de log com base no que mencionamos na configuração. Verifique o que está ativado com o seguinte comando
mysql> show variables like 'general_log%';
mysql> show variables like 'log_output%';
Se precisarmos do histórico de consultas na tabela,
Execute SET GLOBAL log_output = 'TABLE';
Execute SET GLOBAL general_log = 'ON';
Dê uma olhada na tabela mysql.general_log
Se você preferir gerar um arquivo:
SET GLOBAL log_output = "FILE"; which is set by default.
SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
2) Também podemos verificar as consultas no arquivo .mysql_history cat ~ / .mysql_history
Talvez você possa descobrir isso consultando o log de consultas .
Se o mysql binlog estiver ativado, você poderá verificar os comandos executados pelo usuário executando o seguinte comando no console linux, navegando para o diretório mysql binlog
mysqlbinlog binlog.000001 > /tmp/statements.sql
possibilitando
[mysqld]
log = /var/log/mysql/mysql.log
ou log geral afetará o desempenho do mysql
Se você não quiser alterar sua configuração do MySQL, poderá usar um profiler SQL como "Neor Profile SQL" http://www.profilesql.com .
Depois de ler a resposta de Paul, continuei procurando mais informações em https://dev.mysql.com/doc/refman/5.7/en/query-log.html
Encontrei um código realmente útil por uma pessoa. Aqui está o resumo do contexto.
(Nota: O código a seguir não é meu)
Este script é um exemplo para manter a tabela limpa, o que ajudará você a reduzir o tamanho da tabela. Como depois de um dia, haverá cerca de 180 mil consultas de log. (em um arquivo, seriam 30 MB por dia)
Você precisa adicionar uma coluna adicional (event_unix) e, em seguida, pode usar esse script para manter o log limpo ... ele atualizará o registro de data e hora em um registro de data e hora do Unix, excluirá os logs com mais de 1 dia e, em seguida, atualizar o event_time no registro de data e hora do event_unix ... parece um pouco confuso, mas está funcionando muito bem.
Comandos para a nova coluna:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
ALTER TABLE `general_log_temp`
ADD COLUMN `event_unix` int(10) NOT NULL AFTER `event_time`;
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
Script de limpeza:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
UPDATE general_log_temp SET event_unix = UNIX_TIMESTAMP(event_time);
DELETE FROM `general_log_temp` WHERE `event_unix` < UNIX_TIMESTAMP(NOW()) - 86400;
UPDATE general_log_temp SET event_time = FROM_UNIXTIME(event_unix);
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
O crédito é para Sebastian Kaiser (escritor original do código).
Espero que alguém ache útil como eu.
Você pode ver o seguinte no linux
cd /root
ls -al
vi .mysql_history
Pode ajudar