matar todas las consultas - MySQL


17

A veces, durante un SNAFU, tengo que correr kill query xxxxxxxveinte o treinta veces. ¿Algún tipo de kill allcomando que me falta?

Debido a que no me gusta escribir.


reiniciar el servidor?
Derek Downey

@DTest: ¿se puede hacer eso con una consulta? No tengo acceso directo al servidor.
JIStone

¡Esta es una pregunta que puede ser útil para otros desarrolladores y DBA (+1)!
RolandoMySQLDBA

Respuestas:


15

Desde la línea de comando de 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

Puede cambiar la opción grep en el encabezado del bucle for para localizar un usuario específico o una cadena específica en la consulta.

Si tiene MySQL 5.1 donde la lista de procesos está en INFORMATION_SCHEMA, puede hacer esto para generar los comandos KILL QUERY en masa desde dentro del cliente mysql:

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

Puede hacer cláusulas WHERE en el campo INFO para buscar una consulta específica, el campo TIME en consultas de ejecución prolongada o el campo DB en una base de datos específica.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.