matar todas as consultas - MySQL


17

Às vezes, durante um SNAFU, tenho que correr kill query xxxxxxxvinte ou trinta vezes. kill allFalta algum tipo de comando?

Por conta de como eu não gosto de digitar.


reiniciar o servidor?
Derek Downey #

@DTest - isso pode ser feito com uma consulta? Não tenho acesso direto ao servidor.
JIStone

Esta é uma pergunta que pode ser útil para outros desenvolvedores e DBAs (+1) !!!
RolandoMySQLDBA

Respostas:


15

Na linha de comando do Linux

for PROC_TO_KILL in `mysql -h... -u... -p... -A --skip-column-names -e"SHOW PROCESSLIST" | grep -v "system user" | awk '{print $1}'` ; do mysql -h... -u... -p... -A --skip-column-names -e"KILL QUERY ${PROC_TO_KILL}" ; done

Você pode alterar a opção grep no cabeçalho do loop for para localizar um usuário específico ou uma sequência específica na consulta.

Se você possui o MySQL 5.1 onde a lista de processos está no arquivo Information_SCHEMA, você pode fazer isso para gerar os comandos KILL QUERY em massa a partir do cliente mysql:

SELECT GROUP_CONCAT(CONCAT('KILL QUERY ',id,';') SEPARATOR ' ') KillQuery
FROM information_schema.processlist WHERE user<>'system user'\G

Você pode fazer cláusulas WHERE no campo INFO para procurar uma consulta específica, o campo TIME em consultas de longa execução ou o campo DB em um banco de dados específico.


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.