ativar log de consulta para banco de dados único


8

Estou tendo muitos esquemas de banco de dados no servidor mysql 5.6, agora o problema aqui é que eu quero capturar as consultas para apenas um esquema.

Não consigo ativar o log de consultas para todo o servidor, pois um dos meus esquemas está altamente carregado e afetará o servidor.

É de qualquer maneira, qualquer ferramenta através da qual eu só poderia registrar as consultas por esquema único.

Encontrei um gráfico de benchmarking que mostra o impacto nas transações / segundo quando o log de consultas está ativado.

insira a descrição da imagem aqui insira a descrição da imagem aqui


Você pode usar o log de consultas lentas? E então analise esse log com pt-query-digest? Se não, você pode tentar tcpdump saída analisada por pt-query-digerir
jerichorivera

Respostas:


1

Pergunta interessante e um +1. Fiquei interessado por isso, porque posso ver vários casos de uso para essa funcionalidade.

Infelizmente, para o seu caso em que você não pode ativar o log geral, existe apenas uma solução alternativa bastante inadequada.

Isso é para usar a variável SQL_LOG_OFF para desativar o log para uma determinada conexão. Uma solução ideal seria ter uma variável "SQL_LOG_ON" como se pode fazer no Oracle (equivalente) - talvez você possa tentar desativar o logoff para todas as conexões, exceto as de interesse?

Além disso, e lamentavelmente, isso requer o SUPERprivilégio. Novamente, isso pode não ser (mesmo que provavelmente não seja) no seu caso.

Dependendo da gravidade do seu problema, do horário de trabalho e da carga do servidor em determinados horários, você poderá encontrar um uso para o resumo de consulta de consulta da Percona, que pode ajudar na análise de log. Pequeno conforto, mas, como de costume, o PostgreSQL está nas ruas à frente do MySQL ( 1 , 2 ).

Se você gostaria de registrar uma solicitação de recurso, ficaria feliz em acompanhar um "eu também" se você postar o link aqui.


1

Se você está tão perto de cair que não pode ativar o log geral em FILE, você tem problemas piores; eles precisam de conserto.

Eu suspeito, sem nenhum conhecimento real, que o slowlog teria um impacto semelhante, especialmente com long_query_time = 0.

5.7 possui um recurso "reescrita de consulta". Algum truque pode ser usado lá. (Mas, novamente, há algumas despesas gerais, que devem ser comparadas.)

Quanto tempo você deseja capturar as consultas? Você está apenas procurando a fonte de uma ação impertinente? Ou você está tentando coletar consultas para criar uma referência realista para essa tabela? Ou alguma outra coisa?

Você tem a replicação ativada? Você está interessado em leituras? Ou escreve? Ou ambos?

Quantos threads estão ativos simultaneamente? A referência que você mostrou indicou que, para 1, o log possui uma sobrecarga baixa. É o bloqueio da tabela no MyISAM ou CSV que está matando o processamento por alta simultaneidade.

Seu segundo gráfico mostra que os clientes realmente devem estar restritos a cerca de 5 a 8 conexões simultâneas - caso contrário, a taxa de transferência realmente diminui! O que eram max_connectionse Max_used_connectionspara esse gráfico?


Olá, eu quero capturar as consultas por cerca de 2 dias e esses gráficos não estão relacionados aos meus testes comparativos ... Eu os colei apenas para fins de conhecimento.O aplicativo para o qual eu quero as consultas é um consumidor de poucos recursos. O Tcpdump não fornecerá as estatísticas de tempo.
Suyash Jain 11/07/16
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.