모든 쿼리를 죽이십시오-MySQL


17

때로는 SNAFU 동안 나는 kill query xxxxxxx스물 또는 서른 번 실행해야합니다 . kill all내가 누락 된 명령 은 무엇입니까?

내가 타이핑하는 것을 좋아하지 않기 때문에.


서버를 다시 시작 하시겠습니까?
데릭 다우니

@DTest-쿼리로 수행 할 수 있습니까? 서버에 직접 액세스 할 수 없습니다.
JIStone

이것은 다른 개발자와 DBA (+1)에게 유용한 질문입니다!
RolandoMySQLDBA 2016 년

답변:


15

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

for 루프의 헤더에서 grep 옵션을 변경하여 쿼리에서 특정 사용자 또는 특정 문자열을 찾을 수 있습니다.

프로세스 목록이 INFORMATION_SCHEMA에있는 MySQL 5.1을 사용하는 경우 mysql 클라이언트 내에서 KILL QUERY 명령을 대량으로 생성 할 수 있습니다.

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

INFO 필드에 대해 WHERE 절을 수행하여 특정 쿼리, 장시간 실행되는 쿼리에 대한 TIME 필드 또는 특정 데이터베이스에 대한 DB 필드를 찾을 수 있습니다.


5
mysql> select concat('KILL ',id,';') from information_schema.processlist where user='root' into outfile '/tmp/a.txt';
Query OK, 2 rows affected (0.00 sec)

mysql> source /tmp/a.txt;
Query OK, 0 rows affected (0.00 sec)

http://www.mysqlperformanceblog.com/2009/05/21/mass-killing-of-mysql-connections/


Linux 또는 Windows에 관계없이 mysql 클라이언트의 범위 내에서 수행 할 수 있기 때문에 실제로이 방법을 좋아합니다. +1 !!!
RolandoMySQLDBA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.