Existe alguma consulta / maneira de mostrar as últimas consultas executadas em TODOS os servidores?
471
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
Reinicie o mysql para captar essa alteração, agora você pode
Olá presto, você pode assistir as consultas quando elas entram.
fonte
Você pode fazer a coisa certa para monitorar os logs de consultas do mysql.
Abra o arquivo de configuração mysql my.cnf
Pesquise as seguintes linhas em um
[mysqld]
cabeçalho e remova o comentário dessas linhas para ativar o registroReinicie o servidor mysql para refletir as alterações
Monitore o log do servidor mysql com o seguinte comando no terminal
fonte
fonte
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
Se precisarmos do histórico de consultas na tabela,
Dê uma olhada na tabela mysql.general_log
Se você preferir gerar um arquivo:
2) Também podemos verificar as consultas no arquivo .mysql_history cat ~ / .mysql_history
fonte
Talvez você possa descobrir isso consultando o log de consultas .
fonte
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
possibilitando
ou log geral afetará o desempenho do mysql
fonte
Se você não quiser alterar sua configuração do MySQL, poderá usar um profiler SQL como "Neor Profile SQL" http://www.profilesql.com .
fonte
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:
Script de limpeza:
O crédito é para Sebastian Kaiser (escritor original do código).
Espero que alguém ache útil como eu.
fonte
Você pode ver o seguinte no linux
vi .mysql_history
Pode ajudarfonte