zabij wszystkie zapytania - MySQL


17

Czasami podczas SNAFU muszę biec kill query xxxxxxxdwadzieścia lub trzydzieści razy. Jakieś kill allpolecenie, którego mi brakuje?

Z powodu tego, że nie lubię pisać.


zrestartować serwer?
Derek Downey

@DTest - czy można tego dokonać za pomocą zapytania? Nie mam bezpośredniego dostępu do serwera.
JIStone

To pytanie może się przydać innym programistom i DBA (+1) !!!
RolandoMySQLDBA

Odpowiedzi:


15

Z wiersza poleceń systemu 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

Możesz zmienić opcję grep w nagłówku pętli for, aby zlokalizować określonego użytkownika lub określony ciąg w zapytaniu.

Jeśli masz MySQL 5.1, w którym lista procesów znajduje się w INFORMACJI_SCHEMA, możesz to zrobić, aby wygenerować polecenia KILL QUERY masowo z poziomu klienta mysql:

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

Możesz wykonać klauzule WHERE dla pola INFO, aby wyszukać określone zapytanie, pole TIME dla zapytań długo działających lub pole DB dla określonej bazy danych.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.